--- gsd_state_version: 1.0 milestone: v1.0 milestone_name: milestone status: verifying stopped_at: Phase 1 complete — all 5 FW requirements approved on hardware last_updated: "2026-04-03T11:36:20.546Z" last_activity: 2026-04-03 progress: total_phases: 4 completed_phases: 1 total_plans: 4 completed_plans: 4 percent: 0 --- # Project State ## Project Reference See: .planning/PROJECT.md (updated 2026-04-03) **Core value:** Songs mit LED-Animationen choreografieren und abspielen — der Nutzer baut Timeline-basierte Lichtshows zu seiner Musik. **Current focus:** Phase 01 — esp32-firmware ## Current Position Phase: 01 (esp32-firmware) — EXECUTING Plan: 4 of 4 Status: Phase complete — ready for verification Last activity: 2026-04-03 Progress: [░░░░░░░░░░] 0% ## Performance Metrics **Velocity:** - Total plans completed: 0 - Average duration: - - Total execution time: 0 hours **By Phase:** | Phase | Plans | Total | Avg/Plan | |-------|-------|-------|----------| | - | - | - | - | **Recent Trend:** - Last 5 plans: - - Trend: - *Updated after each plan completion* | Phase 01-esp32-firmware P01 | 3 | 3 tasks | 6 files | | Phase 01-esp32-firmware P01 | 21min | 4 tasks | 7 files | | Phase 01-esp32-firmware P02 | 3min | 2 tasks | 5 files | | Phase 01-esp32-firmware P03 | 14 | 2 tasks | 11 files | | Phase 01-esp32-firmware P04 | 5 | 1 tasks | 2 files | | Phase 01-esp32-firmware P04 | 5 | 2 tasks | 2 files | ## Accumulated Context ### Decisions Decisions are logged in PROJECT.md Key Decisions table. Recent decisions affecting current work: - [Roadmap]: Hardware-first build order — ESP32 is the validation target for all Pi-side work; developing against a mock risks protocol mismatches late. - [Roadmap]: WiFi+RMT coexistence must be tested on day 1 of Phase 1 (documented FastLED #1657, February 2026 — actively problematic on single-core ESP32-C3). - [Roadmap]: SK6812 is RGBW (4 bytes/LED) — configure explicitly before any animation code; retrofitting requires protocol version bump. - [Phase 01-esp32-firmware]: GPIO3 for SK6812 RMT (safe on SuperMini); GPIO6/7 for WS2801 SPI with GPIO0/1 fallback noted for JTAG conflicts - [Phase 01-esp32-firmware]: NeoWs2801Spi2MhzMethod for 5m cable signal integrity; NeoGrbwFeature for SK6812 RGBW 4-byte mode - [Phase 01-esp32-firmware]: -DESP32_ARDUINO_NO_RGB_BUILTIN mandatory in platformio.ini to prevent RMT driver conflict with Arduino core 3.x - [Phase 01-esp32-firmware]: Hardware coexistence validated: WIFI_PS_NONE eliminates RMT flicker on ESP32-C3, zero flicker confirmed during 30s UDP burst test - [Phase 01-esp32-firmware]: GPIO3/6/7 pin assignments confirmed on physical hardware — no JTAG conflicts, fallback GPIO0/1 not needed - [Phase 01-esp32-firmware]: Two-queue FreeRTOS pattern: xQueueSendFromISR in AsyncUDP callback, parseTask drains rawQueue and dispatches LedCommand to commandQueue — prevents watchdog resets from JSON heap alloc in callback - [Phase 01-esp32-firmware]: STATUS cmd handled inline in parseTask (no animation engine route) — needs sender IP/port from raw packet context, responds via udp.writeTo() - [Phase 01-esp32-firmware]: parseCommand() enforces brightness cap (max 60%) per D-09 — firmware-side safety cap regardless of Pi value - [Phase 01-esp32-firmware]: vTaskDelayUntil for 50fps drift-free animation tick — never drifts by compute time unlike vTaskDelay - [Phase 01-esp32-firmware]: autoWhite formula: min(r,g,b)/2 warm-white approximation — triggers only when W=0 on RGBW strips - [Phase 01-esp32-firmware]: initAnimationEngine() called before WiFi.begin() so startup breathing animation is visible during WiFi connect (D-11) - [Phase 01-esp32-firmware]: WIFI_PS_NONE re-applied on WiFi reconnect to prevent RMT flicker after disconnect/reconnect cycle - [Phase 01-esp32-firmware]: Hardware acceptance test approved — all 5 FW requirements (FW-01 through FW-05) validated on physical ESP32-C3 SuperMini with both LED strips ### Pending Todos None yet. ### Blockers/Concerns - [Phase 1]: ESP32-C3 RMT+WiFi coexistence has conflicting documentation — test simultaneously on first flash. - [Phase 1]: GPIO pin assignment for simultaneous RMT (SK6812) + SPI (WS2801) on SuperMini needs hardware validation. - [Phase 2]: aubio 0.4.9 ARM pip wheel on Raspberry Pi OS bookworm unverified — may require source build. - [Phase 2]: sounddevice + miniaudio simultaneous PipeWire access needs early testing. ## Session Continuity Last session: 2026-04-03T11:36:15.907Z Stopped at: Phase 1 complete — all 5 FW requirements approved on hardware Resume file: None