Commit Graph
31 Commits
Author SHA1 Message Date
Michael Sauer 2f7cadaeee fix: Verbindungs-Timeout im WLAN-Zustandsautomaten 2026-09-11 22:42:49 +02:00
Michael Sauer 2bdeaed98d feat: WLAN-Zustandsautomat mit Onboarding, Backoff und AP-Fallback 2026-09-11 22:35:30 +02:00
Michael Sauer dc23d3d887 feat: REST-API mit Routing, Auth und Handlern 2026-09-11 22:24:24 +02:00
Michael Sauer 4a23df1b8d feat: cJSON, Gerätenamen und HTTP-Parser 2026-09-11 22:18:14 +02:00
Michael Sauer 0648b3a252 fix: Flash-Lock im SDK, Store-Lock, Flush vor Reboot 2026-09-11 22:10:28 +02:00
Michael Sauer dce9ad2946 docs: Watchdog-Test am EVK bestanden 2026-09-11 21:33:50 +02:00
Michael Sauer e19ee98ee8 docs: Hardware-Checkliste und README aktualisieren
hardware-checklist.md: Watchdog-Zeile beschreibt jetzt den wdtest-Testablauf (Neustart nach ca. 20-40s), bleibt unabgehakt; neuer Punkt unter "Später (Lampen)" zum SM2135EH-Standby-Bit. README.md: tools/flash.sh full als auf Hardware noch ungetestet markiert.
2026-09-11 20:53:50 +02:00
Michael Sauer d03b571bb8 docs: irreführende Kommentare zu Flash-Locking und G95-Pinbelegung korrigieren
nl_flash_w600.c: der Header-Kommentar behauptete, tls_spifls_*/tls_fls_* kämen ganz ohne Locking aus - tatsächlich ist nur das Pin-Switching für die >1MB-Region (ioclose/cs/ck-Switching in wm_internal_fls.c) unsynchronisiert, unser Mutex serialisiert ausschließlich ninlights eigene Tasks, nicht SDK-interne Flash-Nutzer wie den Parameter-Store oder fwup (für Plan 2 vorgemerkt). Auch der Kommentar auf nl_flash_region_base() war ungenau. nl_board.c: G95-Kommentar eindeutiger formuliert (aktuelle Tabelle CW=PB13/WW=PB15, alte Lampen ggf. PB16=WW/PB15=CW).
2026-09-11 20:53:43 +02:00
Michael Sauer 9ce5135489 fix: Rückgabewert von tls_os_mutex_create in UserMain prüfen
Schlägt die Mutex-Erstellung für s_lock fehl, wird jetzt "FATAL: cannot create app lock" ausgegeben und UserMain kehrt zurück, statt mit einem NULL-Mutex weiterzumachen und den App-Task zu starten.
2026-09-11 20:53:34 +02:00
Michael Sauer 4f270ad79b fix: Watchdog wirksam machen, Factory-Reset im App-Task, Resetzähler-Retry
- vApplicationIdleHook() füttert den Watchdog nicht mehr (sdk/Platform/Sys/wm_main.c,
  dokumentiert als Patch 4 in sdk/PATCHES.md). Bisher fütterte der Idle-Task den
  Watchdog bei jedem Leerlauf, auch wenn ein Task deadlockt (z.B. nl_app_lock() hält
  und nie freigibt) - der Watchdog konnte so nie greifen.
- Neues Konsolenkommando `wdtest` (Parser in nl_console_cmd.c/.h, Ausführung in
  nl_console.c, Host-Test in test_console_cmd.c): hält nl_app_lock() für immer, damit
  light_task und app_task blockieren und nur der Watchdog-Reset den Chip retten kann.
- nl_app_request_factory_reset() (nl_app.h) setzt nur ein volatile Flag; app_task
  prüft es in der Hauptschleife und ruft nl_app_factory_reset() selbst auf, da nur der
  App-Task die Flash-Stores besitzt. Das Konsolenkommando `factory` ruft jetzt diese
  Funktion statt nl_app_factory_reset() direkt aufzurufen, um die Race mit
  nl_state_log_append()/nl_resetcnt_clear() im App-Task zu vermeiden. Der Bootpfad
  (Bootzähler >= 5) ruft weiterhin direkt nl_app_factory_reset() auf.
- nl_resetcnt_clear() wird nur noch als erledigt markiert, wenn es 0 zurückgibt, damit
  ein fehlgeschlagener Clear in der nächsten Schleifeniteration erneut versucht wird.
