Files
ninlight-w600/src/net/nl_mdns.h
T
Michael Sauer bc3eff1a41 fix(mdns): im eigenen AP bis zum Erfolg wiederholen, netif-Zeiger raus
I5: s_ap_mdns_done wurde VOR nl_mdns_on_ip_up() gesetzt und merkte damit den
Versuch, nicht den Erfolg. Die Arbeit laeuft asynchron im tcpip-Thread; liefert
pick_netif() dort NULL, weil das AP-Netif noch keine Adresse hat, protokolliert
announce() nur "no usable netif yet" - und niemand versucht es je wieder,
solange der AP steht. mDNS ist laut Spec Pflichtteil, die Lampe waere im
eigenen AP dauerhaft nicht auffindbar.

Neu meldet nl_mdns_service_up() den tatsaechlichen Zustand aus s_service_added,
und der Netz-Task stoesst alle 5 s erneut an, solange die Lampe standalone ist,
der AP steht und der Dienst noch nicht gemeldet ist. s_announce_pending deckt
das Fenster zwischen dem Anstossen und dem Lauf von announce() ab: ohne das
haette die Abfrage beim Wechsel Station -> eigener AP noch den Dienst des alten
Netifs als Erfolg gewertet.

Dazu der netif-Zeiger (%p) aus der mdns-Protokollzeile: waehrend der
Fehlersuche war er wertvoll, in einer Release-Firmware ist er Rauschen.
Namenskuerzel, Nummer und IPv4 unterscheiden Station und eigenen AP bereits
eindeutig, eine Speicheradresse in einem Protokoll, das Nutzer weiterreichen,
hilft niemandem - und die Abnahmeliste zitiert die Zeile ohnehin ohne ihn.
2026-10-02 19:32:47 +02:00

16 lines
549 B
C

#ifndef NL_MDNS_H
#define NL_MDNS_H
#include <stdbool.h>
/* Called by the network task once the station got an IP (again). */
void nl_mdns_on_ip_up(void);
/* True, sobald der Dienst wirklich angemeldet ist - und erst, nachdem die zuletzt
* angestossene Bekanntmachung im tcpip-Thread auch gelaufen ist. Der Netz-Task stoesst
* im eigenen AP so lange erneut an, bis das hier wahr ist (I5). */
bool nl_mdns_service_up(void);
/* Device name for the TXT record; re-announces when mDNS is running. */
void nl_mdns_set_name(const char *name);
#endif