docs: mark rumble TX as implemented

Update PLAN.md and README.md current status: host to controller TX
(rumble) is implemented and pending hardware confirmation; the dongle
LED is driven at chip level, so no data path LED work remains.

Co-Authored-By: qwen3.8-27b@q3_k_xl: updated status docs
This commit is contained in:
portersky
2026-08-29 15:19:45 +02:00
parent 0f6c985f7f
commit 490b8af585
2 changed files with 10 additions and 7 deletions
+6 -4
View File
@@ -47,11 +47,13 @@ and exposes connected controllers as HID gamepads.
hardware: live controller input is shown in the app (RX data path).
- C API + Swift app: async session (fast probe; firmware + radio on a worker
thread), state display (idle/starting/ready/error), controller list with
live input monitor.
live input monitor, battery level, and a rumble test button.
Remaining for Phase 3: host to controller TX over the data path (rumble,
LED). Then Phase 4 (HID) and Phase 5 (app polish); exposing the controller
as a macOS HID gamepad is the main user-visible gap.
Host to controller TX over the data path (rumble) is implemented; the dongle
LED is driven at chip level for pairing and client lifecycle. Phase 3 is
complete pending hardware confirmation of rumble. Next: Phase 4 (HID) and
Phase 5 (app polish); exposing the controller as a macOS HID gamepad is the
main user-visible gap.
## Directory Layout
+4 -3
View File
@@ -91,7 +91,8 @@ Strike through or check off as each is resolved.
encryption-enable management frames verified against hardware.
- [ ] **QoS data frames**: RX path verified: controller input QoS frames are
decrypted, fed to the GIP layer, and shown live in the app. Host to
controller TX (rumble, LED over the data path) is not implemented yet.
controller TX (rumble) is implemented via the app's Rumble button,
pending hardware verification.
### 5. AES-CCMP Encryption
@@ -191,9 +192,9 @@ Working end-to-end on hardware:
- EFUSE read, radio init, channel evaluation, beacon TX
- Pairing mode, controller association, GIP handshake + auth
- Live controller input (buttons, sticks, triggers) in the Swift app
- Rumble test button (host to controller TX over the GIP data path)
Not done yet: host to controller TX over the data path (rumble, LED),
virtual HID gamepad (Phase 4), headset audio (Phase 5).
Not done yet: virtual HID gamepad (Phase 4), headset audio (Phase 5).
`xone_cli` exercises the stack manually in a single dongle session: