-
Notifications
You must be signed in to change notification settings - Fork 49
Description
So I have the following sequence of NMEA messages from a SimCom GSM modem and GNSS module:
$GNRMC,110133.00,A,5538.77146,N,01232.40379,E,,,100625,,,A,V*38
$GNGGA,110133.00,5538.77146,N,01232.40379,E,1,05,1.87,35.6,M,,M,,*65
$GNGSA,A,3,23,02,27,10,08,,,,,,,,3.45,1.87,2.89,1*01
$GNGSA,A,3,,,,,,,,,,,,,3.45,1.87,2.89,4*0B
$GPGSV,3,1,09,02,60,274,21,08,67,213,28,10,55,067,26,23,14,051,17,0*69
$GPGSV,3,2,09,27,40,158,16,01,28,267,,14,17,323,,22,08,336,,0*60
$GPGSV,3,3,09,32,31,119,,0*56
$GBGSV,1,1,02,27,42,121,,30,,,24,0*41
Note the two GNGSA message in the beginning the first GSA message is for type 1
/GPS satellites, and the second GSA message is for 4
/BeiDou satellites, also note the 4 GSV messages, three from GPS and one for BeiDou(both having a satellite with PRN 27).
Currently this NMEA parser discards the first GSA message due to receiving a second one, leading to the situation where we have a fix of 5 satellites without knowing which satellites the fix is based on.
I also have sequences of message with duplicated PRNs from different GNSS systems in different GSA messages leading to a wrong list of satellites used in a fix. (Consider if the second GSA message listed 27 as a satellite used for fix... this would be interpreted as GPS PRN 27 is used in fix even if the GSA message was related to BeiDou PRNs).
Currently my plan is to first modify the GSA parser to optionally accept the GNSS system ID as the last field, and then merging multiple GSA messages just like is currently done for GSV messages.