summaryrefslogtreecommitdiff
path: root/nmea_parse.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2006-06-07 17:52:08 +0000
committerEric S. Raymond <esr@thyrsus.com>2006-06-07 17:52:08 +0000
commit0f333c4c5961de99dcc3fd8f6e82bc45e1de003c (patch)
tree824d8c2734788fcb96c7c572de2c724dd0c45e2e /nmea_parse.c
parent808f85fe398c3275087c369355ebc8a224e39c2a (diff)
downloadgpsd-0f333c4c5961de99dcc3fd8f6e82bc45e1de003c.tar.gz
Add dgnss.c, which should have been checked in with the NTRIP support.
Also check in the heading patch under -DHEADING_FIX.
Diffstat (limited to 'nmea_parse.c')
-rw-r--r--nmea_parse.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/nmea_parse.c b/nmea_parse.c
index 6c186a2f..ef152bc8 100644
--- a/nmea_parse.c
+++ b/nmea_parse.c
@@ -508,9 +508,17 @@ static gps_mask_t processTNTHTM(int c UNUSED, char *field[], struct gps_device_t
//gpsd_zero_satellites(&session->gpsdata);
+#ifdef HEADING_FIX
+ // these fields are not handled by gps_merge_fix(), so must be written directly to the current fix structure
+#endif /* HEADING_FIX */
session->gpsdata.fix.time = timestamp();
+#ifndef HEADING_FIX
session->gpsdata.newdata.track = atof(field[1]);
+#else /* HEADING_FIX */
+ session->gpsdata.fix.heading = atof(field[1]);
+#endif /* HEADING_FIX */
session->gpsdata.headingStatus = *field[2];
+#ifndef HEADING_FIX
mask |= (TRACK_SET | MODE_SET);
session->gpsdata.status = STATUS_FIX; /* could be DGPS_FIX, we can't tell */
//session->gpsdata.newdata.mode = MODE_2D;
@@ -518,15 +526,35 @@ static gps_mask_t processTNTHTM(int c UNUSED, char *field[], struct gps_device_t
//session->gpsdata.newdata.mode = MODE_NO_FIX;
session->gpsdata.newdata.pitch = atof(field[3]);
+#else /* HEADING_FIX */
+ // this device does not provide track, mode, or status - we have to rely on other devices for that!
+// mask |= (TRACK_SET | MODE_SET);
+// session->gpsdata.status = STATUS_FIX; /* could be DGPS_FIX, we can't tell */
+// session->gpsdata.newdata.mode = MODE_2D;
+
+ session->gpsdata.fix.pitch = atof(field[3]);
+#endif /* HEADING_FIX */
session->gpsdata.pitchStatus = *field[4];
+#ifndef HEADING_FIX
session->gpsdata.newdata.roll = atof(field[5]);
+#else /* HEADING_FIX */
+ session->gpsdata.fix.roll = atof(field[5]);
+#endif /* HEADING_FIX */
session->gpsdata.rollStatus = *field[6];
+#ifndef HEADING_FIX
session->gpsdata.newdata.dip = atof(field[7]);
+#else /* HEADING_FIX */
+ session->gpsdata.fix.dip = atof(field[7]);
+#endif /* HEADING_FIX */
session->gpsdata.horzField = atof(field[8]);
+#ifndef HEADING_FIX
//gpsd_report(5, "Heading %lf %c.\n", session->gpsdata.fix.track, session->gpsdata.fix.headingStatus);
+#else /* HEADING_FIX */
+ //gpsd_report(5, "Heading %lf %c.\n", session->gpsdata.fix.heading, session->gpsdata.fix.headingStatus);
+#endif /* HEADING_FIX */
return mask;
}
#endif /* TNT_ENABLE */