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 "wm_watchdog.h"
|
||||||
|
|
||||||
#include "light/nl_control.h"
|
#include "light/nl_control.h"
|
||||||
|
#include "light/nl_dmx.h"
|
||||||
#include "light/nl_engine.h"
|
#include "light/nl_engine.h"
|
||||||
#include "net/nl_wifi.h"
|
#include "net/nl_wifi.h"
|
||||||
#include "sys/nl_app.h"
|
#include "sys/nl_app.h"
|
||||||
@@ -123,6 +124,10 @@ static void exec(const nl_cmd_t *c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
nl_app_lock();
|
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());
|
err = nl_ctrl_apply(&ch, nl_app_now_ms());
|
||||||
nl_app_unlock();
|
nl_app_unlock();
|
||||||
if (err == NL_CTRL_OK)
|
if (err == NL_CTRL_OK)
|
||||||
|
|||||||
Reference in New Issue
Block a user