Skip to content

RPBP v1 — status codes

CMD_RESPONSE and ERROR payloads lead with a single 8-bit status byte. Values are POSIX-errno-inspired and stable — they MUST NOT be renumbered between releases.

Code Name Description
0x00 OK Success.
0x01 EAGAIN Transient; retry after the advised back-off.
0x02 EINVAL Invalid parameters.
0x03 EPERM Operation forbidden (channel not open, bus reserved, …).
0x04 ENOENT Unknown channel or feature.
0x05 EIO Low-level I/O error (I²C NACK, CAN bus-off, SPI underrun…).
0x06 ETIMEDOUT Command timed out on the device.
0x07 EMSGSIZE Payload too large (per MAX_PAYLOAD_LEN or capability MTU).
0x08 ECRC CRC failure in received data (reported, not this frame's).
0x09 EPROTO Protocol violation (should never happen; indicates a bug).
0x0A ENOTSUP Feature not implemented — check the capability map first.
0x0B EBUSY Channel or bus busy.
0x0C ECANCELED Host-cancelled operation.
0x0D ENOSPC Device-side FIFO full.
0x0E EOVERFLOW Credit underflow — indicates a protocol bug, log and assert.
0x100x1F reserved I²C-specific extensions (arbitration loss, …).
0x200x2F reserved SPI-specific extensions.
0x400x4F reserved UART-specific extensions (break, framing, parity).
0xF00xFF vendor Local experimentation; never in public firmware.

Consumers MUST treat unknown codes as "generic failure" and log them with their raw numeric value — do not silently remap to the nearest known code.