From b2dfb6c27fcf4ddae87b0e99492f4bb8472fa39a Mon Sep 17 00:00:00 2001
From: Eneas U de Queiroz <cotequeiroz@gmail.com>
Date: Thu, 13 Feb 2020 17:26:41 -0300
Subject: [PATCH] pud: adapt to API changes in gpsd 3.20

The timestamp fields were changed from double to struct timespec, and
the geoid separation field was moved to fix.geoid_sep.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>

[Retrieved from:
https://github.com/OLSR/olsrd/commit/b2dfb6c27fcf4ddae87b0e99492f4bb8472fa39a]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 lib/pud/src/gpsdclient.c | 36 ++++++++++++++++++++++++++++++++----
 1 file changed, 32 insertions(+), 4 deletions(-)

diff --git a/lib/pud/src/gpsdclient.c b/lib/pud/src/gpsdclient.c
index 9e7fb708d..2a7a26eef 100644
--- a/lib/pud/src/gpsdclient.c
+++ b/lib/pud/src/gpsdclient.c
@@ -79,6 +79,23 @@ static void gpsdError(const char *s) {
   syslog(LOG_ERR, "gpsd error: %s", s);
 }
 
+#if GPSD_API_MAJOR_VERSION >= 9
+static double time_as_double(struct timespec *ts) {
+ return (ts->tv_sec + ts->tv_nsec * 1e-9);
+}
+
+static bool is_online(struct gps_data_t *gpsdata) {
+  return !!gpsdata->online.tv_sec;
+}
+#else
+
+#define time_as_double(x) *(x)
+
+static bool is_online(struct gps_data_t *gpsdata) {
+  return !!gpsdata->online;
+}
+#endif
+
 /* standard parsing of a GPS data source spec */
 void gpsdParseSourceSpec(char *arg, GpsDaemon *gpsDaemon) {
   if (!arg //
@@ -298,8 +315,8 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon
             8, //
             dev->parity, //
             dev->stopbits, //
-            dev->cycle, //
-            dev->mincycle);
+            time_as_double(&dev->cycle), //
+            time_as_double(&dev->mincycle));
 
         connectionTracking->devSeen[i] = true;
         connectionTracking->dev[i] = *dev;
@@ -367,11 +384,18 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon
   nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_SMASK);
 
   /* date & time */
+#if GPSD_API_MAJOR_VERSION >= 9
+  if (gpsdata->fix.time.tv_sec > 0) {
+    struct tm *time = gmtime(&gpsdata->fix.time.tv_sec);
+    unsigned int hsec = (unsigned int) (gpsdata->fix.time.tv_nsec / 10000000);
+#else
   if (!isNaN(gpsdata->fix.time)) {
     double seconds;
     double fraction = modf(fabs(gpsdata->fix.time), &seconds);
     long sec = lrint(seconds);
     struct tm *time = gmtime(&sec);
+    unsigned int hsec = (unsigned int) lrint(fraction * 100);
+#endif
     if (time) {
       info->utc.year = (unsigned int) time->tm_year + 1900;
       info->utc.mon = (unsigned int) time->tm_mon + 1;
@@ -379,7 +403,7 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon
       info->utc.hour = (unsigned int) time->tm_hour;
       info->utc.min = (unsigned int) time->tm_min;
       info->utc.sec = (unsigned int) time->tm_sec;
-      info->utc.hsec = (unsigned int) lrint(fraction * 100);
+      info->utc.hsec = hsec;
 
       nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_UTCDATE | NMEALIB_PRESENT_UTCTIME);
     }
@@ -387,7 +411,7 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon
   gpsdata->set &= ~TIME_SET;
 
   /* sig & fix */
-  if (!gpsdata->online) {
+  if (!is_online(gpsdata)) {
     gpsdata->fix.mode = MODE_NO_FIX;
   }
 
@@ -454,7 +478,11 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon
   if ((gpsdata->fix.mode >= MODE_3D) //
       && !isNaN(gpsdata->fix.altitude)) {
     info->elevation = gpsdata->fix.altitude;
+#if GPSD_API_MAJOR_VERSION >= 9
+    info->height = gpsdata->fix.geoid_sep;
+#else
     info->height = gpsdata->separation;
+#endif
     nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_ELV | NMEALIB_PRESENT_HEIGHT);
   }
   gpsdata->set &= ~ALTITUDE_SET;
