Commit | Line | Data |
---|---|---|
b15f30ad JB |
1 | To cope both with libgps18 and libgps19 |
2 | Index: navit/configure.in | |
3 | =================================================================== | |
4 | --- navit.orig/configure.in 2010-01-06 00:08:44.000000000 +0100 | |
5 | +++ navit/configure.in 2010-01-06 00:08:44.000000000 +0100 | |
6 | @@ -773,7 +773,17 @@ | |
7 | AC_ARG_ENABLE(vehicle-gpsd, [ --disable-vehicle-gpsd disable vehicle type gpsd], vehicle_gpsd=$enableval;vehicle_gpsd_reason="configure parameter") | |
8 | if test "x${vehicle_gpsd}" = xyes | |
9 | then | |
10 | - AC_CHECK_HEADER(gps.h, AC_DEFINE([HAVE_LIBGPS],[],Define to 1 if you have the <gps.h> header file.) GPSD_LIBS="-lgps", vehicle_gpsd=no; vehicle_gpsd_reason="no gps.h" ) | |
11 | + PKG_CHECK_MODULES([GPSD], [libgps], have_libgps="yes", have_libgps="no") | |
12 | + if test "x$have_libgps" = "xyes"; then | |
13 | + AC_DEFINE([HAVE_LIBGPS],[],Define to 1 if you have libgps.) | |
14 | + PKG_CHECK_MODULES([LIBGPS19], [libgps >= 2.90], have_libgps19="yes", have_libgps19="no") | |
15 | + if test "x$have_libgps19" = "xyes"; then | |
16 | + AC_DEFINE([HAVE_LIBGPS19],[],Define to 1 if you have libgps19.) | |
17 | + fi | |
18 | + else | |
19 | + vehicle_gpsd=no; vehicle_gpsd_reason="no libgps" | |
20 | + fi | |
21 | +dnl AC_CHECK_HEADER(gps.h, AC_DEFINE([HAVE_LIBGPS],[],Define to 1 if you have the <gps.h> header file.) GPSD_LIBS="-lgps", vehicle_gpsd=no; vehicle_gpsd_reason="no gps.h" ) | |
22 | fi | |
23 | AC_SUBST(GPSD_CFLAGS) | |
24 | AC_SUBST(GPSD_LIBS) | |
25 | Index: navit/navit/attr_def.h | |
26 | =================================================================== | |
27 | --- navit.orig/navit/attr_def.h 2010-01-06 00:06:16.000000000 +0100 | |
28 | +++ navit/navit/attr_def.h 2010-01-06 00:08:44.000000000 +0100 | |
29 | @@ -226,7 +226,9 @@ | |
30 | ATTR(gc_type) | |
31 | ATTR(layout) | |
32 | ATTR(position_nmea) | |
33 | +#ifndef HAVE_LIBGPS19 | |
34 | ATTR(gpsd_query) | |
35 | +#endif | |
36 | ATTR(on_eof) | |
37 | ATTR(command) | |
38 | ATTR(src) | |
39 | Index: navit/navit/vehicle/gpsd/vehicle_gpsd.c | |
40 | =================================================================== | |
41 | --- navit.orig/navit/vehicle/gpsd/vehicle_gpsd.c 2010-01-06 00:06:16.000000000 +0100 | |
42 | +++ navit/navit/vehicle/gpsd/vehicle_gpsd.c 2010-01-06 00:08:44.000000000 +0100 | |
43 | @@ -36,7 +36,9 @@ | |
44 | ||
45 | static struct vehicle_priv { | |
46 | char *source; | |
47 | +#ifndef HAVE_LIBGPS19 | |
48 | char *gpsd_query; | |
49 | +#endif | |
50 | struct callback_list *cbl; | |
51 | struct callback *cb; | |
52 | struct event_watch *evwatch; | |
53 | @@ -69,8 +71,12 @@ | |
54 | static void vehicle_gpsd_io(struct vehicle_priv *priv); | |
55 | ||
56 | static void | |
57 | +#ifdef HAVE_LIBGPS19 | |
58 | +vehicle_gpsd_callback(struct gps_data_t *data, char *buf, size_t len) | |
59 | +#else | |
60 | vehicle_gpsd_callback(struct gps_data_t *data, char *buf, size_t len, | |
61 | int level) | |
62 | +#endif | |
63 | { | |
64 | char *pos,*nmea_data_buf; | |
65 | int i=0,sats_signal=0; | |
66 | @@ -108,16 +114,32 @@ | |
67 | data->set &= ~ALTITUDE_SET; | |
68 | } | |
69 | if (data->set & SATELLITE_SET) { | |
70 | +#ifdef HAVE_LIBGPS19 | |
71 | + if(data->satellites_visible > 0) { | |
72 | +#else | |
73 | if(data->satellites > 0) { | |
74 | +#endif | |
75 | sats_signal=0; | |
76 | +#ifdef HAVE_LIBGPS19 | |
77 | + for( i=0;i<data->satellites_visible;i++) { | |
78 | +#else | |
79 | for( i=0;i<data->satellites;i++) { | |
80 | +#endif | |
81 | if (data->ss[i] > 0) | |
82 | sats_signal++; | |
83 | } | |
84 | } | |
85 | +#ifdef HAVE_LIBGPS19 | |
86 | + if (priv->sats_used != data->satellites_used || priv->sats != data->satellites_visible || priv->sats_signal != sats_signal ) { | |
87 | +#else | |
88 | if (priv->sats_used != data->satellites_used || priv->sats != data->satellites || priv->sats_signal != sats_signal ) { | |
89 | +#endif | |
90 | priv->sats_used = data->satellites_used; | |
91 | +#ifdef HAVE_LIBGPS19 | |
92 | + priv->sats = data->satellites_visible; | |
93 | +#else | |
94 | priv->sats = data->satellites; | |
95 | +#endif | |
96 | priv->sats_signal = sats_signal; | |
97 | callback_list_call_attr_0(priv->cbl, attr_position_sats); | |
98 | } | |
99 | @@ -135,10 +157,17 @@ | |
100 | priv->fix_time = data->fix.time; | |
101 | data->set &= ~TIME_SET; | |
102 | } | |
103 | +#ifdef HAVE_LIBGPS19 | |
104 | + if (data->set & DOP_SET) { | |
105 | + dbg(1, "pdop : %g\n", data->dop.pdop); | |
106 | + priv->hdop = data->dop.pdop; | |
107 | + data->set &= ~DOP_SET; | |
108 | +#else | |
109 | if (data->set & PDOP_SET) { | |
110 | dbg(1, "pdop : %g\n", data->pdop); | |
111 | priv->hdop = data->hdop; | |
112 | data->set &= ~PDOP_SET; | |
113 | +#endif | |
114 | } | |
115 | if (data->set & LATLON_SET) { | |
116 | priv->geo.lat = data->fix.latitude; | |
117 | @@ -180,7 +209,11 @@ | |
118 | dbg(0,"gps_open failed for '%s'. Retrying in %d seconds. Have you started gpsd?\n", priv->source, priv->retry_interval); | |
119 | return TRUE; | |
120 | } | |
121 | +#ifdef HAVE_LIBGPS19 | |
122 | + gps_stream(priv->gps, WATCH_ENABLE, NULL); | |
123 | +#else | |
124 | gps_query(priv->gps, priv->gpsd_query); | |
125 | +#endif | |
126 | gps_set_raw_hook(priv->gps, vehicle_gpsd_callback); | |
127 | priv->cb = callback_new_1(callback_cast(vehicle_gpsd_io), priv); | |
128 | priv->evwatch = event_add_watch((void *)priv->gps->gps_fd, event_watch_cond_read, priv->cb); | |
129 | @@ -268,8 +301,10 @@ | |
130 | vehicle_gpsd_close(priv); | |
131 | if (priv->source) | |
132 | g_free(priv->source); | |
133 | +#ifndef HAVE_LIBGPS19 | |
134 | if (priv->gpsd_query) | |
135 | g_free(priv->gpsd_query); | |
136 | +#endif | |
137 | g_free(priv); | |
138 | } | |
139 | ||
140 | @@ -350,12 +385,17 @@ | |
141 | *cbl, struct attr **attrs) | |
142 | { | |
143 | struct vehicle_priv *ret; | |
144 | +#ifdef HAVE_LIBGPS19 | |
145 | + struct attr *source, *retry_int; | |
146 | +#else | |
147 | struct attr *source, *query, *retry_int; | |
148 | +#endif | |
149 | ||
150 | dbg(1, "enter\n"); | |
151 | source = attr_search(attrs, NULL, attr_source); | |
152 | ret = g_new0(struct vehicle_priv, 1); | |
153 | ret->source = g_strdup(source->u.str); | |
154 | +#ifndef HAVE_LIBGPS19 | |
155 | query = attr_search(attrs, NULL, attr_gpsd_query); | |
156 | if (query) { | |
157 | ret->gpsd_query = g_strconcat(query->u.str, "\n", NULL); | |
158 | @@ -363,6 +403,7 @@ | |
159 | ret->gpsd_query = g_strdup("w+x\n"); | |
160 | } | |
161 | dbg(1,"Format string for gpsd_query: %s\n",ret->gpsd_query); | |
162 | +#endif | |
163 | retry_int = attr_search(attrs, NULL, attr_retry_interval); | |
164 | if (retry_int) { | |
165 | ret->retry_interval = retry_int->u.num; | |
166 | Index: navit/navit/attr.h | |
167 | =================================================================== | |
168 | --- navit.orig/navit/attr.h 2010-01-06 00:06:16.000000000 +0100 | |
169 | +++ navit/navit/attr.h 2010-01-06 00:08:44.000000000 +0100 | |
170 | @@ -25,6 +25,7 @@ | |
171 | #endif | |
172 | ||
173 | #include "projection.h" | |
174 | +#include "config.h" | |
175 | ||
176 | enum item_type; | |
177 | ||
178 | Index: navit/navit/map/garmin/Makefile.am | |
179 | =================================================================== | |
180 | --- navit.orig/navit/map/garmin/Makefile.am 2010-01-06 00:09:00.000000000 +0100 | |
181 | +++ navit/navit/map/garmin/Makefile.am 2010-01-06 00:09:09.000000000 +0100 | |
182 | @@ -20,7 +20,7 @@ | |
183 | gentypes_SOURCES=gentypes.c | |
184 | ||
185 | gentypes.$(OBJEXT): gentypes.c | |
186 | - $(CC_FOR_BUILD) -I$(top_srcdir)/navit -c -o $@ $< | |
187 | + $(CC_FOR_BUILD) -I$(top_srcdir)/navit -I$(top_srcdir) -c -o $@ $< | |
188 | ||
189 | gentypes$(EXEEXT): $(gentypes_OBJECTS) $(gentypes_DEPENDENCIES) | |
190 | @rm -f gentypes$(EXEEXT) |