Repository navigation
Conversation
4a5f207 to
feba721
Compare
feba721 to
d9f4d27
Compare
|
This PR now carries Host Lighting Protocol v2.0, the consolidation effort I mentioned recently, with the prior v1.x branch removed. For now the branch holds only the specification ( HLP v2.0 uses a new top-level usage (0x0002) and renumbers every command, so the v1.x details no longer apply. I have updated the PR description to suit only the new v2.0 specification. I have a working v2.0 HLP enabled firmware, which currently follows as 7 commits. Currently, I am including #1719, #1721, and #1733 in the alpha HLP v2.0 firmware, as these include fixes or changes that impact HLP. I will post this as a pre-release on my fork later this week (likely over the weekend) once I have rebuilt firmware for all boards. Any inline comments or suggestions for |
How the add-on works and which modes carry it, discovery, the protocol 2.0 wire reference (commands, pages, events, the versioning contract), measured performance, and the protocol changelog.
d9f4d27 to
33612f7
Compare
|
HLP v2.0-rc4 is built as a pre-release on my fork (which implements the same spec shown in this PR), with firmware for all 55 boards: FYI, rc4 is built from the following (
The rc4 release includes the v2.0 host tools as a zip, with I'll keep this PR as draft with the HLP specification only until 1733 and 1719 are merged. I will then rebase the series onto |
Summary
Host Lighting is an optional add-on that exposes a second, vendor-defined HID interface (usage page 0xFF47, usage 0x0002, fixed 64-byte reports) through which host software drives the board's RGB LEDs while the controller interface works normally. Hosts stage colours by LED run, light, GPIO pin, action or light kind, in whole-frame or overlay takeover, and publish each frame atomically. The board's own animations resume when the host releases control, disconnects, or goes quiet past a keepalive timeout.
The board describes itself over the same interface - identity, state, input modes, LED summary, profiles, controls, lights and animations, read from the live configuration - and signals every change with a state token and an optional event, so hosts need no per-board data and follow user remaps. Discovery is by usage page and usage, which are stable across input modes and VID/PID overrides.
Status
docs/host-lighting.md, the Host Lighting Protocol 2.0 specification, as 1 commit on currentmain, so the wire format can be reviewed before the code. Inline comments on the doc are welcome.docs/host-lighting.mddescribes, arrive with those commits.20260921-hlp-v1-4, releaseHLP_v1.4.What the current version (v2.x) consolidates from before (v1.x)
HELLOlists every command, page, request flag, addressing mode, pixel format and event the board implements. Every number space is grouped by function with spare numbers, and an addition never changes a meaning or a layout.COMMIT_AFTERpublishes the frame with its last report,NO_REPLYsuppresses the reply,KEEPALIVErefreshes a takeover. A streamed frame costs one acknowledged report.HELLO.SUBSCRIBEand aSTATE_CHANGEDevent replace polling.CLAIM: applications sharing a board coordinate through a lease on the keepalive timeout; a change of holder ends the takeover and clears the frame. An exclusive claim also has the board refuse changes from applications that do not claim (status 4, naming the holder); the holder marks its requests with theHOLDERflag.SET_PROFILE,SET_ANIMATION,SET_ANIMATION_SPEEDand a savedSET_BRIGHTNESSapply as the hotkeys do; an unsavedSET_BRIGHTNESSdims for a session without writing flash and ends with the session;SET_INPUT_MODEandREBOOTare magic-guarded and validated from the firmware's own driver mapping and reboot modes.Related