7 Commits

Author SHA1 Message Date
Claude
ec97600763 test(07-03): add firmware frame mode tests — 19 passing
- TestDRGBFrames: single pixel, 300 LEDs, all black/white
- TestDRGBWFrames: single pixel, 300 LEDs RGBW, W channel preserved
- TestDNRGBFrames: single packet, multi-packet 600 LEDs, start_index offset
- TestFrameAssembler: single chunk, two chunks, timeout, reset, round-trip
- TestFrameModeIntegration: DRGB/DRGBW pixel counts, strip type routing
2026-04-07 15:42:37 +00:00
Claude
62bc61259f feat(07-01): add firmware scaffold — boot.py, config.json, led_driver.py, protocol tests
- firmware/boot.py: WiFi connection on startup (MicroPython boot sequence)
- firmware/config.json: default device config with all 9 fields (ssid, password, led_count, strip_type, led_pin, spi_id, spi_clk_pin, spi_dat_pin, udp_port)
- firmware/led_driver.py: NeoPixelStrip (SK6812 RGBW) and WS2801Strip (RGB SPI) with unified interface (write_rgb, write_rgbw, fill, clear)
- tests/test_firmware_protocol.py: 21 host-side tests for round-trip protocol parsing (DRGB, DRGBW, DNRGB, animation_cmd)
2026-04-07 15:42:17 +00:00
Claude
49f0b0f68c feat(07-02): add animation test suite and re-apply main.py render wiring
- Create tests/test_firmware_animations.py with 30+ tests for all 7 animations
- Re-apply animation rendering to firmware/main.py (07-01 parallel agent reverted)
- Tests cover: _hsv_to_rgb, all animation classes, create_animation factory
- Full round-trip test: server encode -> firmware parse -> create -> render
2026-04-07 15:41:45 +00:00
Claude
3829f81a5f test(03-03): add failing e2e protocol tests — RED
- 7 e2e tests covering DRGB, DRGBW, DNRGB, ANIM_CMD, full pipeline, SK6812, standalone import
- Uses asyncio.run() pattern (no pytest-asyncio dependency)
- All tests fail with ModuleNotFoundError: simulator not yet implemented
2026-04-06 21:50:40 +00:00
Claude
f4da9564d4 feat(03-02): implement animation library — 7 types with registry and factory
- AnimationBase ABC with render(t, led_count) and from_params() contract
- SolidColorAnimation: time-independent uniform fill
- ChaseAnimation: moving lit segment with forward/reverse support
- PulseAnimation: sine-wave breathing effect (speed maps to period)
- RainbowAnimation: HSV hue cycle across strip via colorsys.hsv_to_rgb
- StrobeAnimation: on/off flashing at 1-20 Hz with configurable duty cycle
- ColorWipeAnimation: progressive fill from start or end
- FireAnimation: Fire2012 algorithm with cooling/sparking/heat-to-color mapping
- ANIMATION_REGISTRY + create_animation() factory function
- All 24 tests passing
2026-04-06 21:47:39 +00:00
Claude
920243fcae test(03-02): add failing tests for animation library
- Tests for all 7 animation types (solid_color, chase, pulse, rainbow, strobe, color_wipe, fire)
- Tests for AnimationBase ABC contract
- Tests for ANIMATION_REGISTRY and create_animation() factory
- Tests for from_params() on all types
- Length invariant test covering all animations
2026-04-06 21:45:54 +00:00
Claude
ffc4ef6dc6 test(03-01): add failing tests for protocol encoders and animation command
- DRGB/DRGBW/DNRGB encoder behavior tests (byte layout, MTU, truncation)
- DNRGB start index big-endian byte order tests
- Animation command 0xAC packet tests (all 7 types, roundtrip, flags)
- Tests fail: lightsync.protocol.drgb and animation_cmd modules do not exist yet
2026-04-06 21:40:02 +00:00