diff options
author | Gary E. Miller <gem@rellim.com> | 2019-03-13 17:51:46 -0700 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2019-03-13 17:51:46 -0700 |
commit | 14ec79b992f2454e583ccc0b79a34241c18fd352 (patch) | |
tree | 64353d55bbe32e72ae913f2291aee6b4d5fc545d /pseudonmea.c | |
parent | 930ed1aa6514abb408aeb9228fff4b98f349035d (diff) | |
download | gpsd-14ec79b992f2454e583ccc0b79a34241c18fd352.tar.gz |
pseudonmea: Add fractional seconds to $GPGGA
Diffstat (limited to 'pseudonmea.c')
-rw-r--r-- | pseudonmea.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/pseudonmea.c b/pseudonmea.c index 86ba6a77..e5bd9f8f 100644 --- a/pseudonmea.c +++ b/pseudonmea.c @@ -33,16 +33,19 @@ void gpsd_position_fix_dump(struct gps_device_t *session, char bufp[], size_t len) { struct tm tm; - time_t intfixtime; + double integral; + time_t integral_time; + double fractional = modf(session->gpsdata.fix.time, &integral); + integral_time = (time_t) integral; + + (void)gmtime_r(&integral_time, &tm); - intfixtime = (time_t) session->gpsdata.fix.time; - (void)gmtime_r(&intfixtime, &tm); if (session->gpsdata.fix.mode > MODE_NO_FIX) { (void)snprintf(bufp, len, - "$GPGGA,%02d%02d%02d,%09.4f,%c,%010.4f,%c,%d,%02d,", + "$GPGGA,%02d%02d%05.2f,%09.4f,%c,%010.4f,%c,%d,%02d,", tm.tm_hour, tm.tm_min, - tm.tm_sec, + tm.tm_sec + fractional, degtodm(fabs(session->gpsdata.fix.latitude)), ((session->gpsdata.fix.latitude > 0) ? 'N' : 'S'), degtodm(fabs(session->gpsdata.fix.longitude)), |