[wifi] Leave the AP before an LN882x reboots (#20176)

This commit is contained in:
J. Nick Koston
2026-10-05 10:56:24 -05:00
committed by GitHub
parent c8eaf518ba
commit 8735aee847
2 changed files with 14 additions and 0 deletions
+3
View File
@@ -506,6 +506,9 @@ class WiFiComponent final : public Component {
// (In most use cases you won't need these)
/// Setup WiFi interface.
void setup() override;
#ifdef USE_LN882X
void on_powerdown() override;
#endif
void start();
void dump_config() override;
void restart_adapter();
@@ -800,6 +800,17 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
network::IPAddress WiFiComponent::wifi_soft_ap_ip() { return {WiFi.softAPIP()}; }
#endif // USE_WIFI_AP
#ifdef USE_LN882X
void WiFiComponent::on_powerdown() {
// Leave the AP so it no longer holds the association when we come back.
if (WiFi.status() != WL_CONNECTED) // associated, even before DHCP has finished
return;
ESP_LOGD(TAG, "Disconnecting before powerdown");
wifi_sta_disconnect(); // not WiFi.disconnect(): it frees the SSID its event handlers read
delay(100); // NOLINT: once per reboot or deep sleep, lets the deauth go out
}
#endif
bool WiFiComponent::wifi_disconnect_() {
// Reset state first so disconnect events aren't ignored
// and wifi_sta_connect_status_() returns IDLE instead of CONNECTING