summaryrefslogtreecommitdiff
path: root/libgps.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-09-03 10:16:43 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-09-03 10:16:43 +0000
commitff1a623dbdca3fa26de67d88739d9a039b8e39ea (patch)
treee5dd06d01abeba8e9210f65f79d4c19eeeb4cb94 /libgps.c
parentd5755a55b8681c04ee0de3dc683124e581e47a9b (diff)
downloadgpsd-ff1a623dbdca3fa26de67d88739d9a039b8e39ea.tar.gz
Split eph into epx and epy internally...
...but still report eph by re-mixing them in the JSON dumper. This was worth doing because all regression tests still pass, showing that visible behavior for old-protocol users gas not changed.
Diffstat (limited to 'libgps.c')
-rw-r--r--libgps.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libgps.c b/libgps.c
index 628a0b6a..ededeb34 100644
--- a/libgps.c
+++ b/libgps.c
@@ -156,7 +156,7 @@ int gps_unpack(char *buf, struct gps_data_t *gpsdata)
}
break;
case 'E':
- gpsdata->epe = gpsdata->fix.eph = gpsdata->fix.epv = NAN;
+ gpsdata->epe = gpsdata->fix.epx = gpsdata->fix.epy = gpsdata->fix.epv = NAN;
/* epe should always be present if eph or epv is */
if (sp[2] != '?') {
char epe[20], eph[20], epv[20];
@@ -164,7 +164,8 @@ int gps_unpack(char *buf, struct gps_data_t *gpsdata)
#define DEFAULT(val) (val[0] == '?') ? NAN : atof(val)
/*@ +floatdouble @*/
gpsdata->epe = DEFAULT(epe);
- gpsdata->fix.eph = DEFAULT(eph);
+ gpsdata->fix.epx = DEFAULT(eph);
+ gpsdata->fix.epy = DEFAULT(eph);
gpsdata->fix.epv = DEFAULT(epv);
/*@ -floatdouble @*/
#undef DEFAULT
@@ -249,7 +250,8 @@ int gps_unpack(char *buf, struct gps_data_t *gpsdata)
nf.longitude = DEFAULT(lon);
nf.ept = DEFAULT(ept);
nf.altitude = DEFAULT(alt);
- nf.eph = DEFAULT(eph);
+ /* designed before we split eph into epx+epy */
+ nf.epx = nf.epy = DEFAULT(eph);
nf.epv = DEFAULT(epv);
nf.track = DEFAULT(track);
nf.speed = DEFAULT(speed);
@@ -265,7 +267,7 @@ int gps_unpack(char *buf, struct gps_data_t *gpsdata)
nf.mode = (alt[0] == '?') ? MODE_2D : MODE_3D;
if (alt[0] != '?')
gpsdata->set |= ALTITUDE_SET | CLIMB_SET;
- if (isnan(nf.eph)==0)
+ if (isnan(nf.epx)==0 && isnan(nf.epy)==0)
gpsdata->set |= HERR_SET;
if (isnan(nf.epv)==0)
gpsdata->set |= VERR_SET;