From 0e42eb0c4a64a1815011fed0c47da1f48067fd78 Mon Sep 17 00:00:00 2001 From: "Gary E. Miller" Date: Tue, 11 Sep 2018 16:46:20 -0700 Subject: Add regression for hemisphere GPS. Fix detection of empty GPHDT. A GPHDT with no heading was output as a heading of 0.00. --- driver_nmea0183.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'driver_nmea0183.c') diff --git a/driver_nmea0183.c b/driver_nmea0183.c index b47e8c16..5604e045 100644 --- a/driver_nmea0183.c +++ b/driver_nmea0183.c @@ -1109,9 +1109,22 @@ static gps_mask_t processHDT(int c UNUSED, char *field[], * It is followed by a mandatory nmea_checksum. */ gps_mask_t mask; + double heading; + mask = ONLINE_SET; - session->gpsdata.attitude.heading = safe_atof(field[1]); + if ( 0 == strlen(field[1])) { + /* no data */ + return mask; + } + heading = safe_atof(field[1]); + if ((0.0 > heading) || (360.0 < heading)) { + /* bad data */ + return mask; + } + /* good data */ + session->gpsdata.attitude.heading = heading; + session->gpsdata.attitude.mag_st = '\0'; session->gpsdata.attitude.pitch = NAN; session->gpsdata.attitude.pitch_st = '\0'; @@ -1135,9 +1148,9 @@ static gps_mask_t processHDT(int c UNUSED, char *field[], mask |= (ATTITUDE_SET); gpsd_log(&session->context->errout, LOG_RAW, - "time %.3f, heading %lf.\n", - session->newdata.time, - session->gpsdata.attitude.heading); + "time %.3f, heading %lf.\n", + session->newdata.time, + session->gpsdata.attitude.heading); return mask; } -- cgit v1.2.1