# Architekturüberblick ## Module - **main**: Setup, Main Loop, Modulverdrahtung - **gps**: NMEA Parsing, Fix-Validierung, Filter - **geo**: Haversine, Bearing, Score - **leds**: Darstellung, Themes, Render-Modi - **button**: Debounce, Short-/Long-Press - **ble_maintenance**: BLE-Wartungsmodus, Datei-/OTA-Transfers - **power**: Deep Sleep und Wakeup - **state_machine**: Zustände und Übergänge - **config**: zentrale Konstanten ## Laufzeitmodell Die Firmware arbeitet kooperativ und single-threaded. Jeder Modulteil muss non-blocking bleiben. ## Datenfluss 1. GPS liefert Positionsdaten 2. Geo berechnet Distanzen und Peilung 3. Arbitration wählt den aktiven Kraftort 4. State Machine bestimmt den Betriebsmodus 5. Renderer übersetzt Zustand + Score in LED-Bilder 6. BLE ist nur im Wartungsfenster aktiv ## Betriebszustände - `BOOT` - `BLE_MAINTENANCE` - `GPS_WAIT` - `ACTIVE` - `DEEP_SLEEP` ## Persistenz - `LittleFS` hält `places.json` - optional später: `config.json` für Laufzeit-Overrides