diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2009-09-03 10:16:43 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2009-09-03 10:16:43 +0000 |
commit | ff1a623dbdca3fa26de67d88739d9a039b8e39ea (patch) | |
tree | e5dd06d01abeba8e9210f65f79d4c19eeeb4cb94 /libgps.c | |
parent | d5755a55b8681c04ee0de3dc683124e581e47a9b (diff) | |
download | gpsd-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.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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; |