diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2009-10-02 15:56:08 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2009-10-02 15:56:08 +0000 |
commit | a0023da1ea2b268830d981de3b3b5b2cf6058612 (patch) | |
tree | 6a3334a9b6f72643f6d60facd416d7dd17196b16 /driver_ubx.c | |
parent | 34574031fb921a546325b5339c917d64ae6c58f8 (diff) | |
download | gpsd-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_ubx.c')
-rw-r--r-- | driver_ubx.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/driver_ubx.c b/driver_ubx.c index 55ba2d71..6659083f 100644 --- a/driver_ubx.c +++ b/driver_ubx.c @@ -332,6 +332,8 @@ gps_mask_t ubx_parse(struct gps_device_t *session, unsigned char *buf, size_t le if (len < 6) /* the packet at least contains a head of six bytes */ return 0; + session->cycle_end_reliable = true; + /* extract message id and length */ msgid = (buf[2] << 8) | buf[3]; data_len = (size_t)getlesw(buf, 4); @@ -352,7 +354,7 @@ gps_mask_t ubx_parse(struct gps_device_t *session, unsigned char *buf, size_t le break; case UBX_NAV_SOL: gpsd_report(LOG_PROG, "UBX_NAV_SOL\n"); - mask = ubx_msg_nav_sol(session, &buf[6], data_len); + mask = ubx_msg_nav_sol(session, &buf[6], data_len) | (CLEAR_SET | REPORT_SET); break; case UBX_NAV_POSUTM: gpsd_report(LOG_IO, "UBX_NAV_POSUTM\n"); @@ -489,11 +491,6 @@ gps_mask_t ubx_parse(struct gps_device_t *session, unsigned char *buf, size_t le (void)snprintf(session->gpsdata.tag, sizeof(session->gpsdata.tag), "0x%04hx", msgid); - /* could change if the set of messages we enable does */ - session->cycle_end_reliable = true; - if (msgid == 0x0106) - session->cycle_state |= CYCLE_START | CYCLE_END; - return mask | ONLINE_SET; } /*@ -charint @*/ |