diff options
-rw-r--r-- | driver_nmea0183.c | 17 | ||||
-rw-r--r-- | test/daemon/beidou-bd.log.chk | 5 | ||||
-rw-r--r-- | test/daemon/beidou-gb.log.chk | 3 |
3 files changed, 21 insertions, 4 deletions
diff --git a/driver_nmea0183.c b/driver_nmea0183.c index d91323d8..73758139 100644 --- a/driver_nmea0183.c +++ b/driver_nmea0183.c @@ -1225,7 +1225,8 @@ static gps_mask_t processGSV(int count, char *field[], session->nmea.last_gsv_talker = GSV_TALKER; if (session->nmea.last_gsv_talker == 'L') session->nmea.seen_glgsv = true; - if (session->nmea.last_gsv_talker == 'D' || session->nmea.last_gsv_talker == 'B') + if (session->nmea.last_gsv_talker == 'D' || + session->nmea.last_gsv_talker == 'B') session->nmea.seen_bdgsv = true; if (session->nmea.last_gsv_talker == 'Z') session->nmea.seen_qzss = true; @@ -1481,11 +1482,19 @@ static gps_mask_t processPSRFEPE(int c UNUSED, char *field[], * * SiRF won't say if these are 1-sigma or what... */ - gps_mask_t mask = 0; + gps_mask_t mask = STATUS_SET; + if ('\0' == field[2][0] || + 'V' == field[2][0]) { + /* Invalid */ + session->gpsdata.status = STATUS_NO_FIX; + session->newdata.mode = MODE_NO_FIX; + mask |= MODE_SET; + return mask; + } if ('A' != field[2][0]) { - /* not valid */ - return 0; + /* Huh? */ + return mask; } if ('\0' != field[1][0]) { if (0 == merge_hhmmss(field[1], session)) { diff --git a/test/daemon/beidou-bd.log.chk b/test/daemon/beidou-bd.log.chk index c431f074..433532a8 100644 --- a/test/daemon/beidou-bd.log.chk +++ b/test/daemon/beidou-bd.log.chk @@ -1,4 +1,5 @@ $PSRFEPE,074150.799,V,,,,,*23
+{"class":"TPV","mode":1}
$GNGGA,074150.799,,,,,0,00,,,M,0.0,M,,0000,*64
$GNGNS,074150.799,,,,,NNNN,00,,,0.0,,0000*63
$GPGSA,A,1,,,,,,,,,,,,,,,,*32
@@ -19,6 +20,7 @@ $BDGSV,2,2,07,05,27,090,,13,19,016,,11,07,147,*5E $GNRMC,074150.799,V,,,,,,,250215,,,N*52
{"class":"TPV","mode":1}
$PSRFEPE,074151.799,V,,,,,*22
+{"class":"TPV","mode":1}
$GNGGA,074151.799,,,,,0,00,,,M,0.0,M,,0000,*65
$GNGNS,074151.799,,,,,NNNN,00,,,0.0,,0000*62
$GPGSA,A,1,,,,,,,,,,,,,,,,*32
@@ -27,6 +29,7 @@ $BDGSA,A,1,,,,,,,,,,,,,,,,*23 $GNRMC,074151.799,V,,,,,,,250215,,,N*53
{"class":"TPV","mode":1}
$PSRFEPE,074152.799,V,,,,,*21
+{"class":"TPV","mode":1}
$GNGGA,074152.799,,,,,0,00,,,M,0.0,M,,0000,*66
$GNGNS,074152.799,,,,,NNNN,00,,,0.0,,0000*61
$GPGSA,A,1,,,,,,,,,,,,,,,,*32
@@ -36,6 +39,7 @@ $GNRMC,074152.799,V,,,,,,,250215,,,N*50 {"class":"TPV","mode":1}
$PSRF151,3,1833,28692,0x7EFFFFFF*15
$PSRFEPE,074153.799,V,,,,,*20
+{"class":"TPV","mode":1}
$GNGGA,074153.799,,,,,0,00,,,M,0.0,M,,0000,*67
$GNGNS,074153.799,,,,,NNNN,00,,,0.0,,0000*60
$GPGSA,A,1,,,,,,,,,,,,,,,,*32
@@ -44,6 +48,7 @@ $BDGSA,A,1,,,,,,,,,,,,,,,,*23 $GNRMC,074153.799,V,,,,,,,250215,,,N*51
{"class":"TPV","mode":1}
$PSRFEPE,074154.799,V,,,,,*27
+{"class":"TPV","mode":1}
$GNGGA,074154.799,,,,,0,00,,,M,0.0,M,,0000,*60
$GNGNS,074154.799,,,,,NNNN,00,,,0.0,,0000*67
$GPGSA,A,1,,,,,,,,,,,,,,,,*32
diff --git a/test/daemon/beidou-gb.log.chk b/test/daemon/beidou-gb.log.chk index 1cc921e7..7c7c9e0d 100644 --- a/test/daemon/beidou-gb.log.chk +++ b/test/daemon/beidou-gb.log.chk @@ -1,4 +1,5 @@ $PSRFEPE,053229.438,V,,,,,*23
+{"class":"TPV","mode":1}
$GPGGA,053229.438,,,,,0,00,,,M,0.0,M,,0000*56
$GNGNS,053229.438,,,,,NNNN,00,,,0.0,,0000*63
$GNGSA,A,1,,,,,,,,,,,,,,,*00
@@ -16,6 +17,7 @@ $GBGSV,2,2,05,209,07,033,*62 $GNRMC,053229.438,V,,,,,,,020315,,,N*56
{"class":"TPV","mode":1}
$PSRFEPE,053230.438,V,,,,,*2B
+{"class":"TPV","mode":1}
$GPGGA,053230.438,,,,,0,00,,,M,0.0,M,,0000*5E
$GNGNS,053230.438,,,,,NNNN,00,,,0.0,,0000*6B
$GNGSA,A,1,,,,,,,,,,,,,,,*00
@@ -32,6 +34,7 @@ $GBGSV,2,2,05,209,07,033,*62 $GNRMC,053230.438,V,,,,,,,020315,,,N*5E
{"class":"TPV","mode":1}
$PSRFEPE,053231.438,V,,,,,*2A
+{"class":"TPV","mode":1}
$GPGGA,053231.438,,,,,0,00,,,M,0.0,M,,0000*5F
$GNGNS,053231.438,,,,,NNNN,00,,,0.0,,0000*6A
$GNGSA,A,1,,,,,,,,,,,,,,,*00
|