summaryrefslogtreecommitdiff
path: root/driver_sirf.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-10-02 15:56:08 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-10-02 15:56:08 +0000
commita0023da1ea2b268830d981de3b3b5b2cf6058612 (patch)
tree6a3334a9b6f72643f6d60facd416d7dd17196b16 /driver_sirf.c
parent34574031fb921a546325b5339c917d64ae6c58f8 (diff)
downloadgpsd-a0023da1ea2b268830d981de3b3b5b2cf6058612.tar.gz
The new instrumentation pays off.
On NMEA devices, mode could sometimes be held across cycles when it shouldn't have been. Fix this, simplifying how cycles are tracked in the process. Some regression tests needed rebuilding. Code splints clean.
Diffstat (limited to 'driver_sirf.c')
-rw-r--r--driver_sirf.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/driver_sirf.c b/driver_sirf.c
index 8400ddcc..ff495f66 100644
--- a/driver_sirf.c
+++ b/driver_sirf.c
@@ -790,14 +790,12 @@ gps_mask_t sirf_parse(struct gps_device_t *session, unsigned char *buf, size_t l
/* could change if the set of messages we enable does */
session->cycle_end_reliable = true;
- if (buf[0] == (unsigned char)0x02 || buf[0] == (unsigned char)0x62)
- session->cycle_state |= (CYCLE_START | CYCLE_END);
switch (buf[0])
{
case 0x02: /* Measure Navigation Data Out */
if ((session->driver.sirf.driverstate & UBLOX)==0)
- return sirf_msg_navsol(session, buf, len);
+ return sirf_msg_navsol(session, buf, len) | (CLEAR_SET | REPORT_SET);
else {
gpsd_report(LOG_PROG, "MND 0x02 skipped, uBlox flag is on.\n");
return 0;
@@ -936,7 +934,7 @@ gps_mask_t sirf_parse(struct gps_device_t *session, unsigned char *buf, size_t l
case 0x62: /* uBlox Extended Measured Navigation Data */
gpsd_report(LOG_PROG, "uBlox EMND 0x62: %s.\n",
gpsd_hexdump_wrapper(buf, len, LOG_PROG));
- return sirf_msg_ublox(session, buf, len);
+ return sirf_msg_ublox(session, buf, len) | (CLEAR_SET | REPORT_SET);
case 0x80: /* Initialize Data Source */
gpsd_report(LOG_PROG, "INIT 0x80: %s\n",