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.
This commit is contained in:
Michael Sauer
2026-09-20 01:16:42 +02:00
parent 993b7c1575
commit 5c17c94dbc
+5
View File
@@ -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)