Skip to content

Add support for parsing GNSS system ID in GSA messages #148

@jonasrudloff

Description

@jonasrudloff

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions