Function nmea::sentences::parse_gsa

source ·
pub fn parse_gsa(sentence: NmeaSentence<'_>) -> Result<GsaData, Error<'_>>
Expand description

Parse GSA message

From gpsd:

eg1. $GPGSA,A,3,,,,,,16,18,,22,24,,,3.6,2.1,2.2*3C eg2. $GPGSA,A,3,19,28,14,18,27,22,31,39,,,,,1.7,1.0,1.3*35 1 = Mode: M=Manual, forced to operate in 2D or 3D A=Automatic, 3D/2D 2 = Mode: 1=Fix not available, 2=2D, 3=3D 3-14 = PRNs of satellites used in position fix (null for unused fields) 15 = PDOP 16 = HDOP 17 = VDOP

Not all documentation specifies the number of PRN fields, it may be variable. Most doc that specifies says 12 PRNs.

The CH-4701 outputs 24 PRNs!

The Skytraq S2525F8-BD-RTK output both GPGSA and BDGSA in the same cycle: $GPGSA,A,3,23,31,22,16,03,07,,,,,,,1.8,1.1,1.43E $BDGSA,A,3,214,,,,,,,,,,,,1.8,1.1,1.418 These need to be combined like GPGSV and BDGSV

Some GPS emit GNGSA. So far we have not seen a GPS emit GNGSA and then another flavor of xxGSA

Some Skytraq will emit all GPS in one GNGSA, Then follow with another GNGSA with the BeiDou birds.

SEANEXX and others also do it:

$GNGSA,A,3,31,26,21,,,,,,,,,,3.77,2.55,2.77*1A
$GNGSA,A,3,75,86,87,,,,,,,,,,3.77,2.55,2.77*1C

seems like the first is GNSS and the second GLONASS

One chipset called the i.Trek M3 issues GPGSA lines that look like this: “$GPGSA,A,1,,,,*32” when it has no fix. This is broken in at least two ways:

  • It’s got the wrong number of fields
  • it claims to be a valid sentence (A flag) when it isn’t

Alarmingly, it’s possible this error may be generic to SiRFstarIII