diff options
author | Gary E. Miller <gem@rellim.com> | 2019-03-25 15:59:44 -0700 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2019-03-25 16:37:45 -0700 |
commit | 57eab188b60fb2a47362142c6dc4da1249d8fd11 (patch) | |
tree | d345e85c937cf9c7bf8740cac87f0f4ddeadab42 /driver_sirf.c | |
parent | 1dbb033ec622d0cbe95ae9d12ce2e373ced31100 (diff) | |
download | gpsd-57eab188b60fb2a47362142c6dc4da1249d8fd11.tar.gz |
daemon side: stop using VERR_SET. Exposed a bug in sirf driver.
It seems the gpsd epc is more pessimistic than from the GPS.
Diffstat (limited to 'driver_sirf.c')
-rw-r--r-- | driver_sirf.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/driver_sirf.c b/driver_sirf.c index 1c587c44..83555055 100644 --- a/driver_sirf.c +++ b/driver_sirf.c @@ -716,7 +716,7 @@ static gps_mask_t sirf_msg_67_1(struct gps_device_t *session, ehpe = getbeu32(buf, 86); /* Estimated horizontal position error * 100 */ /* Estimated vertical position error * 100 */ - session->newdata.epv = getbeu16(buf, 90) / 100.0; + session->newdata.epv = getbeu32(buf, 90) / 100.0; /* Estimated horizontal velocity error * 100 */ session->newdata.eps = getbeu16(buf, 94) / 100.0; mask |= SPEEDERR_SET; @@ -1560,6 +1560,7 @@ static gps_mask_t sirf_msg_geodetic(struct gps_device_t *session, unsigned short navtype; gps_mask_t mask = 0; double eph; + double dbl_tmp; if (len != 91) return 0; @@ -1592,8 +1593,9 @@ static gps_mask_t sirf_msg_geodetic(struct gps_device_t *session, session->newdata.epx = session->newdata.epy = eph / sqrt(2); mask |= HERR_SET; } - if ((session->newdata.epv = getbes32(buf, 54) * 1e-2) > 0) - mask |= VERR_SET; + dbl_temp = getbes32(buf, 54) * 1e-2; + if (0.01 < dbl_temp) + session->newdata.epv = dbl_temp; if ((session->newdata.eps = getbes16(buf, 62) * 1e-2) > 0) mask |= SPEEDERR_SET; |