Skip to content

58: Message Box ​

Read or subscribe to the device's cached down-synced message box on supported firmware. Unsupported products return Not Supported (response code 7). GET • GET uses version 1 when Message Version resolves to 0 (omitted, explicitly zero, or malformed width) or is set to 1, regardless of subscription selection. • Value 2 selects version 2; decoded values above 2 return Invalid Parameter (4). SET • SET requires Message Version 2 and field 129 (maximum 1024 bytes); an explicit zero-length field 129 clears the cache. • A missing or malformed-width Message Version, or any value other than 2, returns Invalid Parameter (4). • Missing field 129 returns Missing Parameter (2); payloads over 1024 bytes also return Invalid Parameter (4). • Field 2 is optional and ignored in SET. Field 1, if present, is also ignored in SET. • Every accepted SET updates the cache, is written to persistent storage when enabled, and is published to current subscribers, including for identical bytes. • SET does not change the selected subscription format. SUBSCRIBE / UNSUBSCRIBE • The latest valid SUBSCRIBE selects the shared format for all MsgBox publications. • A Message Version resolving to 0 (omitted, explicitly zero, or malformed width), or set to 1, selects version 1; value 2 selects version 2. • Decoded values above 2 return Invalid Parameter (4) without changing the selection or subscription. • UNSUBSCRIBE and expiry do not reset the selection. • Version 1 updates use the legacy chunks; version 2 updates include Message Version 2, field 2, and field 129. Empty payload data is omitted. RESPONSE FORMATS • Version 1 is the legacy response layout: additive payload checksum (sum modulo 65536) in field 1 and payload chunks in fields 10..14 (up to 255 bytes each). Its wire layout is unchanged and the response omits Message Version. • Version 2 is selected with the one-byte Message Version (22) header value 2; responses include that header, CRC-16/XMODEM in field 2, and the complete payload in extended field 129. Field 1 is absent from version 2 responses. CHECKSUMS • The device calculates and stores CRC-16/XMODEM of the payload (polynomial 0x1021, initial value 0x0000, no input or output reflection, final XOR 0x0000). • The outer message-frame CRC protects the SET request itself. • Changed content is applied even if its CRC matches the previous CRC. The 16-bit CRC can collide for different payloads. TRACKING-SESSION MESSAGES • Tracking-session messages always use Message Version 2. When Message Box support is enabled, they report the cached-message CRC in field 2, including zero for an empty cache. • In that context, field 129 may contain independent Transmit Now upload data and does not form part of the cached-message CRC.

FieldNameDescriptionType
5MethodRequest a service to be perform an action
Possible values:
  • 1: SET— Set one or more values that are provided in the message payload.
  • 2: GET— Get values for the associated message type.
  • 3: SUBSCRIBE— Subscribe to values for the associated message type. Can be used in conjunction with other header fields to define the subscription parameters, such as Interval, Duration, Timeout, Storage Level and Message Level. If no interval is provided, messages will be sent as and when new data is available. Some data, such as GPS position, may require a set interval to be provided.
  • 5: UNSUBSCRIBE— Unsubscribe from a previous subscription.
uint8
22Message VersionSelects a breaking message-format version for the message being requested or subscribed to.
Supported values and the effect of omitting this header are defined by each message.
uint8
This is an extract of header fields that are relevant to this message type, you can find them all documented in the Headers section.

Payload ​

FieldNameDescriptionTypeUnit
1Legacy ChecksumLegacy additive checksum (sum of payload bytes modulo 65536), used in version 1 responses with the legacy chunk fields. Absent from version 2 responses. Optional and ignored in SET.uint16
2CRCCRC-16/XMODEM of the cached payload (polynomial 0x1021, initial value 0x0000, no input or output reflection, final XOR 0x0000), separate from the outer message-frame CRC. Returned in version 2 responses and tracking-session messages, including an empty cache as zero (0x0000). Optional and ignored in SET; the device calculates it from field 129. One- or two-byte little-endian encoding may omit a high zero byte. Implemented only on Viper devices.uint16
10Legacy Payload Chunk 1Message Version 1 GET response payload chunk; contains up to 255 bytes.bytes
11Legacy Payload Chunk 2Message Version 1 GET response payload chunk; contains up to 255 bytes.bytes
12Legacy Payload Chunk 3Message Version 1 GET response payload chunk; contains up to 255 bytes.bytes
13Legacy Payload Chunk 4Message Version 1 GET response payload chunk; contains up to 255 bytes.bytes
14Legacy Payload Chunk 5Message Version 1 GET response payload chunk; contains up to 255 bytes.bytes
129Full PayloadComplete message-box bytes in SET requests, GET responses, and subscription updates (up to 1024 bytes). SET must include this field; an explicit zero-length value clears the cache. Uses an extended-length field with a uint16 little-endian length prefix. Tracking-session uploads may use this field for independent Transmit Now data instead.bytes

Examples ​

Synthetic GET request (not a hardware capture)

Code ​

For convenience, the following constants can be used to reference this message type.