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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user