summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2005-07-08 04:09:31 +0000
committerEric S. Raymond <esr@thyrsus.com>2005-07-08 04:09:31 +0000
commit6c208a7bffe33ad4471f147765460161c4cab932 (patch)
tree6fa621e97ed1d6c60822ed306471e62d58519db9
parent5cc410a8ba5a00510fc3fdd052b808ae64657278 (diff)
downloadgpsd-6c208a7bffe33ad4471f147765460161c4cab932.tar.gz
Report uniform 95% confidence intervals.
-rw-r--r--HACKING38
-rw-r--r--TODO41
-rw-r--r--garmin.c8
-rw-r--r--gps.h4
-rw-r--r--gpsd.h8
-rw-r--r--libgpsd_core.c4
-rw-r--r--nmea_parse.c10
-rw-r--r--test/garmin17n.log.chk6
-rw-r--r--test/garmin38.log.chk18
-rw-r--r--test/garmin48.log.chk26
-rw-r--r--test/tn204.log.chk14
-rw-r--r--test/zodiac.log.chk42
-rw-r--r--www/gps-hacking.html3
-rw-r--r--zodiac.c12
14 files changed, 114 insertions, 120 deletions
diff --git a/HACKING b/HACKING
index 5c47308a..872b22ff 100644
--- a/HACKING
+++ b/HACKING
@@ -320,9 +320,31 @@ Don't undo this by using malloc/free in a driver or anywhere else.
** Error modeling
-To estimate errors (which we must do if the GPS isn't nice like a
-Garmin and reports them in meters), we need to multiply an estimate of
-User Equivalent Range Error (UERE) by the appropriate dilution factor,
+gpsd drivers are expected to report position error estimates with
+a 95% confidence interval. A few devices (Garmins and Zodiacs)
+actually report these. For the rest we have to compute them
+using an error model.
+
+Here's a table that explains how to convert from various
+confidence interval units you might see in vendor documentation.
+
+sqr(alpha) Probability Notation
+-----------------------------------------------------------------------
+ 1.00 39.4% 1-sigma or standard ellipse
+ 1.18 50.0% Circular Error Probable (CEP)
+ 1.414 63.2% Distance RMS (DRMS)
+ 2.00 86.5% 2 sigma ellipse
+ 2.45 95.0% 95% confidence level
+ 2.818 98.2% 2DRMS
+ 3.00 98.9% 3 sigma ellipse
+------------------------------------------------------------------------
+
+There are constants in gpsd,h for these factors.
+
+To estimate errors (which we must do if the GPS isn't nice and reports
+them in meters with a documented confidence interval), we need to
+multiply an estimate of User Equivalent Range Error (UERE) by the
+appropriate dilution factor,
The UERE estimate is usually computed as the square root of the sum of
the squares of individual error estimates from a physical model. The
@@ -345,8 +367,9 @@ Code range noise (C/A) 0.3m
Code range noise (P-code) 0.03m
Phase range 0.005m
-We're assuming these are 1-sigma error ranges. This needs to
-be checked in the sources.
+We're assuming these are 2-sigma error ranges. This needs to
+be checked in the sources. If they're 1-sigma the resulting UEREs
+need to be doubled.
See http://www.seismo.berkeley.edu/~battag/GAMITwrkshp/lecturenotes/unit1/
for discussion.
@@ -383,10 +406,10 @@ receiver clock error. Thus:
UERE = sqrt(1.5^2 + 1.2^2 + 0.3^2) = 1.8
-which we round up to 2.
+which we round up to 2 (95% confidence).
Due to multipath uncertainty, Carl says 4.1 is too low and recommends
-a non-DGPS UERE estimate of 8. That's what we use.
+a non-DGPS UERE estimate of 8 (95% confidence). That's what we use.
** Impact of DGPS on error estimates
@@ -422,7 +445,6 @@ Wolfgang S. Rupprecht:
> reference, I fear that the average user will be getting the same 8m or
> worse accuracy by using dgpsip.
-
** Adding new GPS types
Almost all GPSes speak NMEA 0183. However, it may occasionally be necessary
diff --git a/TODO b/TODO
index 6556b4c3..12cbeb10 100644
--- a/TODO
+++ b/TODO
@@ -151,47 +151,6 @@ BUS="usb" SYSFS{vendor}="1163" SYSFS{product}="0100" \
More generally, the hotplug code we have is Linux-specific. OpenBSD
(at least) features a hotplug daemon with similar capabilities.
-*** The mess near error modeling
-
-One of my goals has been to report an uncertainty along with every
-dimension of PVT, so that the return from the GPS actually (and
-realistically) describes the volume of kinematic state space within
-which it is located at 1-sigma or 66% confidence. (Because the errors
-are taken to be normally distributed, we can square the error to get
-2-sigma or 95% confidence.)
-
-There are several problems with this.
-
-A. I don't know how to derive or estimate uncertainty of time in the
-general case. There are clock drift and bias fields in the SiRF
-binary protocol, but I don't know how to interpret these. Does
-anyone?
-
-B. Only Garmin devices report estimated position uncertainties in meters.
-They won't say what the confidence interval is, but it is generally
-believed to be 1-sigma. See <http://gpsinformation.net/main/epenew.txt>.
-
-Here is what I am presently doing in the new E command:
-
-1. I pass up the Garmin PGRME fields (uncertainty in meters) if
- they're available.
-
-2. Otherwise, I apply the error model described in the HACKING dociment.
-
-What non-Garmin GPSes will return in the E command is UERE multiplied
-by PDOP/HDOP/VDOP. Annoyingly, SiRF binary mode only offers HDOP,
-one respect in which it is functionally inferior to SiRF NMEA. We
-compute VDOP and PDOP using an algorithm supplied by SiRF.
-
-I don't know, because my sources didn't give, the confidence level
-associated with the range uncertainties in gpsd.h. My educated guess
-is that they are 1-sigma (66%), and that's what the gpsd documentation
-now says, but it needs to be confirmed.
-
-This area needs some attention from somebody who cares a lot about
-GPS accuracy and is willing to do research on error budgets to pin
-down the numbers and confidence levels.
-
*** Do the research to figure out just what is going on with status bits
NMEA actually has *four* kinds of validity bits: Mode, Status, the
diff --git a/garmin.c b/garmin.c
index 0c7f31fa..c945c839 100644
--- a/garmin.c
+++ b/garmin.c
@@ -290,10 +290,10 @@ static gps_mask_t PrintPacket(struct gps_device_t *session, Packet_t *pkt)
// gpsd sign is opposite of garmin sign
session->gpsdata.separation = -pvt->msl_hght;
- // estimated position error in meters (sigma unknown)
- session->gpsdata.epe = pvt->epe;
- session->gpsdata.newdata.eph = pvt->eph;
- session->gpsdata.newdata.epv = pvt->epv;
+ // Estimated position error in meters.
+ session->gpsdata.epe = pvt->epe * (GPSD_CONFIDENCE/2);
+ session->gpsdata.newdata.eph = pvt->eph * (GPSD_CONFIDENCE/2);
+ session->gpsdata.newdata.epv = pvt->epv * (GPSD_CONFIDENCE/2);
// convert lat/lon to knots
session->gpsdata.newdata.speed
diff --git a/gps.h b/gps.h
index 1478ca76..896ff98f 100644
--- a/gps.h
+++ b/gps.h
@@ -42,6 +42,8 @@ extern "C" {
* GPRMC/GPGGA/GPGLL during a single cycle; thus, they may have different
* timestamps and some data in this structure can be up to 1 cycle (usually
* 1 second) older than the fix time.
+ *
+ * Error estimates are at 95% confidence.
*/
struct gps_fix_t {
double time; /* Time of update, seconds since Unix epoch */
@@ -125,7 +127,7 @@ struct gps_data_t {
double pdop, hdop, vdop, tdop, gdop; /* Dilution of precision */
/* redundant with the estimate elments in the fix structure */
- double epe; /* estimated spherical position error, 2 sigma (meters) */
+ double epe; /* spherical position error, 95% confidence (meters) */
/* satellite status -- valid when satellites > 0 */
int satellites; /* # of satellites in view */
diff --git a/gpsd.h b/gpsd.h
index 87b70cdd..34e65125 100644
--- a/gpsd.h
+++ b/gpsd.h
@@ -22,6 +22,14 @@
#define NMEA_MAX 82 /* max length of NMEA sentence */
#define NMEA_BIG_BUF (2*NMEA_MAX+1) /* longer than longest NMEA sentence */
+/* factors for constants for converting among confidence interval units */
+#define CEP50_SIGMA 1.18
+#define DRMS_SIGMA 1.414
+#define CEP95_SIGMA 2.45
+
+/* this is where we choose the confidence level to use in reports */
+#define GPSD_CONFIDENCE CEP95_SIGMA
+
/*
* From the RCTM104 standard:
*
diff --git a/libgpsd_core.c b/libgpsd_core.c
index 23c0e078..58db19ae 100644
--- a/libgpsd_core.c
+++ b/libgpsd_core.c
@@ -377,8 +377,8 @@ static void apply_error_model(struct gps_device_t *session)
* Some drivers set the position-error fields. Only the Zodiacs
* report speed error. Nobody reports track error or climb error.
*/
-#define UERE_NO_DGPS 8.0 /* meters, 2-sigma confidence */
-#define UERE_WITH_DGPS 2.0 /* meters, 2-sigma confidence */
+#define UERE_NO_DGPS 8.0 /* meters, 95% confidence */
+#define UERE_WITH_DGPS 2.0 /* meters, 95% confidence */
double uere = (session->gpsdata.status == STATUS_DGPS_FIX ? UERE_WITH_DGPS : UERE_NO_DGPS);
session->gpsdata.fix.ept = 0.005;
diff --git a/nmea_parse.c b/nmea_parse.c
index 1787ce08..552c3335 100644
--- a/nmea_parse.c
+++ b/nmea_parse.c
@@ -418,12 +418,12 @@ static gps_mask_t processPGRME(int c UNUSED, char *field[], struct gps_device_t
5 = spherical error estimate
6 = units
*
- * Garmin won't say, but the general belief is that these are 1-sigma.
- * See <http://gpsinformation.net/main/epenew.txt>.
+ * Garmin won't say, but the general belief is that these are 50% CEP.
+ * We follow the advice at <http://gpsinformation.net/main/errors.htm>.
*/
- session->gpsdata.newdata.eph = atof(field[1]);
- session->gpsdata.newdata.epv = atof(field[3]);
- session->gpsdata.epe = atof(field[5]);
+ session->gpsdata.newdata.eph = atof(field[1]) * (GPSD_CONFIDENCE/CEP50_SIGMA);
+ session->gpsdata.newdata.epv = atof(field[3]) * (GPSD_CONFIDENCE/CEP50_SIGMA);
+ session->gpsdata.epe = atof(field[5]) * (GPSD_CONFIDENCE/CEP50_SIGMA);
return HERR_SET | VERR_SET | PERR_SET;
}
diff --git a/test/garmin17n.log.chk b/test/garmin17n.log.chk
index 0ad0c944..a836bfd5 100644
--- a/test/garmin17n.log.chk
+++ b/test/garmin17n.log.chk
@@ -8,7 +8,7 @@ GPSD,O=GSA 1110965882.00 0.005 52.219065 21.010852 137.20 1.80 2.60 226.0000
$GPGSV,3,2,12,18,50,135,50,19,15,291,46,21,59,069,51,22,30,169,49*75
$PGRME,1.7,M,2.4,M,3.0,M*2D
$GPGLL,5213.1439,N,02100.6511,E,093802,A,D*48
-GPSD,O=GLL 1110965882.00 0.005 52.219065 21.010852 137.20 1.70 2.40 226.0000 0.000 0.000 ? ? ?
+GPSD,O=GLL 1110965882.00 0.005 52.219065 21.010852 137.20 3.53 4.98 226.0000 0.000 0.000 ? ? ?
$GPVTG,226,T,222,M,000.0,N,0000.0,K,D*12
$PGRMV,0.0,0.0,0.0*5C
$PGRMF,290,293895,160305,093802,13,5213.1439,N,02100.6511,E,A,2,0,226,2,1*11
@@ -19,12 +19,12 @@ GPSD,O=RMC 1110965883.00 0.005 52.219065 21.010852 ? ? ?
$GPGGA,093803,5213.1439,N,02100.6511,E,2,10,0.9,137.2,M,36.2,M,,*42
GPSD,O=GGA 1110965883.00 0.005 52.219065 21.010852 137.20 ? ? 226.0000 0.000 0.000 ? ? ?
$GPGSA,A,3,03,06,15,16,18,19,21,22,,27,29,,1.6,0.9,1.3*34
-GPSD,O=GSA 1110965883.00 0.005 52.219065 21.010852 137.20 1.80 2.60 226.0000 0.000 0.000 ? 3.50 ?
+GPSD,O=GSA 1110965883.00 0.005 52.219065 21.010852 137.20 1.80 2.60 226.0000 0.000 0.000 ? 5.33 ?
$GPGSV,3,3,12,26,14,065,48,27,08,336,38,29,14,048,44,44,18,130,41*78
GPSD,Y=GSV ? 8:18 50 135 50 1:19 15 291 46 1:21 59 69 51 1:22 30 169 49 1:26 14 65 48 0:27 8 336 38 1:29 14 48 44 1:44 18 130 41 0:
$PGRME,1.7,M,2.4,M,3.0,M*2D
$GPGLL,5213.1439,N,02100.6511,E,093803,A,D*49
-GPSD,O=GLL 1110965883.00 0.005 52.219065 21.010852 137.20 1.70 2.40 226.0000 0.000 0.000 ? 3.50 ?
+GPSD,O=GLL 1110965883.00 0.005 52.219065 21.010852 137.20 3.53 4.98 226.0000 0.000 0.000 ? 5.33 ?
$GPVTG,226,T,222,M,000.0,N,0000.0,K,D*12
$PGRMV,0.0,0.0,0.0*5C
$PGRMF,290,293896,160305,093803,13,5213.1439,N,02100.6511,E,A,2,0,226,2,1*13
diff --git a/test/garmin38.log.chk b/test/garmin38.log.chk
index df6c8f62..c0f614fc 100644
--- a/test/garmin38.log.chk
+++ b/test/garmin38.log.chk
@@ -18,7 +18,7 @@ $GPGSV,2,2,08,15,18,138,00,18,20,079,00,25,27,172,46,31,27,263,38*7C
GPSD,Y=GSV ? 8:3 23 224 38 1:9 6 37 0 0:11 17 314 41 1:14 75 15 44 1:15 18 138 0 0:18 20 79 0 0:25 27 172 46 1:31 27 263 38 1:
$PGRME,19.2,M,28.7,M,34.6,M*18
$GPGLL,3348.452,N,11821.143,W,142216,A*38
-GPSD,O=GLL 1034086936.00 0.005 33.807533 -118.352383 38.40 19.20 28.70 353.6000 0.000 0.000 ? ? ?
+GPSD,O=GLL 1034086936.00 0.005 33.807533 -118.352383 38.40 39.86 59.59 353.6000 0.000 0.000 ? ? ?
$PGRMZ,126,f,3*1E
$PGRMM,NAD83*29
$GPBOD,,T,,M,,*47
@@ -29,13 +29,13 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,142218,3348.451,N,11821.144,W,1,05,1.8,38.4,M,-32.4,M,,*41
GPSD,O=GGA 1034086938.00 0.005 33.807517 -118.352400 38.40 ? ? 353.6000 0.000 0.000 ? ? ?
$GPGSA,A,3,03,,11,14,,,25,31,,,,,3.3,1.8,2.8*32
-GPSD,O=GSA 1034086938.00 0.005 33.807517 -118.352400 38.40 14.40 22.40 353.6000 0.000 0.000 161.0638 16.80 ?
+GPSD,O=GSA 1034086938.00 0.005 33.807517 -118.352400 38.40 14.40 22.40 353.6000 0.000 0.000 161.0638 27.13 ?
$GPGSV,2,1,08,03,23,224,43,09,06,037,00,11,17,314,38,14,75,015,44*70
$GPGSV,2,2,08,15,18,138,00,18,20,079,00,25,27,172,39,31,27,263,42*79
GPSD,Y=GSV ? 8:3 23 224 43 1:9 6 37 0 0:11 17 314 38 1:14 75 15 44 1:15 18 138 0 0:18 20 79 0 0:25 27 172 39 1:31 27 263 42 1:
$PGRME,19.2,M,28.7,M,34.6,M*18
$GPGLL,3348.451,N,11821.144,W,142218,A*32
-GPSD,O=GLL 1034086938.00 0.005 33.807517 -118.352400 38.40 19.20 28.70 353.6000 0.000 0.000 161.0638 16.80 ?
+GPSD,O=GLL 1034086938.00 0.005 33.807517 -118.352400 38.40 39.86 59.59 353.6000 0.000 0.000 161.0638 27.13 ?
$PGRMZ,126,f,3*1E
$PGRMM,NAD83*29
$GPBOD,,T,,M,,*47
@@ -46,13 +46,13 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,142220,3348.451,N,11821.142,W,1,05,1.8,37.6,M,-32.4,M,,*41
GPSD,O=GGA 1034086940.00 0.005 33.807517 -118.352367 37.60 ? ? 353.6000 0.000 0.000 ? ? ?
$GPGSA,A,3,03,,11,14,,,25,31,,,,,3.3,1.8,2.8*32
-GPSD,O=GSA 1034086940.00 0.005 33.807517 -118.352367 37.60 14.40 22.40 353.6000 0.000 0.000 155.9391 16.80 ?
+GPSD,O=GSA 1034086940.00 0.005 33.807517 -118.352367 37.60 14.40 22.40 353.6000 0.000 0.000 155.9391 27.13 ?
$GPGSV,2,1,08,03,23,224,43,09,06,037,00,11,17,314,38,14,75,015,43*77
$GPGSV,2,2,08,15,18,138,00,18,20,079,00,25,27,172,39,31,27,263,41*7A
GPSD,Y=GSV ? 8:3 23 224 43 1:9 6 37 0 0:11 17 314 38 1:14 75 15 43 1:15 18 138 0 0:18 20 79 0 0:25 27 172 39 1:31 27 263 41 1:
$PGRME,19.2,M,28.7,M,34.6,M*18
$GPGLL,3348.451,N,11821.142,W,142220,A*3F
-GPSD,O=GLL 1034086940.00 0.005 33.807517 -118.352367 37.60 19.20 28.70 353.6000 0.000 0.000 155.9391 16.80 ?
+GPSD,O=GLL 1034086940.00 0.005 33.807517 -118.352367 37.60 39.86 59.59 353.6000 0.000 0.000 155.9391 27.13 ?
$PGRMZ,123,f,3*1B
$PGRMM,NAD83*29
$GPBOD,,T,,M,,*47
@@ -63,13 +63,13 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,142222,3348.451,N,11821.143,W,1,05,1.8,38.0,M,-32.4,M,,*4B
GPSD,O=GGA 1034086942.00 0.005 33.807517 -118.352383 38.00 ? ? 353.6000 0.000 0.000 ? ? ?
$GPGSA,A,3,03,,11,14,,,25,31,,,,,3.3,1.8,2.8*32
-GPSD,O=GSA 1034086942.00 0.005 33.807517 -118.352383 38.00 14.40 22.40 353.6000 0.000 0.000 167.8240 16.80 ?
+GPSD,O=GSA 1034086942.00 0.005 33.807517 -118.352383 38.00 14.40 22.40 353.6000 0.000 0.000 167.8240 27.13 ?
$GPGSV,2,1,08,03,23,224,42,09,06,037,00,11,17,314,38,14,75,015,43*76
$GPGSV,2,2,08,15,18,138,00,18,20,079,00,25,27,172,40,31,27,263,41*74
GPSD,Y=GSV ? 8:3 23 224 42 1:9 6 37 0 0:11 17 314 38 1:14 75 15 43 1:15 18 138 0 0:18 20 79 0 0:25 27 172 40 1:31 27 263 41 1:
$PGRME,19.2,M,28.9,M,34.7,M*17
$GPGLL,3348.451,N,11821.143,W,142222,A*3C
-GPSD,O=GLL 1034086942.00 0.005 33.807517 -118.352383 38.00 19.20 28.90 353.6000 0.000 0.000 167.8240 16.80 ?
+GPSD,O=GLL 1034086942.00 0.005 33.807517 -118.352383 38.00 39.86 60.00 353.6000 0.000 0.000 167.8240 27.13 ?
$PGRMZ,125,f,3*1D
$PGRMM,NAD83*29
$GPBOD,,T,,M,,*47
@@ -80,11 +80,11 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,142224,3348.451,N,11821.143,W,1,05,1.8,38.0,M,-32.4,M,,*4D
GPSD,O=GGA 1034086944.00 0.005 33.807517 -118.352383 38.00 ? ? 353.6000 0.000 0.000 ? ? ?
$GPGSA,A,3,03,,11,14,,,25,31,,,,,3.3,1.8,2.8*32
-GPSD,O=GSA 1034086944.00 0.005 33.807517 -118.352383 38.00 14.40 22.40 353.6000 0.000 0.000 ? 16.80 ?
+GPSD,O=GSA 1034086944.00 0.005 33.807517 -118.352383 38.00 14.40 22.40 353.6000 0.000 0.000 ? 27.13 ?
$GPGSV,2,1,08,03,23,224,43,09,06,037,00,11,17,314,39,14,75,015,44*71
$GPGSV,2,2,08,15,18,138,00,18,20,079,00,25,27,172,39,31,27,263,40*7B
GPSD,Y=GSV ? 8:3 23 224 43 1:9 6 37 0 0:11 17 314 39 1:14 75 15 44 1:15 18 138 0 0:18 20 79 0 0:25 27 172 39 1:31 27 263 40 1:
$PGRME,19.2,M,28.9,M,34.7,M*17
$GPGLL,3348.451,N,11821.143,W,142224,A*3A
-GPSD,O=GLL 1034086944.00 0.005 33.807517 -118.352383 38.00 19.20 28.90 353.6000 0.000 0.000 ? 16.80 ?
+GPSD,O=GLL 1034086944.00 0.005 33.807517 -118.352383 38.00 39.86 60.00 353.6000 0.000 0.000 ? 27.13 ?
$PGRMZ,125,f,3*1D
diff --git a/test/garmin48.log.chk b/test/garmin48.log.chk
index cf252d23..9d67059d 100644
--- a/test/garmin48.log.chk
+++ b/test/garmin48.log.chk
@@ -12,7 +12,7 @@ $GPGSV,3,3,11,25,20,108,00,27,08,281,00,28,17,339,39,,,,*4C
GPSD,Y=GSV ? 11:1 78 221 47 1:3 9 42 0 0:4 5 242 0 0:6 4 149 0 0:13 37 235 48 1:20 41 333 46 1:22 65 81 46 1:24 2 205 0 0:25 20 108 0 0:27 8 281 0 0:28 17 339 39 1:
$PGRME,9.1,M,15.0,M,12.0,M*21
$GPGLL,4527.458,S,16709.165,E,225309,A*3E
-GPSD,O=GLL 991867988.00 0.005 -45.457633 167.152750 14.70 9.10 15.00 94.5000 0.000 0.000 ? ? ?
+GPSD,O=GLL 991867988.00 0.005 -45.457633 167.152750 14.70 18.89 31.14 94.5000 0.000 0.000 ? ? ?
$PGRMZ,48,f,3*27
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
@@ -23,14 +23,14 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,225310,4527.458,S,16709.165,E,1,05,2.1,14.6,M,1.1,M,,*5B
GPSD,O=GGA 991867990.00 0.005 -45.457633 167.152750 14.60 ? ? 94.5000 0.000 0.000 ? ? ?
$GPGSA,A,3,01,,,,13,20,22,,,,28,,3.1,2.1,2.0*3A
-GPSD,O=GSA 991867990.00 0.005 -45.457633 167.152750 14.60 16.80 16.00 94.5000 0.000 0.000 ? 12.95 ?
+GPSD,O=GSA 991867990.00 0.005 -45.457633 167.152750 14.60 16.80 16.00 94.5000 0.000 0.000 ? 17.85 ?
$GPGSV,3,1,11,01,78,221,47,03,09,042,00,04,05,242,00,06,04,149,00*70
$GPGSV,3,2,11,13,37,235,48,20,41,333,46,22,65,081,46,24,02,205,00*7B
$GPGSV,3,3,11,25,20,108,00,27,08,281,00,28,17,339,39,,,,*4C
GPSD,Y=GSV ? 11:1 78 221 47 1:3 9 42 0 0:4 5 242 0 0:6 4 149 0 0:13 37 235 48 1:20 41 333 46 1:22 65 81 46 1:24 2 205 0 0:25 20 108 0 0:27 8 281 0 0:28 17 339 39 1:
$PGRME,9.1,M,15.0,M,12.0,M*21
$GPGLL,4527.458,S,16709.165,E,225311,A*37
-GPSD,O=GLL 991867990.00 0.005 -45.457633 167.152750 14.60 9.10 15.00 94.5000 0.000 0.000 ? 12.95 ?
+GPSD,O=GLL 991867990.00 0.005 -45.457633 167.152750 14.60 18.89 31.14 94.5000 0.000 0.000 ? 17.85 ?
$PGRMZ,48,f,3*27
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
@@ -41,14 +41,14 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,225312,4527.458,S,16709.165,E,1,05,2.2,14.7,M,1.1,M,,*5B
GPSD,O=GGA 991867992.00 0.005 -45.457633 167.152750 14.70 ? ? 94.5000 0.000 0.000 ? ? ?
$GPGSA,A,3,01,,,,13,20,22,,,,28,,3.2,2.2,2.1*3B
-GPSD,O=GSA 991867992.00 0.005 -45.457633 167.152750 14.70 17.60 16.80 94.5000 0.000 0.000 ? 13.35 ?
+GPSD,O=GSA 991867992.00 0.005 -45.457633 167.152750 14.70 17.60 16.80 94.5000 0.000 0.000 ? 18.25 ?
$GPGSV,3,1,11,01,78,221,47,03,09,042,00,04,05,242,00,06,04,149,00*70
$GPGSV,3,2,11,13,37,235,49,20,41,333,46,22,65,081,46,24,02,205,00*7A
$GPGSV,3,3,11,25,20,108,00,27,08,281,00,28,17,339,39,,,,*4C
GPSD,Y=GSV ? 11:1 78 221 47 1:3 9 42 0 0:4 5 242 0 0:6 4 149 0 0:13 37 235 49 1:20 41 333 46 1:22 65 81 46 1:24 2 205 0 0:25 20 108 0 0:27 8 281 0 0:28 17 339 39 1:
$PGRME,9.2,M,15.0,M,12.6,M*24
$GPGLL,4527.458,S,16709.165,E,225313,A*35
-GPSD,O=GLL 991867992.00 0.005 -45.457633 167.152750 14.70 9.20 15.00 94.5000 0.000 0.000 ? 13.35 ?
+GPSD,O=GLL 991867992.00 0.005 -45.457633 167.152750 14.70 19.10 31.14 94.5000 0.000 0.000 ? 18.25 ?
$PGRMZ,48,f,3*27
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
@@ -59,14 +59,14 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,225314,4527.458,S,16709.165,E,1,05,2.2,14.6,M,1.1,M,,*5C
GPSD,O=GGA 991867994.00 0.005 -45.457633 167.152750 14.60 ? ? 94.5000 0.000 0.000 ? ? ?
$GPGSA,A,3,01,,,,13,20,22,,,,28,,3.2,2.2,2.1*3B
-GPSD,O=GSA 991867994.00 0.005 -45.457633 167.152750 14.60 17.60 16.80 94.5000 0.000 0.000 ? 13.40 ?
+GPSD,O=GSA 991867994.00 0.005 -45.457633 167.152750 14.60 17.60 16.80 94.5000 0.000 0.000 ? 18.35 ?
$GPGSV,3,1,11,01,78,221,47,03,09,042,00,04,05,242,00,06,04,149,00*70
$GPGSV,3,2,11,13,37,235,49,20,41,333,46,22,65,081,46,24,02,205,00*7A
$GPGSV,3,3,11,25,20,108,00,27,08,281,00,28,17,339,39,,,,*4C
GPSD,Y=GSV ? 11:1 78 221 47 1:3 9 42 0 0:4 5 242 0 0:6 4 149 0 0:13 37 235 49 1:20 41 333 46 1:22 65 81 46 1:24 2 205 0 0:25 20 108 0 0:27 8 281 0 0:28 17 339 39 1:
$PGRME,9.2,M,15.0,M,12.6,M*24
$GPGLL,4527.458,S,16709.165,E,225315,A*33
-GPSD,O=GLL 991867994.00 0.005 -45.457633 167.152750 14.60 9.20 15.00 94.5000 0.000 0.000 ? 13.40 ?
+GPSD,O=GLL 991867994.00 0.005 -45.457633 167.152750 14.60 19.10 31.14 94.5000 0.000 0.000 ? 18.35 ?
$PGRMZ,48,f,3*27
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
@@ -77,14 +77,14 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,225316,4527.458,S,16709.165,E,1,05,2.2,14.4,M,1.1,M,,*5C
GPSD,O=GGA 991867996.00 0.005 -45.457633 167.152750 14.40 ? ? 94.5000 0.000 0.000 ? ? ?
$GPGSA,A,3,01,,,,13,20,22,,,,28,,3.2,2.2,2.1*3B
-GPSD,O=GSA 991867996.00 0.005 -45.457633 167.152750 14.40 17.60 16.80 94.5000 0.000 0.000 ? 13.40 ?
+GPSD,O=GSA 991867996.00 0.005 -45.457633 167.152750 14.40 17.60 16.80 94.5000 0.000 0.000 ? 18.35 ?
$GPGSV,3,1,11,01,78,221,47,03,09,042,00,04,05,242,00,06,04,149,00*70
$GPGSV,3,2,11,13,37,235,49,20,40,333,46,22,65,081,46,24,02,205,00*7B
$GPGSV,3,3,11,25,20,108,00,27,08,281,00,28,17,339,39,,,,*4C
GPSD,Y=GSV ? 11:1 78 221 47 1:3 9 42 0 0:4 5 242 0 0:6 4 149 0 0:13 37 235 49 1:20 40 333 46 1:22 65 81 46 1:24 2 205 0 0:25 20 108 0 0:27 8 281 0 0:28 17 339 39 1:
$PGRME,9.2,M,15.0,M,12.6,M*24
$GPGLL,4527.458,S,16709.165,E,225317,A*31
-GPSD,O=GLL 991867996.00 0.005 -45.457633 167.152750 14.40 9.20 15.00 94.5000 0.000 0.000 ? 13.40 ?
+GPSD,O=GLL 991867996.00 0.005 -45.457633 167.152750 14.40 19.10 31.14 94.5000 0.000 0.000 ? 18.35 ?
$PGRMZ,46,f,3*29
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
@@ -95,7 +95,7 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,225318,4527.458,S,16709.165,E,1,05,2.2,14.0,M,1.1,M,,*56
GPSD,O=GGA 991867998.00 0.005 -45.457633 167.152750 14.00 ? ? 94.5000 0.000 0.000 ? ? ?
$GPGSA,A,3,01,,,,13,20,22,,,,28,,3.2,2.2,2.1*3B
-GPSD,O=GSA 991867998.00 0.005 -45.457633 167.152750 14.00 17.60 16.80 94.5000 0.000 0.000 ? 13.40 ?
+GPSD,O=GSA 991867998.00 0.005 -45.457633 167.152750 14.00 17.60 16.80 94.5000 0.000 0.000 ? 18.35 ?
$GPGSV,3,1,11,01,78,221,47,03,09,042,00,04,05,242,00,06,04,149,00*7
$GPGSV,3,1,11,01,78,221,47,03,09,042,00,04,05,242,00,06,04,149,00*70
$GPGSV,3,2,11,13,37,235,49,20,40,333,46,22,65,083,46,24,02,205,00*79
@@ -103,7 +103,7 @@ $GPGSV,3,3,11,25,20,108,00,27,08,281,00,28,17,339,40,,,,*42
GPSD,Y=GSV ? 11:1 78 221 47 1:3 9 42 0 0:4 5 242 0 0:6 4 149 0 0:13 37 235 49 1:20 40 333 46 1:22 65 83 46 1:24 2 205 0 0:25 20 108 0 0:27 8 281 0 0:28 17 339 40 1:
$PGRME,10.3,M,15.2,M,16.7,M*1A
$GPGLL,4527.458,S,16709.165,E,225333,A*37
-GPSD,O=GLL 991867998.00 0.005 -45.457633 167.152750 14.00 10.30 15.20 94.5000 0.000 0.000 ? 13.40 ?
+GPSD,O=GLL 991867998.00 0.005 -45.457633 167.152750 14.00 21.39 31.56 94.5000 0.000 0.000 ? 18.35 ?
$PGRMZ,41,f,3*2E
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
@@ -114,14 +114,14 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,225334,4527.458,S,16709.165,E,1,05,2.4,12.5,M,1.1,M,,*5D
GPSD,O=GGA 991868014.00 0.005 -45.457633 167.152750 12.50 ? ? 94.5000 0.000 0.000 ? ? ?
$GPGSA,A,3,01,,,,13,20,22,,,,28,,4.1,2.4,3.0*39
-GPSD,O=GSA 991868014.00 0.005 -45.457633 167.152750 12.50 19.20 24.00 94.5000 0.000 0.000 ? 1.84 ?
+GPSD,O=GSA 991868014.00 0.005 -45.457633 167.152750 12.50 19.20 24.00 94.5000 0.000 0.000 ? 2.54 ?
$GPGSV,3,1,11,01,78,221,47,03,09,042,00,04,05,242,00,06,04,149,00*70
$GPGSV,3,2,11,13,37,235,49,20,40,333,46,22,65,083,46,24,02,205,00*79
$GPGSV,3,3,11,25,20,108,00,27,08,281,00,28,17,339,41,,,,*43
GPSD,Y=GSV ? 11:1 78 221 47 1:3 9 42 0 0:4 5 242 0 0:6 4 149 0 0:13 37 235 49 1:20 40 333 46 1:22 65 83 46 1:24 2 205 0 0:25 20 108 0 0:27 8 281 0 0:28 17 339 41 1:
$PGRME,10.3,M,15.2,M,16.7,M*1A
$GPGLL,4527.458,S,16709.165,E,225335,A*31
-GPSD,O=GLL 991868014.00 0.005 -45.457633 167.152750 12.50 10.30 15.20 94.5000 0.000 0.000 ? 1.84 ?
+GPSD,O=GLL 991868014.00 0.005 -45.457633 167.152750 12.50 21.39 31.56 94.5000 0.000 0.000 ? 2.54 ?
$PGRMZ,41,f,3*2E
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
diff --git a/test/tn204.log.chk b/test/tn204.log.chk
index 2818bd4f..5968cfa0 100644
--- a/test/tn204.log.chk
+++ b/test/tn204.log.chk
@@ -11,7 +11,7 @@ $GPGSV,2,2,08,27,48,103,46,28,66,323,42,29,33,306,43,31,10,040,00*78
GPSD,Y=GSV ? 8:7 43 197 44 1:8 68 62 43 1:11 18 89 0 0:26 24 314 43 0:27 48 103 46 1:28 66 323 42 1:29 33 306 43 1:31 10 40 0 0:
$PGRME,17.4,M,40.3,M,43.9,M*15
$GPGLL,3348.605,N,11821.126,W,230149,A*34
-GPSD,O=GLL 1035673309.00 0.005 33.810083 -118.352100 49.40 17.40 40.30 209.4000 0.000 0.000 ? ? ?
+GPSD,O=GLL 1035673309.00 0.005 33.810083 -118.352100 49.40 36.13 83.67 209.4000 0.000 0.000 ? ? ?
$PGRMZ,162,f,3*1E
$PGRMM,NAD83*29
$GPBOD,,T,,M,,*47
@@ -22,13 +22,13 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,230151,3348.607,N,11821.124,W,1,05,1.7,49.2,M,-32.4,M,,*41
GPSD,O=GGA 1035673311.00 0.005 33.810117 -118.352067 49.20 ? ? 209.4000 0.000 0.000 ? ? ?
$GPGSA,A,3,07,08,,,27,28,29,,,,,,4.2,1.7,3.8*32
-GPSD,O=GSA 1035673311.00 0.005 33.810117 -118.352067 49.20 13.60 30.40 209.4000 0.000 0.000 141.1255 15.50 ?
+GPSD,O=GSA 1035673311.00 0.005 33.810117 -118.352067 49.20 13.60 30.40 209.4000 0.000 0.000 141.1255 24.86 ?
$GPGSV,2,1,08,07,43,197,45,08,68,062,42,11,18,089,00,26,24,314,43*73
$GPGSV,2,2,08,27,48,103,46,28,66,323,42,29,33,306,44,31,10,040,00*7F
GPSD,Y=GSV ? 8:7 43 197 45 1:8 68 62 42 1:11 18 89 0 0:26 24 314 43 0:27 48 103 46 1:28 66 323 42 1:29 33 306 44 1:31 10 40 0 0:
$PGRME,17.4,M,40.3,M,43.9,M*15
$GPGLL,3348.607,N,11821.124,W,230151,A*3D
-GPSD,O=GLL 1035673311.00 0.005 33.810117 -118.352067 49.20 17.40 40.30 209.4000 0.000 0.000 141.1255 15.50 ?
+GPSD,O=GLL 1035673311.00 0.005 33.810117 -118.352067 49.20 36.13 83.67 209.4000 0.000 0.000 141.1255 24.86 ?
$PGRMZ,161,f,3*1D
$PGRMM,NAD83*29
$GPBOD,,T,,M,,*47
@@ -39,13 +39,13 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,230153,3348.607,N,11821.124,W,1,05,1.7,49.1,M,-32.4,M,,*40
GPSD,O=GGA 1035673313.00 0.005 33.810117 -118.352067 49.10 ? ? 209.4000 0.000 0.000 ? ? ?
$GPGSA,A,3,,08,,,,,29,,,,,,4.2,1.7,3.8*3A
-GPSD,O=GSA 1035673313.00 0.005 33.810117 -118.352067 49.10 13.60 30.40 209.4000 0.000 0.000 ? 15.50 ?
+GPSD,O=GSA 1035673313.00 0.005 33.810117 -118.352067 49.10 13.60 30.40 209.4000 0.000 0.000 ? 24.86 ?
$GPGSV,2,1,08,07,43,197,45,08,68,062,42,11,18,089,00,26,24,314,41*71
$GPGSV,2,2,08,27,48,103,46,28,66,323,42,29,33,306,44,31,10,040,00*7F
GPSD,Y=GSV ? 8:7 43 197 45 0:8 68 62 42 1:11 18 89 0 0:26 24 314 41 0:27 48 103 46 0:28 66 323 42 0:29 33 306 44 1:31 10 40 0 0:
$PGRME,17.4,M,40.3,M,43.9,M*15
$GPGLL,3348.607,N,11821.124,W,230153,A*3F
-GPSD,O=GLL 1035673313.00 0.005 33.810117 -118.352067 49.10 17.40 40.30 209.4000 0.000 0.000 ? 15.50 ?
+GPSD,O=GLL 1035673313.00 0.005 33.810117 -118.352067 49.10 36.13 83.67 209.4000 0.000 0.000 ? 24.86 ?
$PGRMZ,161,f,3*1D
$PGRMM,NAD83*29
$GPBOD,,T,,M,,*47
@@ -56,13 +56,13 @@ $GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,230155,3348.608,N,11821.124,W,1,02,1.9,49.0,M,-32.4,M,,*41
GPSD,O=GGA 1035673315.00 0.005 33.810133 -118.352067 49.00 ? ? 209.4000 0.000 0.000 ? ? ?
$GPGSA,A,3,07,08,,,27,28,,,,,,,1.9,1.9,1.0*33
-GPSD,O=GSA 1035673315.00 0.005 33.810133 -118.352067 49.00 15.20 8.00 209.4000 0.000 0.000 166.1138 16.30 ?
+GPSD,O=GSA 1035673315.00 0.005 33.810133 -118.352067 49.00 15.20 8.00 209.4000 0.000 0.000 166.1138 25.66 ?
$GPGSV,2,1,08,07,43,197,45,08,68,062,43,11,18,089,00,26,24,314,41*70
$GPGSV,2,2,08,27,48,103,46,28,66,323,43,29,33,306,44,31,10,040,00*7E
GPSD,Y=GSV ? 8:7 43 197 45 1:8 68 62 43 1:11 18 89 0 0:26 24 314 41 0:27 48 103 46 1:28 66 323 43 1:29 33 306 44 0:31 10 40 0 0:
$PGRME,19.2,M,150.0,M,151.2,M*17
$GPGLL,3348.608,N,11821.124,W,230155,A*36
-GPSD,O=GLL 1035673315.00 0.005 33.810133 -118.352067 49.00 19.20 150.00 209.4000 0.000 0.000 166.1138 16.30 ?
+GPSD,O=GLL 1035673315.00 0.005 33.810133 -118.352067 49.00 39.86 311.44 209.4000 0.000 0.000 166.1138 25.66 ?
$PGRMZ,161,f,3*1D
$PGRMM,NAD83*29
$GPBOD,,T,,M,,*47
diff --git a/test/zodiac.log.chk b/test/zodiac.log.chk
index f16a3ab7..03cea532 100644
--- a/test/zodiac.log.chk
+++ b/test/zodiac.log.chk
@@ -1,106 +1,106 @@
GPSD,W=1,R=1
$GPGGA,204220,5203.7576,N,00508.3123,E,3,08,,8.2,M,47.120,M,0.91,W*22
$GPRMC,204220,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*23
-GPSD,O=1000 1118695340.00 0.005 52.062626 5.138538 8.23 2.10 2.21 0.0000 0.000 -0.010 ? 0.56 ?
+GPSD,O=1000 1118695340.00 0.005 52.062626 5.138538 8.23 ? ? 0.0000 0.000 -0.010 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204221,5203.7576,N,00508.3123,E,3,08,,8.2,M,47.120,M,0.91,W*23
$GPRMC,204221,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*22
-GPSD,O=1000 1118695341.00 0.005 52.062626 5.138538 8.23 2.10 2.21 0.0000 0.000 0.000 ? 0.56 ?
+GPSD,O=1000 1118695341.00 0.005 52.062626 5.138538 8.23 ? ? 0.0000 0.000 0.000 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204222,5203.7576,N,00508.3123,E,3,08,,8.2,M,47.120,M,0.91,W*20
$GPRMC,204222,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*21
-GPSD,O=1000 1118695342.00 0.005 52.062626 5.138538 8.20 2.10 2.21 0.0000 0.000 -0.020 ? 0.56 ?
+GPSD,O=1000 1118695342.00 0.005 52.062626 5.138538 8.20 ? ? 0.0000 0.000 -0.020 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204223,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*20
$GPRMC,204223,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*20
-GPSD,O=1000 1118695343.00 0.005 52.062626 5.138538 8.28 2.10 2.21 0.0000 0.000 0.050 ? 0.56 ?
+GPSD,O=1000 1118695343.00 0.005 52.062626 5.138538 8.28 ? ? 0.0000 0.000 0.050 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204224,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*27
$GPRMC,204224,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*27
-GPSD,O=1000 1118695344.00 0.005 52.062626 5.138538 8.27 2.10 2.21 0.0000 0.000 0.010 ? 0.56 ?
+GPSD,O=1000 1118695344.00 0.005 52.062626 5.138538 8.27 ? ? 0.0000 0.000 0.010 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204225,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*26
$GPRMC,204225,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*26
-GPSD,O=1000 1118695345.00 0.005 52.062626 5.138538 8.26 2.10 2.21 0.0000 0.000 0.000 ? 0.56 ?
+GPSD,O=1000 1118695345.00 0.005 52.062626 5.138538 8.26 ? ? 0.0000 0.000 0.000 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204226,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*25
$GPRMC,204226,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*25
-GPSD,O=1000 1118695346.00 0.005 52.062626 5.138538 8.29 2.10 2.21 0.0000 0.000 0.030 ? 0.56 ?
+GPSD,O=1000 1118695346.00 0.005 52.062626 5.138538 8.29 ? ? 0.0000 0.000 0.030 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204227,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*24
$GPRMC,204227,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*24
-GPSD,O=1000 1118695347.00 0.005 52.062626 5.138538 8.28 2.10 2.21 0.0000 0.000 0.000 ? 0.56 ?
+GPSD,O=1000 1118695347.00 0.005 52.062626 5.138538 8.28 ? ? 0.0000 0.000 0.000 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204228,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*2B
$GPRMC,204228,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*2B
-GPSD,O=1000 1118695348.00 0.005 52.062626 5.138538 8.29 2.10 2.21 0.0000 0.000 0.010 ? 0.56 ?
+GPSD,O=1000 1118695348.00 0.005 52.062626 5.138538 8.29 ? ? 0.0000 0.000 0.010 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204229,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*2A
$GPRMC,204229,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*2A
-GPSD,O=1000 1118695349.00 0.005 52.062626 5.138538 8.28 2.10 2.21 0.0000 0.000 -0.010 ? 0.56 ?
+GPSD,O=1000 1118695349.00 0.005 52.062626 5.138538 8.28 ? ? 0.0000 0.000 -0.010 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204230,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*22
$GPRMC,204230,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*22
-GPSD,O=1000 1118695350.00 0.005 52.062626 5.138538 8.32 2.10 2.21 0.0000 0.000 0.040 ? 0.56 ?
+GPSD,O=1000 1118695350.00 0.005 52.062626 5.138538 8.32 ? ? 0.0000 0.000 0.040 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204231,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*23
$GPRMC,204231,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*23
-GPSD,O=1000 1118695351.00 0.005 52.062626 5.138538 8.33 2.10 2.21 0.0000 0.000 0.030 ? 0.56 ?
+GPSD,O=1000 1118695351.00 0.005 52.062626 5.138538 8.33 ? ? 0.0000 0.000 0.030 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204232,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*20
$GPRMC,204232,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*20
-GPSD,O=1000 1118695352.00 0.005 52.062626 5.138538 8.31 2.10 2.21 0.0000 0.000 0.000 ? 0.56 ?
+GPSD,O=1000 1118695352.00 0.005 52.062626 5.138538 8.31 ? ? 0.0000 0.000 0.000 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204233,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*21
$GPRMC,204233,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*21
-GPSD,O=1000 1118695353.00 0.005 52.062626 5.138538 8.27 2.10 2.21 0.0000 0.000 -0.020 ? 0.56 ?
+GPSD,O=1000 1118695353.00 0.005 52.062626 5.138538 8.27 ? ? 0.0000 0.000 -0.020 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204234,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*26
$GPRMC,204234,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*26
-GPSD,O=1000 1118695354.00 0.005 52.062626 5.138538 8.29 2.10 2.21 0.0000 0.000 0.020 ? 0.56 ?
+GPSD,O=1000 1118695354.00 0.005 52.062626 5.138538 8.29 ? ? 0.0000 0.000 0.020 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204235,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*27
$GPRMC,204235,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*27
-GPSD,O=1000 1118695355.00 0.005 52.062626 5.138538 8.27 2.10 2.21 0.0000 0.000 -0.010 ? 0.56 ?
+GPSD,O=1000 1118695355.00 0.005 52.062626 5.138538 8.27 ? ? 0.0000 0.000 -0.010 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204236,5203.7576,N,00508.3123,E,3,08,,8.3,M,47.120,M,0.91,W*24
$GPRMC,204236,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*24
-GPSD,O=1000 1118695356.00 0.005 52.062626 5.138538 8.26 2.10 2.21 0.0000 0.000 -0.010 ? 0.56 ?
+GPSD,O=1000 1118695356.00 0.005 52.062626 5.138538 8.26 ? ? 0.0000 0.000 -0.010 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204237,5203.7576,N,00508.3123,E,3,08,,8.2,M,47.120,M,0.91,W*24
$GPRMC,204237,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*25
-GPSD,O=1000 1118695357.00 0.005 52.062626 5.138538 8.25 2.10 2.21 0.0000 0.000 0.000 ? 0.56 ?
+GPSD,O=1000 1118695357.00 0.005 52.062626 5.138538 8.25 ? ? 0.0000 0.000 0.000 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204238,5203.7576,N,00508.3123,E,3,08,,8.2,M,47.120,M,0.91,W*2B
$GPRMC,204238,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*2A
-GPSD,O=1000 1118695358.00 0.005 52.062626 5.138538 8.20 2.10 2.21 0.0000 0.000 -0.030 ? 0.56 ?
+GPSD,O=1000 1118695358.00 0.005 52.062626 5.138538 8.20 ? ? 0.0000 0.000 -0.030 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204239,5203.7576,N,00508.3123,E,3,08,,8.2,M,47.120,M,0.91,W*2A
$GPRMC,204239,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*2B
-GPSD,O=1000 1118695359.00 0.005 52.062626 5.138538 8.18 2.10 2.21 0.0000 0.000 -0.030 ? 0.56 ?
+GPSD,O=1000 1118695359.00 0.005 52.062626 5.138538 8.18 ? ? 0.0000 0.000 -0.030 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
$GPGGA,204240,5203.7576,N,00508.3123,E,3,08,,8.2,M,47.120,M,0.91,W*24
$GPRMC,204240,A,5203.7576,N,00508.3123,E,0.0000,0.000,130605,,*25
-GPSD,O=1000 1118695360.00 0.005 52.062626 5.138538 8.19 2.10 2.21 0.0000 0.000 -0.010 ? 0.56 ?
+GPSD,O=1000 1118695360.00 0.005 52.062626 5.138538 8.19 ? ? 0.0000 0.000 -0.010 ? ? ?
$PRWIZCH,01,2,05,7,04,7,14,7,02,0,07,7,30,7,18,6,24,7,09,7,00,0,22,7*4C
GPSD,Y=?
diff --git a/www/gps-hacking.html b/www/gps-hacking.html
index ceccd133..fbb161be 100644
--- a/www/gps-hacking.html
+++ b/www/gps-hacking.html
@@ -390,6 +390,9 @@ the non-technical description</a></dt>
<dt>
<a href='http://www.eomonline.com/Common/Archives/1995aug/95aug_gps.html'>Two</a> <a href='http://www.eomonline.com/Common/Archives/1996feb/96feb_gps.html'>articles</a> from Earth Observation Magazine</dt>
<dd>These delve into the mysteries of GPS accuracy.</dd>
+
+<dt><a href='http://users.erols.com/dlwilson/gps.htm'>David L. Wilson's GPS Accuracy Web Page</a></dt>
+<dd>Goes in-depth on accuracy, with the math.</dd>
</dl>
</body>
diff --git a/zodiac.c b/zodiac.c
index 8f0e5224..fdc3d7e9 100644
--- a/zodiac.c
+++ b/zodiac.c
@@ -184,11 +184,11 @@ static gps_mask_t handle1000(struct gps_device_t *session)
session->mag_var = ((short)getword(37)) * RAD_2_DEG * 1e-4;
session->gpsdata.newdata.climb = ((short)getword(38)) * 1e-2;
/* map_datum = getword(39); */
- /* manual doesn't specify 1-sigma or 2-sigma */
- session->gpsdata.newdata.eph = (int)getlong(40) * 1e-2;
- session->gpsdata.newdata.epv = (int)getlong(42) * 1e-2;
- session->gpsdata.newdata.ept = (int)getlong(44) * 1e-2;
- session->gpsdata.newdata.eps = (int)getword(46) * 1e-2;
+ /* manual doesn't specify the confidence interval */
+ // session->gpsdata.newdata.eph = (int)getlong(40) * 1e-2;
+ // session->gpsdata.newdata.epv = (int)getlong(42) * 1e-2;
+ // session->gpsdata.newdata.ept = (int)getlong(44) * 1e-2;
+ // session->gpsdata.newdata.eps = (int)getword(46) * 1e-2;
/* clock_bias = (int)getlong(47) * 1e-2; */
/* clock_bias_sd = (int)getlong(49) * 1e-2; */
/* clock_drift = (int)getlong(51) * 1e-2; */
@@ -218,7 +218,7 @@ static gps_mask_t handle1000(struct gps_device_t *session)
#endif
session->gpsdata.sentence_length = 55;
- return TIME_SET|LATLON_SET|ALTITUDE_SET|CLIMB_SET|SPEED_SET|TRACK_SET|STATUS_SET|MODE_SET|HERR_SET|VERR_SET|SPEEDERR_SET|CYCLE_START_SET;
+ return TIME_SET|LATLON_SET|ALTITUDE_SET|CLIMB_SET|SPEED_SET|TRACK_SET|STATUS_SET|MODE_SET|CYCLE_START_SET; /* |HERR_SET|VERR_SET|SPEEDERR_SET */
}
static gps_mask_t handle1002(struct gps_device_t *session)