Bei der Abnahme kam Multicast nicht an, waehrend Unicast lief. Der Rueckgabewert von IP_ADD_MEMBERSHIP wurde bis jetzt verworfen - absichtlich, weil ein gescheiterter Beitritt den Unicast-Empfang nicht verhindern soll. Die Folge war aber, dass sich die entscheidende Frage nicht beantworten liess: tritt die Lampe nicht bei, oder reicht das WLAN die Gruppe nicht weiter? system/info traegt deshalb jetzt "sacn.multicast", und der Beitritt schreibt beim Socket-Aufbau eine Zeile auf die Konsole. Am Verhalten aendert sich nichts: ein Fehlschlag bleibt folgenlos fuer Unicast.
26 lines
941 B
C
26 lines
941 B
C
#ifndef NL_SACN_H
|
|
#define NL_SACN_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#include "config/nl_settings.h"
|
|
|
|
/* Wie nl_net_beat und nl_http_beat: app_main fuettert den Watchdog erst, wenn sich jeder
|
|
* Herzschlag bewegt hat - ein haengender Empfangs-Task muss den Chip zuruecksetzen. */
|
|
extern volatile uint32_t nl_sacn_beat;
|
|
|
|
/* Uebernimmt enabled/universe/start_slot/hold und fade_in_ms. Darf jederzeit aufgerufen
|
|
* werden; der Task baut seinen Socket beim naechsten Durchlauf neu auf. */
|
|
void nl_sacn_apply_settings(const nl_settings_t *s);
|
|
void nl_sacn_start(void);
|
|
|
|
/* false, wenn der Empfangs-Task nicht angelegt werden konnte. Dann bewegt sich
|
|
* nl_sacn_beat nie und der Wachhund darf ihn nicht mehr verlangen. */
|
|
bool nl_sacn_running(void);
|
|
/* true, wenn der Beitritt zur Multicast-Gruppe des eingestellten Universe gelungen ist.
|
|
* Unicast an die Lampen-IP funktioniert unabhaengig davon. */
|
|
bool nl_sacn_joined(void);
|
|
|
|
#endif
|