summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgps.c11
-rw-r--r--gps.h3
-rw-r--r--gpsd.h-tail6
-rw-r--r--gpxlogger.c31
4 files changed, 25 insertions, 26 deletions
diff --git a/cgps.c b/cgps.c
index 25fd94e3..f4a627cd 100644
--- a/cgps.c
+++ b/cgps.c
@@ -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:
diff --git a/gps.h b/gps.h
index 5602b0dc..cc51cd62 100644
--- a/gps.h
+++ b/gps.h
@@ -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);