diff options
Diffstat (limited to 'src/host/layer23/src/common/gps.c')
-rw-r--r-- | src/host/layer23/src/common/gps.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/host/layer23/src/common/gps.c b/src/host/layer23/src/common/gps.c index 3ec7377c..35ee4167 100644 --- a/src/host/layer23/src/common/gps.c +++ b/src/host/layer23/src/common/gps.c @@ -60,9 +60,20 @@ static struct gps_data_t* gdata = NULL; #if GPSD_API_MAJOR_VERSION >= 5 static struct gps_data_t _gdata; -#define gps_poll gps_read #endif +static inline int compat_gps_read(struct gps_data_t *data) +{ +/* API break in gpsd 6bba8b329fc7687b15863d30471d5af402467802 */ +#if GPSD_API_MAJOR_VERSION >= 7 && GPSD_API_MINOR_VERSION >= 0 + return gps_read(data, NULL, 0); +#elif GPSD_API_MAJOR_VERSION >= 5 + return gps_read(data); +#else + return gps_poll(data); +#endif +} + int osmo_gpsd_cb(struct osmo_fd *bfd, unsigned int what) { struct tm *tm; @@ -85,7 +96,7 @@ int osmo_gpsd_cb(struct osmo_fd *bfd, unsigned int what) #endif /* polling returned an error */ - if (gps_poll(gdata)) + if (compat_gps_read(gdata)) goto gps_not_ready; /* data are valid */ |