2026-09-11 20:53:25 +02:00
Michael Sauer 488dac9167 fix: LED-Init an den Anfang von app_task verschieben (Boot-Reihenfolge Spec §3.4)
nl_led_init(board) läuft jetzt direkt nach nl_flash_init(), noch vor dem Reset-Counter/Settings/State-Log-Scan, damit die LEDs von Anfang an dunkel bleiben statt erst nach dem Flash-Scan initialisiert zu werden.
2026-09-11 17:05:08 +02:00
Michael Sauer 64acc6b1d9 fix: Flash-Skript an EVK-Befund angepasst, Checkliste abgehakt
- Flash-Skript flasht jetzt das App-Image (ninlight_<dev>_gz.img) mit 460800 baud
- -rs none statt -rs rts, Reset-Taste manuell nötig
- Optionales Argument 'full' für Vollbild-Flash (blank chips nur)
- Checkliste Light und Persistenz als bestanden markiert, Testdatum notiert
2026-09-11 16:45:15 +02:00
Michael Sauer b986bb10b9 build: Build aller Geräte und README 2026-09-11 16:30:47 +02:00
Michael Sauer 7502f4f022 fix: Flash-Mutex beim Boot statt im kritischen Abschnitt anlegen 2026-09-11 16:14:15 +02:00
Michael Sauer 21dcdcb13b fix: Flash-Zugriffe der ninlight-Tasks per Mutex serialisieren 2026-09-11 16:10:09 +02:00
Michael Sauer 55b162b0a0 feat: Persistenz, Einschaltverhalten, Werksreset und Watchdog 2026-09-11 16:01:41 +02:00
Michael Sauer 757620f222 feat: LED-Treiber, Licht-Task und UART-Testkonsole 2026-09-11 13:51:31 +02:00
Michael Sauer 1074a8f034 feat: Parser für die UART-Testkonsole 2026-09-11 13:43:08 +02:00
Michael Sauer 663825c165 feat: Power-Cycle-Zähler für den Werksreset 2026-09-11 13:39:01 +02:00
Michael Sauer 35b59a64ed fix: Zustands-Log bei fehlgeschlagenem Löschen neu einlesen 2026-09-11 13:35:56 +02:00
Michael Sauer b1b4ec214b feat: Ring-Log für den Lichtzustand 2026-09-11 13:30:26 +02:00
Michael Sauer 91721ac47d feat: Flash-HAL-Interface und Settings-Store mit A/B-Slots
Implementiert:
- Flash HAL (nl_flash_read/write/erase_sector) Interfaces
- Flash Layout mit A/B-Settings Slots und weiteren Regions
- Test-Fake für Flash mit Fehlerinjection (Stromausfall-Simulation)
- Settings-Store mit CRC32 Recovery und Slot-Alternierung
- Vollständige Test-Suite mit Corruption/Power-Loss-Tests
2026-09-11 13:24:52 +02:00
Michael Sauer e0bde7bee3 feat: Licht-Steuerung mit Fade-Regeln und Einschaltverhalten 2026-09-11 13:20:49 +02:00
Michael Sauer 472d2398ac fix: Engine-Grenzen für Segmente und Blink-Anzahl 2026-09-11 13:17:21 +02:00
Michael Sauer 73a7f31cb6 feat: Licht-Engine mit Transitionen, Moduswechsel und Effekten 2026-09-11 13:11:23 +02:00
Michael Sauer 42eeb0e0eb feat: Farbrechnung mit CIE-Helligkeit und CW/WW-Mischung 2026-09-11 13:06:19 +02:00
Michael Sauer 6e6cfeaf3a feat: Board-Tabelle für alle acht Gerätetypen 2026-09-11 13:00:02 +02:00
Michael Sauer 1b0501179d build: W600-SDK importiert, Firmware-Build und Hello am EVK
Docker-Build mit gcc-arm-none-eabi 4.9-2014q4 (statt Homebrew-Cask) verwendet,
Dockerfile/tools/docker.sh dafür aus Task 13 vorgezogen. cmake/sdk.cmake schont
gcc 4.9 (kennt -fcommon/-Wno-error=... nicht). Zwei zusätzliche SDK-Stubs
(EarlyInit, pre_gpio_config) in src/sys/sdk_stubs.c ergänzt, siehe sdk/PATCHES.md.
2026-09-11 12:52:26 +02:00
Michael Sauer 4e7ff78fc6 test: Host-Testumgebung mit Unity, SHA256 und CRC 2026-09-11 12:23:04 +02:00
Michael Sauer 23df6b9d29 build: .superpowers/ ignorieren 2026-09-11 12:19:33 +02:00
Michael Sauer 3854c3a0bd Initiales Repo mit .gitignore 2026-09-11 11:17:52 +02:00