fix(api): system/info meldet im AP-Betrieb den AP-Namen
nl_wifi_status() fuellte out->ssid immer aus der Stations-SSID. Eine Standalone-Lampe mit noch gespeicherten Heimnetzdaten meldete damit mode: "ap", standalone: true UND den Namen des Heim-WLANs: App und HA zeigten den falschen Netznamen, und der Heimnetzname stand in einer tokenfrei lesbaren Antwort. Die Spec verlangt dort den AP-Namen. Gemeldet wird jetzt im Modus "ap" (eigener AP oder Onboarding-AP) der WIRKSAME AP-Name: die Daten des laufenden AP, sonst der gewuenschte, sonst der Hostname. "apsta" bleibt bei der Station - dort ist sie die Hauptsache. Erwuenschter Nebeneffekt: ein Rueckfall auf andere AP-Daten wird ueber die API sichtbar, ohne ein neues Feld. Beruehrt den API-Vertrag, deshalb ein eigener Commit. test/test_api.c ist nicht betroffen: die Tests fahren ueber den Fake nl_sys_info_t, nl_wifi_status() selbst gibt es im Hostbau nicht.
This commit is contained in:
+10
-1
@@ -574,7 +574,16 @@ void nl_wifi_status(nl_wifi_status_t *out)
|
||||
lock();
|
||||
out->mode = nl_wifi_sm_mode(&s_sm);
|
||||
out->error = nl_wifi_error_name(s_sm.error);
|
||||
copy(out->ssid, s_ssid, sizeof out->ssid);
|
||||
/* I4: Im eigenen AP (Standalone oder Onboarding) ist die Stations-SSID nicht der Name
|
||||
* des Netzes, auf dem die Lampe antwortet - und ein Heimnetzname hat in einer
|
||||
* tokenfrei lesbaren Antwort ohnehin nichts verloren. Gemeldet wird der WIRKSAME
|
||||
* AP-Name; damit wird auch ein Rueckfall auf andere AP-Daten ueber die API sichtbar,
|
||||
* ohne ein neues Feld. "apsta" bleibt bei der Station: dort ist sie die Hauptsache. */
|
||||
if (strcmp(nl_wifi_sm_mode(&s_sm), "ap") == 0)
|
||||
copy(out->ssid, s_ap_live_ssid[0] ? s_ap_live_ssid : (s_ap_ssid[0] ? s_ap_ssid : s_hostname),
|
||||
sizeof out->ssid);
|
||||
else
|
||||
copy(out->ssid, s_ssid, sizeof out->ssid);
|
||||
ap_up = s_sm.ap_up || s_sm.state == NL_WIFI_ST_AP_ONBOARDING;
|
||||
unlock();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user