summaryrefslogtreecommitdiff
path: root/nmea_parse.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2006-08-31 20:50:59 +0000
committerEric S. Raymond <esr@thyrsus.com>2006-08-31 20:50:59 +0000
commit84115883abcc6e083b367c5b1e59215784f87f3e (patch)
treeabdc4d1892290bedd2cddcdad1538b5b10849482 /nmea_parse.c
parentc61e42306cf42981e34d1dae844bb90861e5aced (diff)
downloadgpsd-84115883abcc6e083b367c5b1e59215784f87f3e.tar.gz
Design decision: Trie North data gets mapped into existing fields (track, etc)
...rather than new ones like heading. This gets rid of the HEADING_FIX code contributed but not compiled in by default. Also, fix a place in the zodiac driver that sets a fix rather than newdata member.
Diffstat (limited to 'nmea_parse.c')
-rw-r--r--nmea_parse.c54
1 files changed, 14 insertions, 40 deletions
diff --git a/nmea_parse.c b/nmea_parse.c
index e5a131a0..07630be7 100644
--- a/nmea_parse.c
+++ b/nmea_parse.c
@@ -512,53 +512,27 @@ 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
+ /*
+ * Heading maps to track.
+ * Pitch maps to climb.
+ * Roll maps to speed.
+ * Dip maps to altitude.
+ */
+ session->gpsdata.newdata.time = timestamp();
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;
- session->gpsdata.newdata.mode = MODE_2D;
- //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.newdata.climb = atof(field[3]);
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.newdata.speed = atof(field[5]);
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.fix.altitude = atof(field[7]);
session->gpsdata.horzField = atof(field[8]);
+ session->gpsdata.newdata.mode = MODE_2D;
+ mask |= (TRACK_SET | MODE_SET | TRACK_SET | SPEED_SET | CLIMB_SET | ALTITUDE_SET);
+ session->gpsdata.status = STATUS_FIX; /* could be DGPS_FIX */
-#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 */
+ gpsd_report(5, "Heading %lf %c.\n", session->gpsdata.fix.track, session->gpsdata.fix.headingStatus);
return mask;
}
#endif /* TNT_ENABLE */