Rynk Protocol Reference
Current protocol version: 0.1.
Every transport (USB CDC, BLE GATT, BLE HID) carries the same frame — a 5-byte header plus a postcard-encoded payload:
- Requests use CMD
0x0000..=0x7FFF. The response echoes CMD and SEQ and wraps its payload in postcardResult<T, RynkError>(T = ()forSet*). - Topics use CMD
0x8000..=0xFFFF(server → host push, SEQ0, bare payload).
Which commands a firmware answers depends on the RMK Cargo features it was built with: a row with no Feature is present once rynk is on, and the rest need their feature (_ble, split, …) compiled in. A command the firmware wasn't built with answers UnknownCmd.
Endpoints
Topics
Topics are best-effort pushes; the Get* endpoints above mirror their payloads so a host can recover a missed push.
Compatibility
GetVersion(0x0001) and itsResult<ProtocolVersion, RynkError>reply are frozen across all versions.- Within a major version, adding a CMD or topic is a
minorbump: old firmware answersUnknownCmd, old hosts ignore unknown topics. - Reshaping an existing request/response — including appending a field — is a
majorbump.