summaryrefslogtreecommitdiff
path: root/nmea_parse.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2007-12-10 08:38:30 +0000
committerEric S. Raymond <esr@thyrsus.com>2007-12-10 08:38:30 +0000
commit1af0caebf3e60bf5bfcfeea878a6f2236b5f22ca (patch)
tree8943f88e6b97622330f944c0571e95b53b0eacd1 /nmea_parse.c
parent611204b280f1f8c9167ebaad5b407be4534cf019 (diff)
downloadgpsd-1af0caebf3e60bf5bfcfeea878a6f2236b5f22ca.tar.gz
Improved error and rpgress reporting, plus a typo fix.
Diffstat (limited to 'nmea_parse.c')
-rw-r--r--nmea_parse.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/nmea_parse.c b/nmea_parse.c
index 0e715500..7038457b 100644
--- a/nmea_parse.c
+++ b/nmea_parse.c
@@ -151,8 +151,10 @@ static gps_mask_t processGPRMC(int count, char *field[], struct gps_device_t *se
merge_hhmmss(field[1], session);
mask |= TIME_SET;
session->gpsdata.fix.time = (double)mkgmtime(&session->driver.nmea.date)+session->driver.nmea.subseconds;
- if (!GPS_TIME_EQUAL(session->gpsdata.sentence_time, session->gpsdata.fix.time))
+ if (!GPS_TIME_EQUAL(session->gpsdata.sentence_time, session->gpsdata.fix.time)) {
mask |= CYCLE_START_SET;
+ gpsd_report(LOG_PROG, "GPRMC starts a reporting cycle.\n");
+ }
session->gpsdata.sentence_time = session->gpsdata.fix.time;
}
do_lat_lon(&field[3], &session->gpsdata);
@@ -219,8 +221,10 @@ static gps_mask_t processGPGLL(int count, char *field[], struct gps_device_t *se
else {
mask = TIME_SET;
session->gpsdata.fix.time = (double)mkgmtime(&session->driver.nmea.date)+session->driver.nmea.subseconds;
- if (!GPS_TIME_EQUAL(session->gpsdata.sentence_time, session->gpsdata.fix.time))
+ if (!GPS_TIME_EQUAL(session->gpsdata.sentence_time, session->gpsdata.fix.time)) {
mask |= CYCLE_START_SET;
+ gpsd_report(LOG_PROG, "GPGLL starts a reporting cycle.\n");
+ }
session->gpsdata.sentence_time = session->gpsdata.fix.time;
}
do_lat_lon(&field[1], &session->gpsdata);
@@ -271,7 +275,6 @@ static gps_mask_t processGPGGA(int c UNUSED, char *field[], struct gps_device_t
gps_mask_t mask;
session->gpsdata.status = atoi(field[6]);
- gpsd_report(LOG_PROG, "GPGGA sets status %d\n", session->gpsdata.status);
mask = STATUS_SET;
if (session->gpsdata.status > STATUS_NO_FIX) {
char *altitude;
@@ -283,8 +286,10 @@ static gps_mask_t processGPGGA(int c UNUSED, char *field[], struct gps_device_t
else {
mask |= TIME_SET;
session->gpsdata.fix.time = (double)mkgmtime(&session->driver.nmea.date)+session->driver.nmea.subseconds;
- if (!GPS_TIME_EQUAL(session->gpsdata.sentence_time, session->gpsdata.fix.time))
+ if (!GPS_TIME_EQUAL(session->gpsdata.sentence_time, session->gpsdata.fix.time)) {
mask |= CYCLE_START_SET;
+ gpsd_report(LOG_PROG, "GPGGA starts a reporting cycle.\n");
+ }
session->gpsdata.sentence_time = session->gpsdata.fix.time;
}
do_lat_lon(&field[2], &session->gpsdata);
@@ -337,7 +342,7 @@ static gps_mask_t processGPGGA(int c UNUSED, char *field[], struct gps_device_t
session->gpsdata.separation = wgs84_separation(session->gpsdata.fix.latitude,session->gpsdata.fix.longitude);
}
}
- gpsd_report(LOG_PROG, "GPGGA sets mode %d\n", session->gpsdata.fix.mode);
+ gpsd_report(LOG_PROG, "GPGGA sets status %d and mode %d (%s)\n", session->gpsdata.status, session->gpsdata.fix.mode, ((mask&MODE_SET)!=0) ? "changed" : "unchanged");
return mask;
}
@@ -530,8 +535,10 @@ static gps_mask_t processGPZDA(int c UNUSED, char *field[], struct gps_device_t
session->driver.nmea.date.tm_mon = atoi(field[3])-1;
session->driver.nmea.date.tm_mday = atoi(field[2]);
session->gpsdata.fix.time = (double)mkgmtime(&session->driver.nmea.date)+session->driver.nmea.subseconds;
- if (!GPS_TIME_EQUAL(session->gpsdata.sentence_time, session->gpsdata.fix.time))
+ if (!GPS_TIME_EQUAL(session->gpsdata.sentence_time, session->gpsdata.fix.time)) {
mask |= CYCLE_START_SET;
+ gpsd_report(LOG_PROG, "GPZDA starts a reporting cycle.\n");
+ }
session->gpsdata.sentence_time = session->gpsdata. fix.time;
return mask;
}