summaryrefslogtreecommitdiff
path: root/pseudonmea.c
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2019-03-13 17:51:46 -0700
committerGary E. Miller <gem@rellim.com>2019-03-13 17:51:46 -0700
commit14ec79b992f2454e583ccc0b79a34241c18fd352 (patch)
tree64353d55bbe32e72ae913f2291aee6b4d5fc545d /pseudonmea.c
parent930ed1aa6514abb408aeb9228fff4b98f349035d (diff)
downloadgpsd-14ec79b992f2454e583ccc0b79a34241c18fd352.tar.gz
pseudonmea: Add fractional seconds to $GPGGA
Diffstat (limited to 'pseudonmea.c')
-rw-r--r--pseudonmea.c13
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)),