NMEA style framing is used. Frames (messages) are in this form:
$FP,msg_type,msg_version,field3,field4,…,fieldN*CCrnWhere:
-
The NMEA style framing:
-
$– 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= checksum4E -
rn– Sentence termination characters (CR + LF, ASCII 13 + 10)
-
-
A Fixposition identifier:
-
FP– Fixposition ASCII message identifier, “FP” (ASCII 70 + 80)
-
-
Fixposition message type and version:
-
msg_type(=field1) – Message type, all capital letters (ASCII 65–90) -
msg_version(=field2) – Message version, decimal number (letters 0–9, ASCII 48–57), range 1–…
-
-
Data fields (payload)
-
field3,field4,…,fieldN– The structure of the message data is defined by themsg_typeandversion. 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).
-
-
Field separators
-
All fields (identifier, message type, message version, data fields) are separated by a comma (
,, ASCII 44)
-
-
Null fields
-
Data fields can be null, meaning their value is absent to indicate that no data is available. The data for null fields is the empty string. For example:
-
Definition:
…,fieldi,fieldi+1,fieldi+2,… -
Values:
fieldi= 123,fieldi+1= null,fieldi+2= 456 -
Payload string:
…,123,,456,…
-
-
-
Data field types:
-
Numeric: Decimal integer number, one or more digits (0-9) and optional leading “-” sign
-
Float (.x): Decimal floating point number, one or more digits (0-9) and optional leading “-” sign, with x digits fractional part separated by a dot (“.”)
-
Float (x): Decimal floating point number with x significant digits, optional leading “-“, optional fractional part separated by a dot (“.”)
-
String: String of allowed payload characters (but not the
,field separator)
-