0x02 addresses a single white LED on the rim, separate from the rev LEDs. Today we send it as a side effect of LED writes under the mistaken name "global enable" — #82 removes that. Once it's no longer being written by accident, it can be offered deliberately as something users control.
Depends on #82. This must not land first: a real channel would be fighting a phantom writer for the same LED.
Shape
There's already a precedent for a non-colour channel — buttonAuxIntensity (col03 subcmd 0x03) is an intensity-only slot with no colour. This is the same idea, one step simpler: a single LED with only on and off.
- New
LedChannel value. rimWhite rather than something generic like auxMono — it's one specific fixture, not a spare slot, and naming it accurately keeps profiles honest.
- On/off derived the same way
legacyRevOnOff already reduces a colour: ColorToIntensity(color) > 0.
LegacyLedEncoder.SetRimWhiteLed(bool) emitting F8 09 02 <on>, with its own dirty latch so it doesn't re-send every frame.
- Schema enum entry, declared only in profiles for rims that actually have the LED.
Open questions
Which rims have one. No capability information exists for this anywhere we can see — official software just sends it and lets rims without one ignore it. So the profile declaration has to come from testing rather than from a lookup. Reports welcome: if your wheel has a small white LED that isn't part of the rev strip, say which wheel and where the LED sits.
What the default should be. Official software turns it on, runs a test, turns it off again, which suggests the wheel owns the resting state. Whether the channel should default to on, off, or leave it alone is a judgement call, not something the protocol answers.
0x02addresses a single white LED on the rim, separate from the rev LEDs. Today we send it as a side effect of LED writes under the mistaken name "global enable" — #82 removes that. Once it's no longer being written by accident, it can be offered deliberately as something users control.Depends on #82. This must not land first: a real channel would be fighting a phantom writer for the same LED.
Shape
There's already a precedent for a non-colour channel —
buttonAuxIntensity(col03 subcmd0x03) is an intensity-only slot with no colour. This is the same idea, one step simpler: a single LED with only on and off.LedChannelvalue.rimWhiterather than something generic likeauxMono— it's one specific fixture, not a spare slot, and naming it accurately keeps profiles honest.legacyRevOnOffalready reduces a colour:ColorToIntensity(color) > 0.LegacyLedEncoder.SetRimWhiteLed(bool)emittingF8 09 02 <on>, with its own dirty latch so it doesn't re-send every frame.Open questions
Which rims have one. No capability information exists for this anywhere we can see — official software just sends it and lets rims without one ignore it. So the profile declaration has to come from testing rather than from a lookup. Reports welcome: if your wheel has a small white LED that isn't part of the rev strip, say which wheel and where the LED sits.
What the default should be. Official software turns it on, runs a test, turns it off again, which suggests the wheel owns the resting state. Whether the channel should default to on, off, or leave it alone is a judgement call, not something the protocol answers.