diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2016-01-29 12:50:35 -0500 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2016-01-29 12:50:35 -0500 |
commit | efaf1007787d5a597be0926e2a694a4867af953a (patch) | |
tree | aabc8b72c35f64b94c3e354fe276fcd46cf8c863 | |
parent | cfad4675e188afc0cb4c7841b688bda81a2f7e7e (diff) | |
download | gpsd-efaf1007787d5a597be0926e2a694a4867af953a.tar.gz |
By popular demand, restore STATUS_DGPS_FIX to public interface.
-rw-r--r-- | cgps.c | 11 | ||||
-rw-r--r-- | gps.h | 3 | ||||
-rw-r--r-- | gpsd.h-tail | 6 | ||||
-rw-r--r-- | gpxlogger.c | 31 |
4 files changed, 25 insertions, 26 deletions
@@ -524,16 +524,17 @@ static void update_gps_panel(struct gps_data_t *gpsdata) (void)snprintf(scr, sizeof(scr), "OFFLINE"); } else { newstate = gpsdata->fix.mode; - /* - * DGPS - */ switch (gpsdata->fix.mode) { case MODE_2D: - (void)snprintf(scr, sizeof(scr), "2D FIX (%d secs)", + (void)snprintf(scr, sizeof(scr), "2D %sFIX (%d secs)", + (gpsdata->status == + STATUS_DGPS_FIX) ? "DIFF " : "", (int)(time(NULL) - status_timer)); break; case MODE_3D: - (void)snprintf(scr, sizeof(scr), "3D FIX (%d secs)", + (void)snprintf(scr, sizeof(scr), "3D %sFIX (%d secs)", + (gpsdata->status == + STATUS_DGPS_FIX) ? "DIFF " : "", (int)(time(NULL) - status_timer)); break; default: @@ -1995,7 +1995,8 @@ struct gps_data_t { /* GPS status -- always valid */ int status; /* Do we have a fix? */ #define STATUS_NO_FIX 0 /* no */ -#define STATUS_FIX 1 /* yes */ +#define STATUS_FIX 1 /* yes, without DGPS */ +#define STATUS_DGPS_FIX 2 /* yes, with DGPS */ /* precision of fix -- valid if satellites_used > 0 */ int satellites_used; /* Number of satellites used in solution */ diff --git a/gpsd.h-tail b/gpsd.h-tail index 60592235..cfe1a754 100644 --- a/gpsd.h-tail +++ b/gpsd.h-tail @@ -287,12 +287,6 @@ typedef enum { event_reactivate, } event_t; -/* - * Used internally only in the gpsdata status field; not exported to - * client-side gpsdata structures. Instead this is used to change - * the base U_ERE values used by the error modeler. - */ -#define STATUS_DGPS_FIX 2 /* yes, with DGPS */ #define INTERNAL_SET(n) ((gps_mask_t)(1llu<<(SET_HIGH_BIT+(n)))) #define RAW_IS INTERNAL_SET(1) /* raw pseudoranges available */ diff --git a/gpxlogger.c b/gpxlogger.c index c442587f..2d1decb8 100644 --- a/gpxlogger.c +++ b/gpxlogger.c @@ -87,20 +87,23 @@ static void print_fix(struct gps_data_t *gpsdata, double time) (void)fprintf(logfile," <ele>%f</ele>\n", gpsdata->fix.altitude); (void)fprintf(logfile," <time>%s</time>\n", unix_to_iso8601(time, tbuf, sizeof(tbuf))); - switch (gpsdata->fix.mode) { - case MODE_3D: - (void)fprintf(logfile," <fix>3d</fix>\n"); - break; - case MODE_2D: - (void)fprintf(logfile," <fix>2d</fix>\n"); - break; - case MODE_NO_FIX: - (void)fprintf(logfile," <fix>none</fix>\n"); - break; - default: - /* don't print anything if no fix indicator */ - break; - } + if (gpsdata->status == STATUS_DGPS_FIX) + (void)fprintf(logfile," <fix>dgps</fix>\n"); + else + switch (gpsdata->fix.mode) { + case MODE_3D: + (void)fprintf(logfile," <fix>3d</fix>\n"); + break; + case MODE_2D: + (void)fprintf(logfile," <fix>2d</fix>\n"); + break; + case MODE_NO_FIX: + (void)fprintf(logfile," <fix>none</fix>\n"); + break; + default: + /* don't print anything if no fix indicator */ + break; + } if ((gpsdata->fix.mode > MODE_NO_FIX) && (gpsdata->satellites_used > 0)) (void)fprintf(logfile," <sat>%d</sat>\n", gpsdata->satellites_used); |