Skip to content

feat(rmk): add RynkHidService #893

Merged
HaoboGu merged 1 commit into
feat/rynk_protocolfrom
feat/rynk-hid-firmware
Jun 30, 2026
Merged

feat(rmk): add RynkHidService #893
HaoboGu merged 1 commit into
feat/rynk_protocolfrom
feat/rynk-hid-firmware

Conversation

@HaoboGu

@HaoboGu HaoboGu commented Jun 29, 2026

Copy link
Copy Markdown
Owner

For remapping over BLE in web, HID over BLE is necessary.

@HaoboGu HaoboGu mentioned this pull request Jun 29, 2026
@HaoboGu HaoboGu force-pushed the feat/rynk-hid-firmware branch 5 times, most recently from 04e1acf to e889de8 Compare June 29, 2026 12:48
Carry the rynk protocol over a BLE HID-over-GATT report (vendor usage
0xFF60) so a pure browser can configure an OS-bonded keyboard via WebHID —
Web Bluetooth can't attach a bonded keyboard, but WebHID rides the existing
OS HID link. The custom-GATT path and the new WebHID path share one
RynkService::run_session over a single BLE link — RynkBleTx routes each
reply to whichever characteristic the host is using (RynkBleSource) —
rather than a second concurrent session.

- RYNK_HID_REPORT_SIZE (32) + RynkHidReport descriptor; each report is just
  a fixed 32-byte fragment of the rynk frame stream, delimited by the frame
  header's LEN — no per-report length, like a small-MTU GATT notification
- gatt routing + CCCD arms reuse the existing encryption gate
- reserve an extra topic-subscriber slot so the two BLE sources don't
  overflow the pubsub subs budget on connect
- tests: HID fragment/de-frag units and a HID-framed loopback through the
  real dispatcher

Connection path hw-verified on nRF54LM20A (boots, advertises, host connects +
encrypts, GATT serves the service); the frame fragmenting is covered by the
HID loopback through the real dispatcher.

Signed-off-by: Haobo Gu <haobogu@outlook.com>
@HaoboGu HaoboGu force-pushed the feat/rynk-hid-firmware branch from e889de8 to bfff76b Compare June 29, 2026 15:12
@HaoboGu HaoboGu merged commit acd7720 into feat/rynk_protocol Jun 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant