summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2005-03-23 06:02:12 +0000
committerEric S. Raymond <esr@thyrsus.com>2005-03-23 06:02:12 +0000
commit961416f2924b8b513f3ebbdfd3b41617bbc6832f (patch)
treeb1cd22f6d73e978529d3a4211bbee77d0687ca4e
parente584d25f5b895c727f46892485a086ddbc1f8d4b (diff)
downloadgpsd-961416f2924b8b513f3ebbdfd3b41617bbc6832f.tar.gz
Better display when fix is not available.
-rw-r--r--xgps.ad2
-rw-r--r--xgps.c53
2 files changed, 41 insertions, 14 deletions
diff --git a/xgps.ad b/xgps.ad
index eb2a11e9..cd3e9a84 100644
--- a/xgps.ad
+++ b/xgps.ad
@@ -8,7 +8,7 @@
*eph*labelString: EPH
*epv*labelString: EPV
*climb*labelString: Climb
-*fix_status*labelString: Status
+*status*labelString: Status
*quit*labelString: Quit
*speedunits: mph
*altunits: feet
diff --git a/xgps.c b/xgps.c
index 1a09f11c..67081a5b 100644
--- a/xgps.c
+++ b/xgps.c
@@ -143,15 +143,15 @@ static void build_gui(Widget toplevel)
XtSetArg(args[0], XmNorientation, XmHORIZONTAL);
rowColumn_11 = XtCreateManagedWidget("time", xmRowColumnWidgetClass, left, args, 1);
- rowColumn_12 = XtCreateManagedWidget("->fix.latitude", xmRowColumnWidgetClass, left, args, 1);
- rowColumn_13 = XtCreateManagedWidget("->fix.longitude", xmRowColumnWidgetClass, left, args, 1);
- rowColumn_14 = XtCreateManagedWidget("->fix.altitude", xmRowColumnWidgetClass, left, args, 1);
+ rowColumn_12 = XtCreateManagedWidget("latitude", xmRowColumnWidgetClass, left, args, 1);
+ rowColumn_13 = XtCreateManagedWidget("longitude", xmRowColumnWidgetClass, left, args, 1);
+ rowColumn_14 = XtCreateManagedWidget("altitude", xmRowColumnWidgetClass, left, args, 1);
rowColumn_15 = XtCreateManagedWidget("speed", xmRowColumnWidgetClass, left, args, 1);
rowColumn_16 = XtCreateManagedWidget("track", xmRowColumnWidgetClass, left, args, 1);
rowColumn_17 = XtCreateManagedWidget("eph", xmRowColumnWidgetClass, left, args, 1);
rowColumn_18 = XtCreateManagedWidget("epv", xmRowColumnWidgetClass, left, args, 1);
rowColumn_19 = XtCreateManagedWidget("climb", xmRowColumnWidgetClass, left, args, 1);
- rowColumn_20 = XtCreateManagedWidget("fix_status", xmRowColumnWidgetClass, left, args, 1);
+ rowColumn_20 = XtCreateManagedWidget("status", xmRowColumnWidgetClass, left, args, 1);
rowColumn_21 = XtCreateManagedWidget("quit", xmRowColumnWidgetClass, left, args, 1);
label_1 = XtCreateManagedWidget("Time ", xmLabelWidgetClass, rowColumn_11, args, 0);
@@ -268,23 +268,50 @@ static void update_panel(struct gps_data_t *gpsdata, char *message)
XmStringFree(string[i]);
}
/* here are the value fields */
- unix_to_iso8661(gpsdata->fix.time, s);
+ if (gpsdata->valid & TIME_SET)
+ unix_to_iso8661(gpsdata->fix.time, s);
+ else
+ strcpy(s, "n/a");
XmTextFieldSetString(text_1, s);
- sprintf(s, "%f %c", fabsf(gpsdata->fix.latitude), (gpsdata->fix.latitude < 0) ? 'S' : 'N');
+ if (gpsdata->fix.mode >= MODE_2D)
+ sprintf(s, "%f %c", fabsf(gpsdata->fix.latitude), (gpsdata->fix.latitude < 0) ? 'S' : 'N');
+ else
+ strcpy(s, "n/a");
XmTextFieldSetString(text_2, s);
- sprintf(s, "%f %c", fabsf(gpsdata->fix.longitude), (gpsdata->fix.longitude < 0) ? 'W' : 'E');
+ if (gpsdata->fix.mode >= MODE_2D)
+ sprintf(s, "%f %c", fabsf(gpsdata->fix.longitude), (gpsdata->fix.longitude < 0) ? 'W' : 'E');
+ else
+ strcpy(s, "n/a");
XmTextFieldSetString(text_3, s);
- sprintf(s, "%f %s",gpsdata->fix.altitude*altunits->factor, altunits->legend);
+ if (gpsdata->fix.mode == MODE_3D)
+ sprintf(s, "%f %s",gpsdata->fix.altitude*altunits->factor, altunits->legend);
+ else
+ strcpy(s, "n/a");
XmTextFieldSetString(text_4, s);
- sprintf(s, "%f %s", gpsdata->fix.speed*speedunits->factor, speedunits->legend);
+ if (gpsdata->fix.track != TRACK_NOT_VALID)
+ sprintf(s, "%f %s", gpsdata->fix.speed*speedunits->factor, speedunits->legend);
+ else
+ strcpy(s, "n/a");
XmTextFieldSetString(text_5, s);
- sprintf(s, "%f degrees", gpsdata->fix.track);
+ if (gpsdata->fix.track != TRACK_NOT_VALID)
+ sprintf(s, "%f degrees", gpsdata->fix.track);
+ else
+ strcpy(s, "n/a");
XmTextFieldSetString(text_6, s);
- sprintf(s, "%f %s", gpsdata->fix.eph * altunits->factor, altunits->legend);
+ if (gpsdata->fix.eph)
+ sprintf(s, "%f %s", gpsdata->fix.eph * altunits->factor, altunits->legend);
+ else
+ strcpy(s, "n/a");
XmTextFieldSetString(text_7, s);
- sprintf(s, "%f %s", gpsdata->fix.epv * altunits->factor, altunits->legend);
+ if (gpsdata->fix.epv)
+ sprintf(s, "%f %s", gpsdata->fix.epv * altunits->factor, altunits->legend);
+ else
+ strcpy(s, "n/a");
XmTextFieldSetString(text_8, s);
- sprintf(s, "%f %s/sec", gpsdata->fix.climb * altunits->factor, altunits->legend);
+ if (gpsdata->fix.mode == MODE_3D)
+ sprintf(s, "%f %s/sec", gpsdata->fix.climb * altunits->factor, altunits->legend);
+ else
+ strcpy(s, "n/a");
XmTextFieldSetString(text_9, s);
if (!gpsdata->online) {