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.
Header
| Field | Name | Description | Type |
|---|---|---|---|
| 5 | Method | Request a service to be perform an action Possible values:
| uint8 |
| 22 | Message Version | Selects 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 |
Payload
| Field | Name | Description | Type | Unit |
|---|---|---|---|---|
| 1 | Legacy Checksum | Legacy 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 | |
| 2 | CRC | CRC-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 | |
| 10 | Legacy Payload Chunk 1 | Message Version 1 GET response payload chunk; contains up to 255 bytes. | bytes | |
| 11 | Legacy Payload Chunk 2 | Message Version 1 GET response payload chunk; contains up to 255 bytes. | bytes | |
| 12 | Legacy Payload Chunk 3 | Message Version 1 GET response payload chunk; contains up to 255 bytes. | bytes | |
| 13 | Legacy Payload Chunk 4 | Message Version 1 GET response payload chunk; contains up to 255 bytes. | bytes | |
| 14 | Legacy Payload Chunk 5 | Message Version 1 GET response payload chunk; contains up to 255 bytes. | bytes | |
| 129 | Full Payload | Complete 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.