From ccdf4e5641f8847cd49ead381e21b3d28cd0bcc2 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Tue, 20 Apr 2010 22:32:55 -0400 Subject: Clear DOPs only when we get a skyview report. This solves the disappearing epx/epy bug on SiRFs, but it was actually a systemic problem that affected several drivers. Navigation solution messages were clearing DOPs, making it impossible for the error modeller to compute estimates. New logic: Clear DOPs only when we get a skyview report. They'll be regenerated by our visibility-matrix calculation when the skyview sentence is analyzed. If a sentence from the device supplies a DOP between the time the visibility calculation is done and when the next fix is reported, it will override our computed value. This might change later! This change required a regression-test rebuild. --- driver_zodiac.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'driver_zodiac.c') diff --git a/driver_zodiac.c b/driver_zodiac.c index 50ac8d23..a96d8f65 100644 --- a/driver_zodiac.c +++ b/driver_zodiac.c @@ -262,9 +262,10 @@ static gps_mask_t handle1003(struct gps_device_t *session) if ((n < 0) || (n > 12)) return 0; + gpsd_zero_satellites(&session->gpsdata); + /* ticks = getzlong(6); */ /* sequence = getzword(8); */ - clear_dop(&session->gpsdata.dop); session->gpsdata.dop.gdop = (unsigned int)getzword(9) * 1e-2; session->gpsdata.dop.pdop = (unsigned int)getzword(10) * 1e-2; session->gpsdata.dop.hdop = (unsigned int)getzword(11) * 1e-2; -- cgit v1.2.1