[wifi] Leave the AP before an LN882x reboots

This commit is contained in:
J. Nick Koston
2026-10-04 20:35:24 -05:00
parent e4be4c7fcb
commit 97216aa4fa
2 changed files with 15 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_shutdown() override;
#endif
void start();
void dump_config() override;
void restart_adapter();
@@ -777,6 +777,18 @@ 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_shutdown() {
// Leave the AP before a reboot: otherwise it still holds the association
// when the chip comes back and the first connects can stall or fail.
if (!this->is_connected())
return;
ESP_LOGD(TAG, "Disconnecting before reboot");
this->wifi_disconnect_();
delay(100); // let the deauth go out before the reset
}
#endif
bool WiFiComponent::wifi_disconnect_() {
// Reset state first so disconnect events aren't ignored
// and wifi_sta_connect_status_() returns IDLE instead of CONNECTING