diff options
author | Michael Tatarinov <kukabu@gmail.com> | 2011-02-16 12:45:34 +0300 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2011-02-16 06:21:43 -0500 |
commit | ef52f05e311fb46b05c0a61f6637e0bf9659a699 (patch) | |
tree | 7281ad2792a691f58912607323ab936fab7c65cc /pseudonmea.c | |
parent | 77a37c27532d6a6747b2508c125f8b8d1b31c4fb (diff) | |
download | gpsd-ef52f05e311fb46b05c0a61f6637e0bf9659a699.tar.gz |
Generate NMEA GPALM in pseudo-NMEA when almanic information is available.
Diffstat (limited to 'pseudonmea.c')
-rw-r--r-- | pseudonmea.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/pseudonmea.c b/pseudonmea.c index a6b343ac..732d3286 100644 --- a/pseudonmea.c +++ b/pseudonmea.c @@ -252,6 +252,29 @@ static void gpsd_binary_time_dump(struct gps_device_t *session, } } +static void gpsd_binary_almanac_dump(struct gps_device_t *session, + char bufp[], size_t len) +{ + if ( session->gpsdata.subframe.is_almanac ) { + (void)snprintf(bufp, len, + "$GPALM,1,1,%02d,%04d,%02x,%04x,%02x,%04x,%04x,%05x,%06x,%06x,%06x,%03x,%03x", + session->gpsdata.subframe.sub5.almanac.sv, + session->context->gps_week % 1024, + session->gpsdata.subframe.sub5.almanac.svh, + session->gpsdata.subframe.sub5.almanac.e, + session->gpsdata.subframe.sub5.almanac.toa, + session->gpsdata.subframe.sub5.almanac.deltai, + session->gpsdata.subframe.sub5.almanac.Omegad, + session->gpsdata.subframe.sub5.almanac.sqrtA, + session->gpsdata.subframe.sub5.almanac.omega, + session->gpsdata.subframe.sub5.almanac.Omega0, + session->gpsdata.subframe.sub5.almanac.M0, + session->gpsdata.subframe.sub5.almanac.af0, + session->gpsdata.subframe.sub5.almanac.af1); + nmea_add_checksum(bufp); + } +} + /*@-compdef -mustdefine@*/ /* *INDENT-OFF* */ void nmea_tpv_dump(struct gps_device_t *session, @@ -283,6 +306,15 @@ void nmea_sky_dump(struct gps_device_t *session, len - strlen(bufp)); } +void nmea_subframe_dump(struct gps_device_t *session, + /*@out@*/ char bufp[], size_t len) +{ + bufp[0] = '\0'; + if ((session->gpsdata.set & SUBFRAME_IS) != 0) + gpsd_binary_almanac_dump(session, bufp + strlen(bufp), + len - strlen(bufp)); +} + /*@+compdef +mustdefine@*/ /* pseudonmea.c ends here */ |