From 5c17c94dbc8a72d4e56dc7c8ab4769e3e24e3532 Mon Sep 17 00:00:00 2001 From: Michael Sauer Date: Sun, 20 Sep 2026 01:16:42 +0200 Subject: [PATCH] fix(console): Licht-Befehl gibt den DMX-Override frei - die Konsole ist der Rettungsweg nl_app_api.c loest den Override vor nl_ctrl_apply() auf, die serielle Konsole nicht. Waehrend eines Streams - im Modus "hold" dauerhaft - aenderte ein Licht-Befehl den Zustand unter der Haube, die Lampe tat sichtbar nichts und die Konsole meldete trotzdem "ok". Wer zur seriellen Leitung greift, hat meist genau diesen Fall: dunkel geparkt, kein Controller da. nl_dmx_release() liegt in der schon gehaltenen Lock-Klammer, nl_app_lock() ist nicht rekursiv. --- src/sys/nl_console.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/sys/nl_console.c b/src/sys/nl_console.c index c3fc874..daf1e68 100644 --- a/src/sys/nl_console.c +++ b/src/sys/nl_console.c @@ -5,6 +5,7 @@ #include "wm_watchdog.h" #include "light/nl_control.h" +#include "light/nl_dmx.h" #include "light/nl_engine.h" #include "net/nl_wifi.h" #include "sys/nl_app.h" @@ -123,6 +124,10 @@ static void exec(const nl_cmd_t *c) } nl_app_lock(); + /* Wie in nl_app_api.c: ein Befehl von Hand holt die Kontrolle vom sACN-Sender zurueck. + * Die serielle Konsole ist der Rettungsweg - ohne das Freigeben bliebe eine im Modus + * "hold" dunkel geparkte Lampe dunkel und meldete trotzdem "ok". */ + nl_dmx_release(); err = nl_ctrl_apply(&ch, nl_app_now_ms()); nl_app_unlock(); if (err == NL_CTRL_OK)