]> git.pld-linux.org Git - packages/geoclue.git/blame - geoclue-gpsd.patch
- unconditional noarch subpackages
[packages/geoclue.git] / geoclue-gpsd.patch
CommitLineData
dbb8bacc
JB
1--- geoclue-0.12.99/providers/gpsd/geoclue-gpsd.c.orig 2012-07-31 18:47:05.000000000 +0200
2+++ geoclue-0.12.99/providers/gpsd/geoclue-gpsd.c 2013-08-30 16:49:28.898513583 +0200
3@@ -33,6 +33,7 @@
4
5 #include <math.h>
6 #include <gps.h>
7+#include <stdlib.h>
8 #include <string.h>
9
10 #include <geoclue/geoclue-error.h>
11@@ -40,7 +41,6 @@
12 #include <geoclue/gc-iface-position.h>
13 #include <geoclue/gc-iface-velocity.h>
14
15-typedef struct gps_data_t gps_data;
16 typedef struct gps_fix_t gps_fix;
17
18 /* only listing used tags */
19@@ -59,7 +59,7 @@
20 char *host;
21 char *port;
22
23- gps_data *gpsdata;
24+ struct gps_data_t *gpsdata;
25
26 gps_fix *last_fix;
27
28@@ -397,12 +397,13 @@
29 static gboolean
30 geoclue_gpsd_start_gpsd (GeoclueGpsd *self)
31 {
32- self->gpsdata = gps_open (self->host, self->port);
33- if (self->gpsdata) {
34- gps_stream(self->gpsdata, WATCH_ENABLE | WATCH_NMEA | POLL_NONBLOCK, NULL);
35- gps_set_raw_hook (self->gpsdata, gpsd_raw_hook);
36+ struct gps_data_t *gd = calloc (1, sizeof(struct gps_data_t));
37+ if (gd && (gps_open (self->host, self->port, gd) >= 0)) {
38+ self->gpsdata = gd;
39+ gps_stream(self->gpsdata, WATCH_ENABLE | WATCH_NMEA | WATCH_RAW, NULL);
40 return TRUE;
41 } else {
42+ free (gd);
43 g_warning ("gps_open() failed, is gpsd running (host=%s,port=%s)?", self->host, self->port);
44 return FALSE;
45 }
46@@ -413,10 +414,13 @@
47 {
48 GeoclueGpsd *self = (GeoclueGpsd*)data;
49 if (self->gpsdata) {
50- if (gps_poll(self->gpsdata) < 0) {
51+ if (gps_read(self->gpsdata) < 0) {
52 geoclue_gpsd_set_status (self, GEOCLUE_STATUS_ERROR);
53 geoclue_gpsd_stop_gpsd(self);
54 return FALSE;
55+ } else if(self->gpsdata->set) {
56+ gpsd_raw_hook(self->gpsdata, NULL, 0);
57+ self->gpsdata->set = 0;
58 }
59 }
60 return TRUE;
f2294add
JB
61--- geoclue-0.12.99/providers/gpsd/geoclue-gpsd.c.orig 2019-10-04 21:09:50.492270776 +0200
62+++ geoclue-0.12.99/providers/gpsd/geoclue-gpsd.c 2019-10-05 15:21:29.244100259 +0200
63@@ -43,15 +43,6 @@
64
65 typedef struct gps_fix_t gps_fix;
66
67-/* only listing used tags */
68-typedef enum {
69- NMEA_NONE,
70- NMEA_GSA,
71- NMEA_GGA,
72- NMEA_GSV,
73- NMEA_RMC
74-} NmeaTag;
75-
76
77 typedef struct {
78 GcProvider parent;
79@@ -229,7 +220,7 @@
80 }
81
82 static void
83-geoclue_gpsd_update_position (GeoclueGpsd *gpsd, NmeaTag nmea_tag)
84+geoclue_gpsd_update_position (GeoclueGpsd *gpsd)
85 {
86 gps_fix *fix = &gpsd->gpsdata->fix;
87 gps_fix *last_fix = gpsd->last_fix;
88@@ -280,7 +271,7 @@
89 }
90
91 static void
92-geoclue_gpsd_update_velocity (GeoclueGpsd *gpsd, NmeaTag nmea_tag)
93+geoclue_gpsd_update_velocity (GeoclueGpsd *gpsd)
94 {
95 gps_fix *fix = &gpsd->gpsdata->fix;
96 gps_fix *last_fix = gpsd->last_fix;
97@@ -293,8 +284,7 @@
98 * couldn't think of an smart way to handle this, I don't think there is one
99 */
100
101- if (((gpsd->gpsdata->set & TRACK_SET) || (gpsd->gpsdata->set & SPEED_SET)) &&
102- nmea_tag == NMEA_RMC) {
103+ if (((gpsd->gpsdata->set & TRACK_SET) || (gpsd->gpsdata->set & SPEED_SET))) {
104
105 gpsd->gpsdata->set &= ~(TRACK_SET | SPEED_SET);
106
107@@ -308,10 +298,7 @@
108 last_fix->track = fix->track;
109 last_fix->speed = fix->speed;
110 }
111- } else if ((gpsd->gpsdata->set & CLIMB_SET) &&
112- (nmea_tag == NMEA_GGA ||
113- nmea_tag == NMEA_GSA ||
114- nmea_tag == NMEA_GSV)) {
115+ } else if ((gpsd->gpsdata->set & CLIMB_SET)) {
116
117 gpsd->gpsdata->set &= ~(CLIMB_SET);
118
119@@ -342,7 +329,7 @@
120 }
121
122 static void
123-geoclue_gpsd_update_status (GeoclueGpsd *gpsd, NmeaTag nmea_tag)
124+geoclue_gpsd_update_status (GeoclueGpsd *gpsd)
125 {
126 GeoclueStatus status;
127
128@@ -367,22 +354,9 @@
129 static void
130 gpsd_raw_hook (struct gps_data_t *gpsdata, char *message, size_t len)
131 {
132- char *tag_str = gpsd->gpsdata->tag;
133- NmeaTag nmea_tag = NMEA_NONE;
134-
135- if (tag_str[0] == 'G' && tag_str[1] == 'S' && tag_str[2] == 'A') {
136- nmea_tag = NMEA_GSA;
137- } else if (tag_str[0] == 'G' && tag_str[1] == 'G' && tag_str[2] == 'A') {
138- nmea_tag = NMEA_GGA;
139- } else if (tag_str[0] == 'G' && tag_str[1] == 'S' && tag_str[2] == 'V') {
140- nmea_tag = NMEA_GSV;
141- } else if (tag_str[0] == 'R' && tag_str[1] == 'M' && tag_str[2] == 'C') {
142- nmea_tag = NMEA_RMC;
143- }
144-
145- geoclue_gpsd_update_status (gpsd, nmea_tag);
146- geoclue_gpsd_update_position (gpsd, nmea_tag);
147- geoclue_gpsd_update_velocity (gpsd, nmea_tag);
148+ geoclue_gpsd_update_status (gpsd);
149+ geoclue_gpsd_update_position (gpsd);
150+ geoclue_gpsd_update_velocity (gpsd);
151 }
152
153 static void
154@@ -414,7 +388,7 @@
155 {
156 GeoclueGpsd *self = (GeoclueGpsd*)data;
157 if (self->gpsdata) {
158- if (gps_read(self->gpsdata) < 0) {
159+ if (gps_read(self->gpsdata, NULL, 0) < 0) {
160 geoclue_gpsd_set_status (self, GEOCLUE_STATUS_ERROR);
161 geoclue_gpsd_stop_gpsd(self);
162 return FALSE;
This page took 0.109994 seconds and 4 git commands to generate.