Fixposition SDK 0.0.0-heads/main-0-g90a51ff
Collection of c++ libraries and apps for use with Fixposition products
|
API: fpsdk_common/parser/nmea.hpp and fpsdk::common::parser::nmea
The NMEA framing and behaviour is defined by the NMEA 0183 standard (v4.11 and erratas).
In NMEA speak messages are called Sentences. Frames (messages) are in this form:
$TalkerFormatter,field1,field2,…,fieldN*CC\r\n
Where:
$
– Start character ("$", ASCII 36)*CC
– Checksum: "\*" (ASCII 42) and two digit XOR value of all payload characters in captial hexadecimal notation, for example: "FPX" = 'F' ^ 'P' ^ 'X' = 70 ^ 80 ^ 88 = 78 = 0x4e
= checksum 4E
\r\n
– Sentence termination characters (CR + LF, ASCII 13 + 10)Talker
ID – Two capital characters:GP
– Talker ID for GPS, also legacy resp. "compatibility"GL
– Talker ID for GLONASSGA
– Talker ID for GalileoGB
– Talker ID for BeiDouGQ
– Talker ID for QZSSGI
– Talker ID for NavIC (IRNSS)GN
– Talker ID for any combination of GNSSFormatter
ID – Three capital characters, for example:RMC
for the message containing recommended minimum specific GNSS datafield1,field2,…,fieldN
– The structure of the message data is defined by the Formatter
. Each field can contain all printable 7-bit ASCII characters (ASCII 32–126), excluding the reserved characters !
(ASCII 33), $
(ASCII 36), *
(ASCII 42), ,
(ASCII 44), \
(ASCII 92), ~
(ASCII 126).,
(comma, ASCII 44)…,fieldi,fieldi+1,fieldi+2,…
fieldi
= 123, fieldi+1
= null, fieldi+2
= 456…,123,,456,…