Frame timeout (2s) reverts to last animation, not idle — matches WLED behavior
frame_is_rgbw flag routes DRGB/DNRGB to write_rgb, DRGBW to write_rgbw
FrameAssembler keyed by absolute pixel index (start_index + i) — tolerates out-of-order chunks
duration
completed
tasks_completed
files_changed
2 minutes
2026-04-07
3
3
Phase 7 Plan 3: Frame Mode Renderer Summary
One-liner: DRGB/DRGBW/DNRGB raw frame handling with FrameAssembler multi-packet reassembly and 2s animation fallback timeout.
What Was Built
Added raw frame mode to the firmware. The device now receives pixel data from the server and writes it directly to the LED strip, supporting three packet types:
DRGB (0x02): 3 bytes/pixel RGB, up to 490 pixels per packet — routed to strip.write_rgb()
DRGBW (0x03): 4 bytes/pixel RGBW, up to 367 pixels per packet — routed to strip.write_rgbw()
DNRGB (0x04): chunked RGB with start_index for large strips — reassembled by FrameAssembler, then routed to strip.write_rgb()
Frame mode takes priority over animation mode. When no frame packet arrives for 2 seconds, the firmware reverts to the last animation command.