Fixposition SDK 0.0.0-heads/main-0-g90a51ff
Collection of c++ libraries and apps for use with Fixposition products
Loading...
Searching...
No Matches
Parser FP_A routines and types

API: fpsdk_common/parser/fpa.hpp and fpsdk::common::parser::fpa

Messages are in this form:

$FP,msg_type,msg_version,field3,field4,…,fieldN*CC\r\n

Where:

  • The FP_A 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 = checksum 4E
    • \r\n – Message 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 the msg_type and version. 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)
    • ...
    • ...