summaryrefslogtreecommitdiff
path: root/recipes-navigation/gpsd/gpsd-3.16/0006-ubxtimelps.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-navigation/gpsd/gpsd-3.16/0006-ubxtimelps.patch')
-rw-r--r--recipes-navigation/gpsd/gpsd-3.16/0006-ubxtimelps.patch200
1 files changed, 0 insertions, 200 deletions
diff --git a/recipes-navigation/gpsd/gpsd-3.16/0006-ubxtimelps.patch b/recipes-navigation/gpsd/gpsd-3.16/0006-ubxtimelps.patch
deleted file mode 100644
index e715847..0000000
--- a/recipes-navigation/gpsd/gpsd-3.16/0006-ubxtimelps.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-diff -Naur old/driver_ubx.c new/driver_ubx.c
---- old/driver_ubx.c 2017-01-19 14:12:25.099231346 -0600
-+++ new/driver_ubx.c 2017-01-19 15:13:58.552152991 -0600
-@@ -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_dop(struct gps_device_t *session,
-@@ -237,6 +260,89 @@
- 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
- */
-@@ -523,13 +629,22 @@
- case UBX_NAV_EKFSTATUS:
- gpsd_log(&session->context->errout, LOG_DATA, "UBX_NAV_EKFSTATUS\n");
- 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_RXM_RAW:
- gpsd_log(&session->context->errout, LOG_DATA, "UBX_RXM_RAW\n");
- break;
- case UBX_RXM_SFRB:
-+ gpsd_log(&session->context->errout, LOG_DATA, "UBX_RXM_SFRB\n");
- mask = ubx_msg_sfrb(session, &buf[UBX_PREFIX_LEN]);
- break;
-+ case UBX_RXM_SFRBX:
-+ gpsd_log(&session->context->errout, LOG_DATA, "UBX_RXM_SFRBX\n");
-+ break;
- case UBX_RXM_SVSI:
- gpsd_log(&session->context->errout, LOG_PROG, "UBX_RXM_SVSI\n");
- break;
-@@ -955,6 +1070,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 */
-+#endif /* UBLOXTIMELS_ENABLE */
-+ (void)ubx_write(session, 0x06u, 0x01, msg, 3);
- msg[0] = 0x01; /* class */
- msg[1] = 0x30; /* msg id = NAV-SVINFO */
- msg[2] = 0x0a; /* rate */
-diff -Naur old/driver_ubx.h new/driver_ubx.h
---- old/driver_ubx.h 2017-01-19 14:12:25.099231346 -0600
-+++ new/driver_ubx.h 2017-01-19 14:01:48.177653001 -0600
-@@ -35,6 +35,7 @@
- UBX_NAV_TIMEGPS = UBX_MSGID(UBX_CLASS_NAV, 0x20),
- UBX_NAV_TIMEUTC = UBX_MSGID(UBX_CLASS_NAV, 0x21),
- UBX_NAV_CLOCK = UBX_MSGID(UBX_CLASS_NAV, 0x22),
-+ UBX_NAV_TIMELS = UBX_MSGID(UBX_CLASS_NAV, 0x26),
- UBX_NAV_SVINFO = UBX_MSGID(UBX_CLASS_NAV, 0x30),
- UBX_NAV_DGPS = UBX_MSGID(UBX_CLASS_NAV, 0x31),
- UBX_NAV_SBAS = UBX_MSGID(UBX_CLASS_NAV, 0x32),
-@@ -42,6 +43,7 @@
-
- UBX_RXM_RAW = UBX_MSGID(UBX_CLASS_RXM, 0x10),
- UBX_RXM_SFRB = UBX_MSGID(UBX_CLASS_RXM, 0x11),
-+ UBX_RXM_SFRBX = UBX_MSGID(UBX_CLASS_RXM, 0x13),
- UBX_RXM_SVSI = UBX_MSGID(UBX_CLASS_RXM, 0x20),
- UBX_RXM_ALM = UBX_MSGID(UBX_CLASS_RXM, 0x30),
- UBX_RXM_EPH = UBX_MSGID(UBX_CLASS_RXM, 0x31),
-@@ -102,6 +104,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
-+
- /* from UBX_NAV_SVINFO */
- #define UBX_SAT_USED 0x01
- #define UBX_SAT_DGPS 0x02
-diff -Naur old/SConstruct new/SConstruct
---- old/SConstruct 2017-01-19 14:51:35.638466569 -0600
-+++ new/SConstruct 2017-01-19 15:20:02.488159765 -0600
-@@ -113,6 +113,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)"),
- ("fury", True, "Jackson Labs Fury and Firefly support"),
- ("nmea2000", True, "NMEA2000/CAN support"),
- # Non-GPS protocols