Skip to main content

Status Codes

The StatusByte in D2 data frames indicates the device or hub status at the time of transmission. Status codes are split into two ranges.

Device-Level Codes (0x00–0x7F)

These codes originate from the physical device.

CodeNameDescription
0x00NormalNo error; nominal operation.
0x01I2C Slave SkippedAn I2C slave device did not respond.

0x01 — I2C Slave Skipped

When a slave device fails to respond over I2C, the master sets StatusByte = 0x01 and encodes diagnostic information in the StatusPayload:

ByteContentDescription
00x00Reserved (always zero)
1SymbolID low byteLow byte of the first skipped signal's SymbolID
2SymbolID high byteHigh byte of the first skipped signal's SymbolID
3SlaveIDID of the unresponsive slave

Data values for signals belonging to the skipped slave should be considered invalid in this frame.


Hub-Level Codes (0x80–0xFF)

These codes are emitted by hubs when upstream device connectivity changes.

CodeNameDescription
0x80UPSTREAM_LOSTUpstream device disconnected.
0x81UPSTREAM_RECONNECTEDUpstream device reconnected.

0x80 — UPSTREAM_LOST

The hub lost its connection to the upstream device.

StatusPayload:

ByteContentDescription
0Auto-reconnect flag0x01 = auto-reconnect enabled, 0x00 = disabled
1–30x00Reserved

When this status is active, signal data from the upstream device should be considered stale.

0x81 — UPSTREAM_RECONNECTED

The hub successfully reconnected to the upstream device.

StatusPayload:

ByteContentDescription
0–30x00 0x00 0x00 0x00Reserved (all zeros)

After receiving this status, the host should re-request the symbol list (B0) to account for possible schema changes during the disconnection.


See Also

  • Elements — StatusByte and StatusPayload field definitions
  • CRC32 — In D2 frames, StatusByte and StatusPayload are included in the CRC scope