diff --git a/gps-watchdog.c b/gps-watchdog.c index ea72db3..f066fa8 100644 --- a/gps-watchdog.c +++ b/gps-watchdog.c @@ -55,8 +55,13 @@ static void callback(struct gps_data_t *gpsdata) { /* we received some data but gpsd itself believes the receiver * to be offline */ +#if GPSD_API_MAJOR_VERSION >= 9 + if (gpsdata->online.tv_sec == 0) + return; +#else if (gpsdata->online == 0) return; +#endif /* re-set the alarm to the timeout */ alarm(timeout); @@ -120,7 +125,11 @@ static int my_gps_mainloop(struct gps_data_t *gdata, if (!gps_waiting(gdata, timeout)) { return -1; } else { +#if GPSD_API_MAJOR_VERSION >= 7 + rc = gps_read(gdata, NULL, 0); +#else rc = gps_read(gdata); +#endif if (rc < 0) return rc; (*hook)(gdata); diff --git a/gpsdate.c b/gpsdate.c index 375c517..5c49672 100644 --- a/gpsdate.c +++ b/gpsdate.c @@ -55,13 +55,19 @@ static void callback(struct gps_data_t *gpsdata) time_t time; char *timestr, *lf; int rc; + int status; if (!(gpsdata->set & TIME_SET)) return; +#if GPSD_API_MAJOR_VERSION >= 9 + tv.tv_sec = gpsdata->fix.time.tv_sec; + tv.tv_usec = gpsdata->fix.time.tv_nsec / 1000; +#else tv.tv_sec = gpsdata->fix.time; /* FIXME: use the fractional part for microseconds */ tv.tv_usec = 0; +#endif time = tv.tv_sec; timestr = ctime(&time); @@ -74,10 +80,16 @@ static void callback(struct gps_data_t *gpsdata) if (lf) *lf = '\0'; - syslog(LOG_DEBUG, "%s: gpsdate->set=0x%08"PRIu64"x status=%u sats_used=%u\n", - timestr, gpsdata->set, gpsdata->status, gpsdata->satellites_used); +#if GPSD_API_MAJOR_VERSION >= 10 + status = gpsdata->fix.status; +#else + status = gpsdata->status; +#endif - if (gpsdata->status == 0) { + syslog(LOG_DEBUG, "%s: gpsdate->set=0x%08"PRIu64"x status=%u sats_used=%u\n", + timestr, gpsdata->set, status, gpsdata->satellites_used); + + if (status == 0) { syslog(LOG_INFO, "%s: discarding; no fix yet\n", timestr); return; } @@ -160,7 +172,11 @@ static int my_gps_mainloop(struct gps_data_t *gdata, if (!gps_waiting(gdata, timeout)) { return -1; } else { +#if GPSD_API_MAJOR_VERSION >= 7 + rc = gps_read(gdata, NULL, 0); +#else rc = gps_read(gdata); +#endif if (rc < 0) return rc; (*hook)(gdata);