summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2015-01-21 18:23:46 -0500
committerEric S. Raymond <esr@thyrsus.com>2015-01-21 18:23:46 -0500
commitab59cbb7b64909090d64866ebdf43fd27f584c5d (patch)
treec80d25e389f74cd506a733f8106235693b93f092
parentaeb3bdae85bddab96c749dfc07ecf6d7e0b2fdf2 (diff)
downloadgpsd-ab59cbb7b64909090d64866ebdf43fd27f584c5d.tar.gz
Coverity/splint cleanup.
Turned up a bug in where a counter was incremented un the Navcom driver; this required one test rebuild.
-rw-r--r--driver_navcom.c4
-rw-r--r--driver_oncore.c2
-rw-r--r--driver_sirf.c6
-rw-r--r--driver_zodiac.c3
-rw-r--r--gps2udp.c2
-rw-r--r--gpsmon.c3
-rw-r--r--test/daemon/navcom.log.chk86
7 files changed, 58 insertions, 48 deletions
diff --git a/driver_navcom.c b/driver_navcom.c
index 55f0a323..57566d7f 100644
--- a/driver_navcom.c
+++ b/driver_navcom.c
@@ -793,9 +793,9 @@ static gps_mask_t handle_0x86(struct gps_device_t *session)
session->gpsdata.skyview[i].elevation = (short)ele;
session->gpsdata.skyview[i].azimuth = (short)azm;
/*@ ignore @*//* splint is confused */
- s = session->gpsdata.skyview[i++].ss = (p2_snr ? p2_snr : ca_snr) / 4.0;
+ s = session->gpsdata.skyview[i].ss = (p2_snr ? p2_snr : ca_snr) / 4.0;
/*@ end @*/
- session->gpsdata.skyview[i].used = (stat == 0xff);
+ session->gpsdata.skyview[i++].used = (stat == 0xff);
if (stat == 0xff)
nsu++;
}
diff --git a/driver_oncore.c b/driver_oncore.c
index 36c26de3..8cea6e7c 100644
--- a/driver_oncore.c
+++ b/driver_oncore.c
@@ -109,7 +109,7 @@ oncore_msg_navsol(struct gps_device_t *session, unsigned char *buf,
unpacked_date.tm_sec = (int)getub(buf, 10);
unpacked_date.tm_isdst = 0;
#ifdef S_SPLINT_S
- unpacked_date. tm_wday = unpacked_date. tm_yday = 0;
+ unpacked_date.tm_wday = unpacked_date.tm_yday = 0;
#endif /* S_SPLINT_S */
nsec = (uint) getbeu32(buf, 11);
diff --git a/driver_sirf.c b/driver_sirf.c
index 746ac661..9ec40e82 100644
--- a/driver_sirf.c
+++ b/driver_sirf.c
@@ -886,6 +886,9 @@ static gps_mask_t sirf_msg_geodetic(struct gps_device_t *session,
unpacked_date.tm_hour = (int)getub(buf, 15);
unpacked_date.tm_min = (int)getub(buf, 16);
unpacked_date.tm_sec = 0;
+#ifdef S_SPLINT_S
+ unpacked_date.tm_wday = unpacked_date.tm_yday = 0;
+#endif /* S_SPLINT_S */
subseconds = getbeu16(buf, 17) * 1e-3;
/*@ -compdef -unrecog */
session->newdata.time = (timestamp_t)mkgmtime(&unpacked_date) + subseconds;
@@ -1069,6 +1072,9 @@ static gps_mask_t sirf_msg_ppstime(struct gps_device_t *session,
unpacked_date.tm_mday = (int)getub(buf, 4);
unpacked_date.tm_mon = (int)getub(buf, 5) - 1;
unpacked_date.tm_year = (int)getbeu16(buf, 6) - 1900;
+#ifdef S_SPLINT_S
+ unpacked_date.tm_isdst = 0;
+#endif /* S_SPLINT_S */
/*@ -compdef */
session->newdata.time = (timestamp_t)mkgmtime(&unpacked_date);
/*@ +compdef */
diff --git a/driver_zodiac.c b/driver_zodiac.c
index 1c3c8731..0d066d1f 100644
--- a/driver_zodiac.c
+++ b/driver_zodiac.c
@@ -165,6 +165,9 @@ static gps_mask_t handle1000(struct gps_device_t *session)
unpacked_date.tm_hour = (int)getzword(22);
unpacked_date.tm_min = (int)getzword(23);
unpacked_date.tm_sec = (int)getzword(24);
+#ifdef S_SPLINT_S
+ unpacked_date.tm_isdst = 0;
+#endif /* S_SPLINT_S */
subseconds = (int)getzlong(25) / 1e9;
/*@ -compdef */
session->newdata.time = (timestamp_t)mkgmtime(&unpacked_date) + subseconds;
diff --git a/gps2udp.c b/gps2udp.c
index 7342dc05..c530275e 100644
--- a/gps2udp.c
+++ b/gps2udp.c
@@ -90,7 +90,7 @@ static int send_udp (char *nmeastring, size_t ind)
if (ind == 0) {
/* compute message size and add 0x0a 0x0d */
for (ind=0; nmeastring [ind] != '\0'; ind ++) {
- if (ind >= sizeof(message)) {
+ if (ind >= sizeof(message) - 3) {
fprintf(stderr, "gps2udp: too big [%s] \n", nmeastring);
return -1;
}
diff --git a/gpsmon.c b/gpsmon.c
index 549628a6..16ea331a 100644
--- a/gpsmon.c
+++ b/gpsmon.c
@@ -687,6 +687,7 @@ static void gpsmon_hook(struct gps_device_t *device, gps_mask_t changed UNUSED)
/*@+type@*/
(void)strlcpy(buf, PPSBAR, sizeof(buf));
+ /* coverity[missing_lock] */
session.ppslast = noclobber.timedrift;
/* coverity[missing_lock] */
session.ppscount++;
@@ -1295,7 +1296,7 @@ int main(int argc, char **argv)
cmdline = curses_get_command();
else
{
- /* coverity[string_null] */
+ /* coverity[string_null_argument] */
ssize_t st = read(0, &inbuf, 1);
if (st == 1) {
diff --git a/test/daemon/navcom.log.chk b/test/daemon/navcom.log.chk
index 66f3f57f..f9a950fd 100644
--- a/test/daemon/navcom.log.chk
+++ b/test/daemon/navcom.log.chk
@@ -7,213 +7,213 @@ $GPGBS,102008,0.22,M,0.22,M,10.35,M*02
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,34*7C
-{"class":"SKY","time":"2007-01-14T00:01:47.624Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.624Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":false}]}
$GPZDA,102009.00,15,01,2007,00,00*6C
$GPGGA,102009,3020.5010,N,01213.7241,E,2,09,1.00,627.58,M,31.479,M,,*41
$GPRMC,102009,A,3020.5010,N,01213.7241,E,31847.9464,0.000,150107,,*27
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102009,0.22,M,0.22,M,10.35,M*03
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:09.000Z","ept":3.920,"lat":30.341683205,"lon":12.228735818,"alt":627.577,"epx":0.222,"epy":0.222,"epv":10.350,"track":0.0000,"speed":16383.999,"climb":0.008,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,32*7A
-{"class":"SKY","time":"2007-01-14T00:01:47.625Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":32,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.625Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":32,"used":false}]}
$GPZDA,102010.00,15,01,2007,00,00*64
$GPGGA,102010,3020.5010,N,01213.7242,E,2,09,1.00,627.56,M,31.479,M,,*44
$GPRMC,102010,A,3020.5010,N,01213.7242,E,0.0019,90.000,150107,,*1B
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102010,0.22,M,0.22,M,10.35,M*0B
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:10.000Z","ept":3.920,"lat":30.341683095,"lon":12.228735894,"alt":627.558,"epx":0.222,"epy":0.222,"epv":10.350,"track":90.0000,"speed":0.001,"climb":16383.996,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,44*7B
-{"class":"SKY","time":"2007-01-14T00:01:47.626Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":44,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.626Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":44,"used":false}]}
$GPZDA,102011.00,15,01,2007,00,00*65
$GPGGA,102011,3020.5010,N,01213.7242,E,2,09,1.00,627.55,M,31.479,M,,*46
$GPRMC,102011,A,3020.5010,N,01213.7242,E,0.0019,90.000,150107,,*1A
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102011,0.22,M,0.22,M,10.35,M*0A
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:11.000Z","ept":3.920,"lat":30.341683146,"lon":12.228735886,"alt":627.552,"epx":0.222,"epy":0.222,"epv":10.350,"track":90.0000,"speed":0.001,"climb":0.001,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,44*7B
-{"class":"SKY","time":"2007-01-14T00:01:47.627Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":44,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.627Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":44,"used":false}]}
$GPZDA,102012.00,15,01,2007,00,00*66
$GPGGA,102012,3020.5010,N,01213.7242,E,2,09,1.00,627.55,M,31.480,M,,*43
$GPRMC,102012,A,3020.5010,N,01213.7242,E,0.0019,0.000,150107,,*20
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:12.000Z","ept":3.920,"lat":30.341683214,"lon":12.228735860,"alt":627.552,"epx":0.222,"epy":0.222,"epv":10.350,"track":0.0000,"speed":0.001,"climb":0.000,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,38,03,10,284,34*7E
$GPGSV,3,3,10,07,43,056,43,22,13,173,44*7B
-{"class":"SKY","time":"2007-01-14T00:01:47.628Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":44,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.628Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":44,"used":false}]}
$GPZDA,102013.00,15,01,2007,00,00*67
$GPGGA,102013,3020.5010,N,01213.7242,E,2,09,1.00,627.54,M,31.479,M,,*45
$GPRMC,102013,A,3020.5010,N,01213.7242,E,0.0019,0.000,150107,,*21
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102013,0.22,M,0.22,M,10.35,M*08
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:13.000Z","ept":3.920,"lat":30.341683205,"lon":12.228735860,"alt":627.538,"epx":0.222,"epy":0.222,"epv":10.350,"track":0.0000,"speed":0.001,"climb":0.001,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,38,03,10,284,34*7E
$GPGSV,3,3,10,07,43,056,43,22,13,173,35*7D
-{"class":"SKY","time":"2007-01-14T00:01:47.629Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.629Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":false}]}
$GPZDA,102014.00,15,01,2007,00,00*60
$GPGGA,102014,3020.5010,N,01213.7242,E,2,09,1.00,627.55,M,31.479,M,,*43
$GPRMC,102014,A,3020.5010,N,01213.7242,E,31847.9407,0.000,150107,,*2D
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102014,0.22,M,0.22,M,10.35,M*0F
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:14.000Z","ept":3.920,"lat":30.341683138,"lon":12.228735911,"alt":627.551,"epx":0.222,"epy":0.222,"epv":10.350,"track":0.0000,"speed":16383.996,"climb":0.002,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,38,03,10,284,34*7E
$GPGSV,3,3,10,07,43,056,43,22,13,173,35*7D
-{"class":"SKY","time":"2007-01-14T00:01:47.630Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.630Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":false}]}
$GPZDA,102015.00,15,01,2007,00,00*61
$GPGGA,102015,3020.5010,N,01213.7242,E,2,09,1.00,627.55,M,31.479,M,,*42
$GPRMC,102015,A,3020.5010,N,01213.7242,E,0.0019,0.000,150107,,*27
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102015,0.22,M,0.22,M,10.35,M*0E
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:15.000Z","ept":3.920,"lat":30.341683138,"lon":12.228735852,"alt":627.550,"epx":0.222,"epy":0.222,"epv":10.350,"track":0.0000,"speed":0.001,"climb":0.005,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,01*7A
-{"class":"SKY","time":"2007-01-14T00:01:47.631Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":1,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.631Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":1,"used":false}]}
$GPZDA,102016.00,15,01,2007,00,00*62
$GPGGA,102016,3020.5010,N,01213.7242,E,2,09,1.00,627.56,M,31.479,M,,*42
$GPRMC,102016,A,3020.5010,N,01213.7242,E,0.0000,0.000,150107,,*2C
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102016,0.22,M,0.22,M,10.35,M*0D
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:16.000Z","ept":3.920,"lat":30.341683189,"lon":12.228735877,"alt":627.561,"epx":0.222,"epy":0.222,"epv":10.350,"track":0.0000,"speed":0.000,"climb":0.000,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,33*7B
-{"class":"SKY","time":"2007-01-14T00:01:47.632Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":33,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.632Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":33,"used":false}]}
$GPZDA,102017.00,15,01,2007,00,00*63
$GPGGA,102017,3020.5010,N,01213.7241,E,2,09,1.00,627.56,M,31.479,M,,*40
$GPRMC,102017,A,3020.5010,N,01213.7241,E,0.0019,90.000,150107,,*1F
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102017,0.22,M,0.22,M,10.35,M*0C
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:17.000Z","ept":3.920,"lat":30.341683180,"lon":12.228735826,"alt":627.560,"epx":0.222,"epy":0.222,"epv":10.350,"track":90.0000,"speed":0.001,"climb":0.006,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,35*7D
-{"class":"SKY","time":"2007-01-14T00:01:47.633Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.633Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":false}]}
$GPZDA,102018.00,15,01,2007,00,00*6C
$GPGGA,102018,3020.5010,N,01213.7242,E,2,09,1.00,627.56,M,31.479,M,,*4C
$GPRMC,102018,A,3020.5010,N,01213.7242,E,0.0060,71.565,150107,,*14
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102018,0.22,M,0.22,M,10.35,M*03
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:18.000Z","ept":3.920,"lat":30.341683112,"lon":12.228735945,"alt":627.564,"epx":0.222,"epy":0.222,"epv":10.350,"track":71.5651,"speed":0.003,"climb":16383.997,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,38,03,10,284,34*7E
$GPGSV,3,3,10,07,43,056,43,22,13,173,35*7D
-{"class":"SKY","time":"2007-01-14T00:01:47.634Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.634Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":false}]}
$GPZDA,102019.00,15,01,2007,00,00*6D
$GPGGA,102019,3020.5010,N,01213.7242,E,2,09,1.00,627.56,M,31.479,M,,*4D
$GPRMC,102019,A,3020.5010,N,01213.7242,E,0.0019,0.000,150107,,*2B
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102019,0.22,M,0.22,M,10.35,M*02
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:19.000Z","ept":3.920,"lat":30.341683172,"lon":12.228735936,"alt":627.559,"epx":0.222,"epy":0.222,"epv":10.350,"track":0.0000,"speed":0.001,"climb":0.005,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,45,06,36,062,43,25,36,245,43*7E
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,35*7D
-{"class":"SKY","time":"2007-01-14T00:01:47.635Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":45,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.635Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":45,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":false}]}
$GPZDA,102020.00,15,01,2007,00,00*67
$GPGGA,102020,3020.5010,N,01213.7242,E,2,09,1.00,627.54,M,31.480,M,,*43
$GPRMC,102020,A,3020.5010,N,01213.7242,E,31847.9445,0.000,150107,,*2C
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102020,0.22,M,0.22,M,10.35,M*08
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:20.000Z","ept":3.920,"lat":30.341683180,"lon":12.228735886,"alt":627.543,"epx":0.222,"epy":0.222,"epv":10.350,"track":0.0000,"speed":16383.998,"climb":0.002,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,35*7D
-{"class":"SKY","time":"2007-01-14T00:01:47.636Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.636Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":false}]}
$GPZDA,102021.00,15,01,2007,00,00*66
$GPGGA,102021,3020.5010,N,01213.7242,E,2,09,1.00,627.52,M,31.479,M,,*42
$GPRMC,102021,A,3020.5010,N,01213.7242,E,31847.9464,0.000,150107,,*2E
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102021,0.22,M,0.22,M,10.35,M*09
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:21.000Z","ept":3.920,"lat":30.341683256,"lon":12.228735869,"alt":627.515,"epx":0.222,"epy":0.222,"epv":10.350,"track":0.0000,"speed":16383.999,"climb":16383.999,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,34*7F
$GPGSV,3,3,10,07,43,056,43,22,13,173,35*7D
-{"class":"SKY","time":"2007-01-14T00:01:47.637Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.637Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":false}]}
$GPZDA,102022.00,15,01,2007,00,00*65
$GPGGA,102022,3020.5010,N,01213.7242,E,2,09,1.00,627.54,M,31.479,M,,*47
$GPRMC,102022,A,3020.5010,N,01213.7242,E,0.0027,45.000,150107,,*1F
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102022,0.22,M,0.22,M,10.35,M*0A
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:22.000Z","ept":3.920,"lat":30.341683197,"lon":12.228735835,"alt":627.542,"epx":0.222,"epy":0.222,"epv":10.350,"track":45.0000,"speed":0.001,"climb":0.001,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,32*79
$GPGSV,3,3,10,07,43,056,43,22,13,173,35*7D
-{"class":"SKY","time":"2007-01-14T00:01:47.638Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":32,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.638Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":32,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":false}]}
$GPZDA,102023.00,15,01,2007,00,00*64
$GPGGA,102023,3020.5010,N,01213.7242,E,2,09,1.00,627.52,M,31.479,M,,*40
$GPRMC,102023,A,3020.5010,N,01213.7242,E,45039.7977,45.000,150107,,*1E
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.0,1.0,1.8*02
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.0,1.0,1.8*01
$GPGBS,102023,0.22,M,0.22,M,10.35,M*0B
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:23.000Z","ept":3.920,"lat":30.341683248,"lon":12.228735852,"alt":627.520,"epx":0.222,"epy":0.222,"epv":10.350,"track":45.0000,"speed":23170.474,"climb":0.000,"eps":0.44,"epc":20.70}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,39,03,10,284,35*7E
$GPGSV,3,3,10,07,43,056,43,22,13,173,35*7D
-{"class":"SKY","time":"2007-01-14T00:01:47.639Z","xdop":0.55,"ydop":0.68,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":35,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.639Z","xdop":0.55,"ydop":0.74,"vdop":1.80,"tdop":1.30,"hdop":1.00,"gdop":2.40,"pdop":2.00,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":39,"used":true},{"PRN":3,"el":10,"az":284,"ss":35,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":35,"used":false}]}
$GPZDA,102024.00,15,01,2007,00,00*63
$GPGGA,102024,3020.5010,N,01213.7242,E,2,09,1.10,627.55,M,31.479,M,,*41
$GPRMC,102024,A,3020.5010,N,01213.7242,E,0.0057,90.000,150107,,*16
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.3,1.1,2.1*0A
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.3,1.1,2.1*09
$GPGBS,102024,0.22,M,0.22,M,12.08,M*00
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:24.000Z","ept":5.880,"lat":30.341683205,"lon":12.228735911,"alt":627.549,"epx":0.222,"epy":0.222,"epv":12.075,"track":90.0000,"speed":0.003,"climb":0.001,"eps":0.44,"epc":22.43}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,38,03,10,284,33*79
$GPGSV,3,3,10,07,43,056,43,22,13,173,34*7C
-{"class":"SKY","time":"2007-01-14T00:01:47.640Z","xdop":0.55,"ydop":0.68,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":33,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.640Z","xdop":0.55,"ydop":0.74,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":33,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":false}]}
$GPZDA,102025.00,15,01,2007,00,00*62
$GPGGA,102025,3020.5010,N,01213.7242,E,2,09,1.10,627.54,M,31.479,M,,*41
$GPRMC,102025,A,3020.5010,N,01213.7242,E,0.0042,26.565,150107,,*18
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.3,1.1,2.1*0A
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.3,1.1,2.1*09
$GPGBS,102025,0.22,M,0.22,M,12.08,M*01
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:25.000Z","ept":5.880,"lat":30.341683256,"lon":12.228735936,"alt":627.539,"epx":0.222,"epy":0.222,"epv":12.075,"track":26.5651,"speed":0.002,"climb":0.003,"eps":0.44,"epc":24.15}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,38,03,10,284,32*78
$GPGSV,3,3,10,07,43,056,43,22,13,173,34*7C
-{"class":"SKY","time":"2007-01-14T00:01:47.641Z","xdop":0.55,"ydop":0.68,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":32,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.641Z","xdop":0.55,"ydop":0.74,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":32,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":false}]}
$GPZDA,102026.00,15,01,2007,00,00*61
$GPGGA,102026,3020.5010,N,01213.7242,E,2,09,1.10,627.53,M,31.479,M,,*45
$GPRMC,102026,A,3020.5010,N,01213.7242,E,31847.9464,90.000,150107,,*10
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.3,1.1,2.1*0A
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.3,1.1,2.1*09
$GPGBS,102026,0.24,M,0.24,M,12.08,M*02
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:26.000Z","ept":5.880,"lat":30.341683265,"lon":12.228735920,"alt":627.531,"epx":0.236,"epy":0.236,"epv":12.075,"track":90.0000,"speed":16383.999,"climb":16383.998,"eps":0.46,"epc":24.15}
$GPGSV,3,1,10,21,78,040,46,31,39,230,45,06,36,062,43,25,36,245,43*7E
$GPGSV,3,2,10,30,26,132,37,16,40,321,42,18,31,140,38,03,10,284,32*77
$GPGSV,3,3,10,07,43,056,43,22,13,173,34*7C
-{"class":"SKY","time":"2007-01-14T00:01:47.642Z","xdop":0.55,"ydop":0.68,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":45,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":37,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":32,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.642Z","xdop":0.55,"ydop":0.74,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":45,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":37,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":32,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":false}]}
$GPZDA,102027.00,15,01,2007,00,00*60
$GPGGA,102027,3020.5010,N,01213.7242,E,2,09,1.10,627.54,M,31.479,M,,*43
$GPRMC,102027,A,3020.5010,N,01213.7242,E,31847.9464,90.000,150107,,*11
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.3,1.1,2.1*0A
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.3,1.1,2.1*09
$GPGBS,102027,0.24,M,0.24,M,12.08,M*03
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:27.000Z","ept":5.880,"lat":30.341683239,"lon":12.228735920,"alt":627.541,"epx":0.236,"epy":0.236,"epv":12.075,"track":90.0000,"speed":16383.999,"climb":0.002,"eps":0.47,"epc":24.15}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,38,03,10,284,33*79
$GPGSV,3,3,10,07,43,056,43,22,13,173,34*7C
-{"class":"SKY","time":"2007-01-14T00:01:47.643Z","xdop":0.55,"ydop":0.68,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":33,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.643Z","xdop":0.55,"ydop":0.74,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":33,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":false}]}
$GPZDA,102028.00,15,01,2007,00,00*6F
$GPGGA,102028,3020.5010,N,01213.7242,E,2,09,1.10,627.56,M,31.479,M,,*4E
$GPRMC,102028,A,3020.5010,N,01213.7242,E,31847.9445,0.000,150107,,*24
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.3,1.1,2.1*0A
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.3,1.1,2.1*09
$GPGBS,102028,0.24,M,0.24,M,12.08,M*0C
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:28.000Z","ept":5.880,"lat":30.341683214,"lon":12.228735936,"alt":627.555,"epx":0.236,"epy":0.236,"epv":12.075,"track":0.0000,"speed":16383.998,"climb":0.007,"eps":0.47,"epc":24.15}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,38,03,10,284,34*7E
$GPGSV,3,3,10,07,43,056,43,22,13,173,34*7C
-{"class":"SKY","time":"2007-01-14T00:01:47.644Z","xdop":0.55,"ydop":0.68,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.644Z","xdop":0.55,"ydop":0.74,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":false}]}
$GPZDA,102029.00,15,01,2007,00,00*6E
$GPGGA,102029,3020.5010,N,01213.7242,E,2,09,1.10,627.54,M,31.479,M,,*4D
$GPRMC,102029,A,3020.5010,N,01213.7242,E,31847.9464,90.000,150107,,*1F
-$GPGSA,A,3,31,6,25,30,16,18,3,7,22,,,,2.3,1.1,2.1*0A
+$GPGSA,A,3,21,31,6,25,30,16,18,3,7,,,,2.3,1.1,2.1*09
$GPGBS,102029,0.25,M,0.25,M,12.08,M*0D
{"class":"TPV","mode":3,"time":"2007-01-15T10:20:29.000Z","ept":5.880,"lat":30.341683231,"lon":12.228735877,"alt":627.537,"epx":0.249,"epy":0.249,"epv":12.075,"track":90.0000,"speed":16383.999,"climb":0.000,"eps":0.49,"epc":24.15}
$GPGSV,3,1,10,21,78,040,46,31,39,230,44,06,36,062,43,25,36,245,43*7F
$GPGSV,3,2,10,30,26,132,38,16,40,321,42,18,31,140,38,03,10,284,34*7E
$GPGSV,3,3,10,07,43,056,43,22,13,173,34*7C
-{"class":"SKY","time":"2007-01-14T00:01:47.645Z","xdop":0.55,"ydop":0.68,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":false},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":true}]}
+{"class":"SKY","time":"2007-01-14T00:01:47.645Z","xdop":0.55,"ydop":0.74,"vdop":2.10,"tdop":1.50,"hdop":1.10,"gdop":2.80,"pdop":2.30,"satellites":[{"PRN":21,"el":78,"az":40,"ss":46,"used":true},{"PRN":31,"el":39,"az":230,"ss":44,"used":true},{"PRN":6,"el":36,"az":62,"ss":43,"used":true},{"PRN":25,"el":36,"az":245,"ss":43,"used":true},{"PRN":30,"el":26,"az":132,"ss":38,"used":true},{"PRN":16,"el":40,"az":321,"ss":42,"used":true},{"PRN":18,"el":31,"az":140,"ss":38,"used":true},{"PRN":3,"el":10,"az":284,"ss":34,"used":true},{"PRN":7,"el":43,"az":56,"ss":43,"used":true},{"PRN":22,"el":13,"az":173,"ss":34,"used":false}]}