summaryrefslogtreecommitdiff
path: root/pseudonmea.c
diff options
context:
space:
mode:
authorMichael Tatarinov <kukabu@gmail.com>2011-02-16 12:45:34 +0300
committerEric S. Raymond <esr@thyrsus.com>2011-02-16 06:21:43 -0500
commitef52f05e311fb46b05c0a61f6637e0bf9659a699 (patch)
tree7281ad2792a691f58912607323ab936fab7c65cc /pseudonmea.c
parent77a37c27532d6a6747b2508c125f8b8d1b31c4fb (diff)
downloadgpsd-ef52f05e311fb46b05c0a61f6637e0bf9659a699.tar.gz
Generate NMEA GPALM in pseudo-NMEA when almanic information is available.
Diffstat (limited to 'pseudonmea.c')
-rw-r--r--pseudonmea.c32
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 */