Vendor1: Bit 0 = LUCI Override OFF, Bit 1 = LUCI Override ON, Bit 2 = LUCI React OFF, Bit 3 = LUCI React ON, Bits 4-31 = Reserved
Request Feedback Report (1 byte): UInt8 = 0x01
Byte 0: Request (always 0x01)
Sent from App/Device to request a full Wheelchair Feedback HID report. Not edge-triggered or hold/release — value is always 1. The Central should respond with a Feedback report (0x02).
Keepalive Report (1 byte): UInt8 = 0x01. Mandatory, sent every ~233ms.
Byte 0: Keepalive (always 0x01)
Sent from App/Device every ~233ms. Sending a control or request feedback report resets the keepalive timer. Central checks that a keepalive, control, or request feedback report is received at least every 257ms. If 3 consecutive report timeouts occur, Central treats as Release Report and Disable Drive. Central sends a Keepalive Response (16-byte host UUID) after each Keepalive received.
Keepalive Response Report (16 bytes): Host UUID sent from Central to App/Device.
Bytes 0-1: Manufacturer ID (UInt16 BE, Appendix F)
Bytes 2-15: Random tail (RFC 4122 v4 markers preserved)
Sent from Central (host) to the App/Device upon receiving each Keepalive report. The host UUID is a cryptographically unique 16-byte identifier (RFC 4122 v4). Bytes 0–1 encode the 16-bit manufacturer ID big-endian per spec 3.2 Appendix F; the remaining 14 bytes provide per-host uniqueness. The App/Device uses this to verify it is connected to the expected host.