diff options
Diffstat (limited to 'recipes-navigation/gpsd/gpsd-3.18.1/0006-ubxtimelps.patch')
-rw-r--r-- | recipes-navigation/gpsd/gpsd-3.18.1/0006-ubxtimelps.patch | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/recipes-navigation/gpsd/gpsd-3.18.1/0006-ubxtimelps.patch b/recipes-navigation/gpsd/gpsd-3.18.1/0006-ubxtimelps.patch deleted file mode 100644 index 030001c..0000000 --- a/recipes-navigation/gpsd/gpsd-3.18.1/0006-ubxtimelps.patch +++ /dev/null @@ -1,192 +0,0 @@ -diff -Naru gpsd-3.18.1.orig/driver_ubx.c gpsd-3.18.1/driver_ubx.c ---- gpsd-3.18.1.orig/driver_ubx.c 2018-10-26 16:01:08.010358178 -0500 -+++ gpsd-3.18.1/driver_ubx.c 2018-10-29 17:30:18.354526227 -0500 -@@ -57,6 +57,29 @@ - #define UBX_CFG_LEN 20 - #define outProtoMask 14 - -+#ifdef UBLOXTIMELS_ENABLE -+/* UBX-NAV-TIMELS support */ -+static char *srcOfCurrLs[] = { -+ "firmware", -+ "GPS GLONASS difference", -+ "GPS", -+ "SBAS", -+ "BeiDou", -+ "Galileo", -+ "Aided data", -+ "Configured" -+}; -+static char *srcOfLsChange[] = { -+ "No Source", -+ "Undefined", -+ "GPS", -+ "SBAS", -+ "BeiDou", -+ "Galileo", -+ "GLONOSS", -+}; -+#endif /* UBLOXTIMELS_ENABLE */ -+ - static gps_mask_t ubx_parse(struct gps_device_t *session, unsigned char *buf, - size_t len); - static gps_mask_t ubx_msg_nav_eoe(struct gps_device_t *session, -@@ -397,6 +420,90 @@ - return mask; - } - -+#ifdef UBLOXTIMELS_ENABLE -+/** -+ * Navigation time to leap second -+ * -+ * Sets leap_notify if leap second is < 23 hours away. -+ */ -+static void -+ubx_msg_nav_timels(struct gps_device_t *session, unsigned char *buf, -+ size_t data_len) -+{ -+ int version; -+ unsigned int flags; -+ int valid_curr_ls; -+ int valid_time_to_ls_event; -+ -+ if (data_len != 24) { -+ gpsd_log(&session->context->errout, LOG_WARN, -+ "UBX-NAV-TIMELS: unexpected length %d, expecting 24\n", -+ data_len); -+ return; -+ } -+ version = getsb(buf,4); -+ /* Only version 0 is defined so far. */ -+ flags = (unsigned int)getub(buf, 23); -+ gpsd_log(&session->context->errout, LOG_DATA, -+ "UBX-NAV-TIMELS: flags 0x%x message version %d\n",flags, version); -+ valid_curr_ls = flags & UBX_TIMELS_VALID_CURR_LS; -+ valid_time_to_ls_event = flags & UBX_TIMELS_VALID_TIME_LS_EVT; -+ if(valid_curr_ls) { -+ unsigned int src_of_curr_ls = getub(buf,8); -+ int curr_ls = getsb(buf,9); -+ char *src = "Unknown"; -+ -+ if(src_of_curr_ls < (sizeof srcOfCurrLs/(sizeof srcOfCurrLs[0]))) -+ src = srcOfCurrLs[src_of_curr_ls]; -+ -+ gpsd_log(&session->context->errout, LOG_DATA, -+ "UBX-NAV-TIMELS: source_of_current_leapsecond=%u:%s curr_ls=%d\n", -+ src_of_curr_ls,src,curr_ls); -+ session->context->leap_seconds = curr_ls; -+ session->context->valid |= LEAP_SECOND_VALID; -+ } /* Valid current leap second */ -+ if(valid_time_to_ls_event) { -+ char *src="Unknown"; -+ unsigned int src_of_ls_change; -+ unsigned short dateOfLSGpsWn, dateOfLSGpsDn; -+ int lsChange = getsb(buf,11); -+ int timeToLsEvent = getles32(buf,12); -+ src_of_ls_change = getub(buf,10); -+ if(src_of_ls_change < (sizeof srcOfLsChange/(sizeof srcOfLsChange[0]))) -+ src = srcOfLsChange[src_of_ls_change]; -+ dateOfLSGpsWn = getles16(buf,16); -+ dateOfLSGpsDn = getles16(buf,18); -+ gpsd_log(&session->context->errout, LOG_DATA, -+ "UBX_NAV_TIMELS: source_of_leapsecond_change=%u:%s " -+ "leapSecondChage=%d timeToLsEvent=%d\n", -+ src_of_ls_change,src,lsChange,timeToLsEvent); -+ gpsd_log(&session->context->errout, LOG_DATA, -+ "UBX_NAV_TIMELS: dateOfLSGpsWn=%d dateOfLSGpsDn=%d\n", -+ dateOfLSGpsWn,dateOfLSGpsDn); -+ if(timeToLsEvent < 60*60*23 && timeToLsEvent > 0) { -+ if(lsChange == 0) -+ session->context->leap_notify = LEAP_NOWARNING; -+ else if (lsChange == 1) -+ session->context->leap_notify = LEAP_ADDSECOND; -+ else if (lsChange == -1) -+ session->context->leap_notify = LEAP_DELSECOND; -+ } else -+ session->context->leap_notify = LEAP_NOWARNING; -+ -+ if (session->context->leap_notify == LEAP_ADDSECOND) -+ gpsd_log(&session->context->errout,LOG_INF, -+ "UBX_NAV_TIMELS: Add leap second today\n"); -+ else if (session->context->leap_notify == LEAP_DELSECOND) -+ gpsd_log(&session->context->errout,LOG_INF, -+ "UBX_NAV_TIMELS: Remove leap second today\n"); -+ -+ gpsd_log(&session->context->errout, LOG_DATA, -+ "UBX_NAV_TIMELS: leaving: leap_notify=%d\n", -+ session->context->leap_notify); -+ } -+} -+#endif /* UBLOXTIMELS_ENABLE */ -+ - /** - * Geodetic position solution message - */ -@@ -1129,6 +1236,9 @@ - break; - case UBX_NAV_TIMELS: - gpsd_log(&session->context->errout, LOG_DATA, "UBX_NAV_TIMELS\n"); -+#ifdef UBLOXTIMELS_ENABLE -+ ubx_msg_nav_timels(session, &buf[UBX_PREFIX_LEN],data_len); -+#endif // UBLOXTIMELS_ENABLE - break; - case UBX_NAV_TIMEUTC: - gpsd_log(&session->context->errout, LOG_DATA, "UBX_NAV_TIMEUTC\n"); -@@ -1172,6 +1282,7 @@ - gpsd_log(&session->context->errout, LOG_DATA, "UBX_RXM_RTCM\n"); - break; - case UBX_RXM_SFRB: -+ gpsd_log(&session->context->errout, LOG_DATA, "UBX_RXM_SFRB\n"); - mask = ubx_rxm_sfrb(session, &buf[UBX_PREFIX_LEN]); - break; - case UBX_RXM_SFRBX: -@@ -1474,6 +1585,12 @@ - msg[1] = 0x20; /* msg id = UBX_NAV_TIMEGPS */ - msg[2] = 0x00; /* rate */ - (void)ubx_write(session, 0x06u, 0x01, msg, 3); -+#ifdef UBLOXTIMELS_ENABLE -+ msg[0] = 0x01; /* class */ -+ msg[1] = 0x26; /* msg id = UBX_NAV_TIMELS */ -+ msg[2] = 0xff; /* rate */ -+#endif /* UBLOXTIMELS_ENABLE */ -+ (void)ubx_write(session, 0x06u, 0x01, msg, 3); - msg[0] = 0x01; /* class */ - msg[1] = 0x30; /* msg id = NAV-SVINFO */ - msg[2] = 0x00; /* rate */ -@@ -1558,6 +1675,12 @@ - msg[1] = 0x20; /* msg id = UBX_NAV_TIMEGPS */ - msg[2] = 0x01; /* rate */ - (void)ubx_write(session, 0x06u, 0x01, msg, 3); -+#ifdef UBLOXTIMELS_ENABLE -+ msg[0] = 0x01; /* class */ -+ msg[1] = 0x26; /* msg id = UBX_NAV_TIMELS */ -+ msg[2] = 0xff; /* rate */ -+ (void)ubx_write(session, 0x06u, 0x01, msg, 3); -+#endif /* UBLOXTIMELS_ENABLE */ - msg[0] = 0x01; /* class */ - msg[1] = 0x30; /* msg id = NAV-SVINFO */ - msg[2] = 0x0a; /* rate */ -diff -Naru gpsd-3.18.1.orig/driver_ubx.h gpsd-3.18.1/driver_ubx.h ---- gpsd-3.18.1.orig/driver_ubx.h 2018-10-26 16:01:08.010358178 -0500 -+++ gpsd-3.18.1/driver_ubx.h 2018-10-26 16:26:09.114313738 -0500 -@@ -210,6 +210,9 @@ - #define UBX_SOL_VALID_WEEK 0x04 - #define UBX_SOL_VALID_TIME 0x08 - -+#define UBX_TIMELS_VALID_CURR_LS 0x01 -+#define UBX_TIMELS_VALID_TIME_LS_EVT 0x01 -+ - #define UBX_TIMEGPS_VALID_TIME 0x01 - #define UBX_TIMEGPS_VALID_WEEK 0x02 - #define UBX_TIMEGPS_VALID_LEAP_SECOND 0x04 -diff -Naru gpsd-3.18.1.orig/SConstruct gpsd-3.18.1/SConstruct ---- gpsd-3.18.1.orig/SConstruct 2018-10-26 15:53:30.174371732 -0500 -+++ gpsd-3.18.1/SConstruct 2018-10-26 15:55:33.726368074 -0500 -@@ -178,6 +178,7 @@ - ("tripmate", True, "DeLorme TripMate support"), - ("tsip", True, "Trimble TSIP support"), - ("ublox", True, "u-blox Protocol support"), -+ ("ubloxtimels", False, "u-blox UBX-NAV-TIMELS support (leap second)"), - # Non-GPS protocols - ("aivdm", True, "AIVDM support"), - ("gpsclock", True, "GPSClock support"), |