summaryrefslogtreecommitdiff
path: root/packet.c
diff options
context:
space:
mode:
authorChris Lawrence <lordsutch@gmail.com>2017-12-11 01:12:14 -0500
committerGary E. Miller <gem@rellim.com>2018-06-15 21:00:00 -0700
commitaed938aacb07f304265c36638b081b0d65007bd5 (patch)
treeb5308527f670735dba366922080eb071988f3b1d /packet.c
parent648ccd2a9d3eb2fa2f88f2116a84b2e5ac6278b1 (diff)
downloadgpsd-aed938aacb07f304265c36638b081b0d65007bd5.tar.gz
Support Galileo $GA... talkers and fix a couple of $GB cases
Now that the Galileo constellation is live, the NMEA 4.1 standard appears to have standardized on the "$GA..." prefix for Galileo-specific messages. The lexer currently filters these out; this patch ensures they go through to e.g. gpspipe -r. (I tore my hair out for days trying to figure out why these were not being passed through even though I could see them using screen etc.) Also added logic to the GSA and GSV message parsing to account for the Galileo messages. It probably needs more work to match up satellite numbers between the GSA and GSV messages and to account for the GNSS type field in NMEA 4.1, but it's a start at least. I also fixed a couple of situations where the 'GB' prefix was being ignored even though 'BD' was not. This leads to a regression in test/daemon/beidou-gb.log, but the "regression" is actually incorrect old behavior (JSON messages omitting BeiDou satellites) exposed by the patch. Signed-off-by: Gary E. Miller <gem@rellim.com>
Diffstat (limited to 'packet.c')
-rw-r--r--packet.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/packet.c b/packet.c
index 63351d39..617a845e 100644
--- a/packet.c
+++ b/packet.c
@@ -94,6 +94,7 @@ PERMISSIONS
* $GN -- Mixed GPS and GLONASS data, according to IEIC 61162-1
* $BD -- Beidou
* $GB -- Beidou
+ * $GA -- Galileo
* $QZ -- QZSS GPS augmentation system
* $II -- Integrated Instrumentation (Raytheon's SeaTalk system).
* $IN -- Integrated Navigation (Garmin uses this).
@@ -389,7 +390,7 @@ static bool nextstate(struct gps_lexer_t *lexer, unsigned char c)
* We have a log from China with a Beidou device using $GB
* rather than $BD.
*/
- if (c == 'B' || c == 'P' || c == 'N' || c == 'L')
+ if (c == 'B' || c == 'P' || c == 'N' || c == 'L' || c == 'A')
lexer->state = NMEA_LEADER_END;
else
(void) character_pushback(lexer, GROUND_STATE);