1.5 KiB
1.5 KiB
Firmware Proto Transport
Goal
Add CDC and GATT private communication without rewriting the existing keyboard, time, theme, and LED business logic.
The firmware side should:
- keep standard HID behavior for normal keys
- receive host commands over CDC and GATT
- report private state and function key events over CDC and GATT
- reuse existing modules where possible
Completed Nodes
Node 1: internal function events
Files:
src/events/function_bitmap_event.hsrc/events/function_bitmap_event.csrc/events/function_key_event.hsrc/events/function_key_event.c
Design notes:
function_bitmap_eventcarries the 29-byte function bitmap from hostfunction_key_eventcarries usage + action when a configured function key is pressed or released- these events isolate transport modules from keyboard internals
Planned next nodes
- keyboard split logic uses
function_bitmap_event - CDC transport module
- GATT transport module
- nanopb integration and generated protocol code
Node 2: keyboard split point
Files updated in this step:
src/modules/keyboard_module.c
Design notes:
- reuse the existing keymap and HID path
- add one explicit split point before HID submission
- keep normal keys on HID
- send configured function keys to private transport only
Implemented behavior:
- store the 29-byte function bitmap
- for keyboard usages marked as function keys:
- stop normal HID reporting
- emit
function_key_event
- for consumer usages marked as function keys:
- stop normal HID reporting
- emit
function_key_event