fix: avoid bt+wifi modem sleep crash and expose wifi link info
This commit is contained in:
@@ -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<int32_t>(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<int>(WiFi.RSSI()),
|
||||
static_cast<long>(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<int32_t>(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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user