All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [git commit] package/olsr: fix build of pud plugin
@ 2021-01-16 22:01 Thomas Petazzoni
  0 siblings, 0 replies; only message in thread
From: Thomas Petazzoni @ 2021-01-16 22:01 UTC (permalink / raw)
  To: buildroot

commit: https://git.buildroot.net/buildroot/commit/?id=efe51a7be0e4ff6b3b14e99696e7a4e25996717f
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

Fix build of pud plugin which was added with commit
318d160fe5b080e421dc133dff82d5ea2cf7d893

Fixes:
 - http://autobuild.buildroot.org/results/5b598d728e6aae61b295681b0d7777e83074fecd

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 ...003-pud-adapt-to-API-changes-in-gpsd-3-20.patch | 105 +++++++++++++++++++++
 1 file changed, 105 insertions(+)

diff --git a/package/olsr/0003-pud-adapt-to-API-changes-in-gpsd-3-20.patch b/package/olsr/0003-pud-adapt-to-API-changes-in-gpsd-3-20.patch
new file mode 100644
index 0000000000..f97798d605
--- /dev/null
+++ b/package/olsr/0003-pud-adapt-to-API-changes-in-gpsd-3-20.patch
@@ -0,0 +1,105 @@
+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;

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-01-16 22:01 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-16 22:01 [Buildroot] [git commit] package/olsr: fix build of pud plugin Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.