From f20b12e77ae72b2cb9ad0f9ed9e0e412b259f3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20SAILLANT?= <108685187+electron-rare@users.noreply.github.com> Date: Sun, 22 Feb 2026 01:10:21 +0100 Subject: [PATCH] fix: avoid bt+wifi modem sleep crash and expose wifi link info --- src/wifi/WifiManager.cpp | 13 +++++++++++++ src/wifi/WifiManager.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/src/wifi/WifiManager.cpp b/src/wifi/WifiManager.cpp index 817f7ca..c95e586 100644 --- a/src/wifi/WifiManager.cpp +++ b/src/wifi/WifiManager.cpp @@ -89,12 +89,21 @@ bool WifiManager::connect(const String& ssid, const String& password, uint32_t t stopFallbackAp(); WiFi.mode(WIFI_STA); + WiFi.setAutoReconnect(true); WiFi.disconnect(false, true); delay(100); WiFi.begin(ssid_.c_str(), password_.c_str()); connected_ = waitForConnection(timeout_ms); if (connected_) { + const String link_bssid = WiFi.BSSIDstr(); + const int32_t link_channel = static_cast(WiFi.channel()); + Serial.printf("[WifiManager] STA connected: ssid=%s ip=%s rssi=%d ch=%ld bssid=%s\n", + WiFi.SSID().c_str(), + WiFi.localIP().toString().c_str(), + static_cast(WiFi.RSSI()), + static_cast(link_channel), + link_bssid.c_str()); if (persist) { WifiCredentialsStorage::save(ssid_, password_); } @@ -178,6 +187,8 @@ WifiStatusSnapshot WifiManager::status() const { snap.ssid = connected ? WiFi.SSID() : ssid_; snap.ip = connected ? WiFi.localIP().toString() : String("0.0.0.0"); snap.rssi = connected ? WiFi.RSSI() : 0; + snap.channel = connected ? static_cast(WiFi.channel()) : 0; + snap.bssid = connected ? WiFi.BSSIDstr() : String(""); snap.ap_active = ap_active_; snap.ap_ssid = ap_active_ ? ap_ssid_ : String(""); snap.ap_ip = ap_active_ ? WiFi.softAPIP().toString() : String("0.0.0.0"); @@ -199,6 +210,8 @@ void WifiManager::statusToJson(JsonObject obj) const { obj["ssid"] = snap.ssid; obj["ip"] = snap.ip; obj["rssi"] = snap.rssi; + obj["channel"] = snap.channel; + obj["bssid"] = snap.bssid; obj["state"] = snap.state; obj["ap_active"] = snap.ap_active; obj["ap_ssid"] = snap.ap_ssid; diff --git a/src/wifi/WifiManager.h b/src/wifi/WifiManager.h index 00f0987..71cbf17 100644 --- a/src/wifi/WifiManager.h +++ b/src/wifi/WifiManager.h @@ -10,6 +10,8 @@ struct WifiStatusSnapshot { String ssid; String ip; int32_t rssi = 0; + int32_t channel = 0; + String bssid; String state; bool ap_active = false; String ap_ssid;