Output WiFi disconnect reason in console

This commit is contained in:
Thomas Basler 2024-09-02 20:16:03 +02:00
parent 1f3af949a0
commit b52cd31309
2 changed files with 7 additions and 5 deletions

View File

@ -62,7 +62,7 @@ private:
void setStaticIp(); void setStaticIp();
void handleMDNS(); void handleMDNS();
void setupMode(); void setupMode();
void NetworkEvent(const WiFiEvent_t event); void NetworkEvent(const WiFiEvent_t event, WiFiEventInfo_t info);
Task _loopTask; Task _loopTask;

View File

@ -23,20 +23,21 @@ NetworkSettingsClass::NetworkSettingsClass()
void NetworkSettingsClass::init(Scheduler& scheduler) void NetworkSettingsClass::init(Scheduler& scheduler)
{ {
using std::placeholders::_1; using std::placeholders::_1;
using std::placeholders::_2;
WiFi.setScanMethod(WIFI_ALL_CHANNEL_SCAN); WiFi.setScanMethod(WIFI_ALL_CHANNEL_SCAN);
WiFi.setSortMethod(WIFI_CONNECT_AP_BY_SIGNAL); WiFi.setSortMethod(WIFI_CONNECT_AP_BY_SIGNAL);
WiFi.disconnect(true, true); WiFi.disconnect(true, true);
WiFi.onEvent(std::bind(&NetworkSettingsClass::NetworkEvent, this, _1)); WiFi.onEvent(std::bind(&NetworkSettingsClass::NetworkEvent, this, _1, _2));
setupMode(); setupMode();
scheduler.addTask(_loopTask); scheduler.addTask(_loopTask);
_loopTask.enable(); _loopTask.enable();
} }
void NetworkSettingsClass::NetworkEvent(const WiFiEvent_t event) void NetworkSettingsClass::NetworkEvent(const WiFiEvent_t event, WiFiEventInfo_t info)
{ {
switch (event) { switch (event) {
case ARDUINO_EVENT_ETH_START: case ARDUINO_EVENT_ETH_START:
@ -76,7 +77,8 @@ void NetworkSettingsClass::NetworkEvent(const WiFiEvent_t event)
} }
break; break;
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
MessageOutput.println("WiFi disconnected"); // Reason codes can be found here: https://github.com/espressif/esp-idf/blob/5454d37d496a8c58542eb450467471404c606501/components/esp_wifi/include/esp_wifi_types_generic.h#L79-L141
MessageOutput.printf("WiFi disconnected: %d\r\n", info.wifi_sta_disconnected.reason);
if (_networkMode == network_mode::WiFi) { if (_networkMode == network_mode::WiFi) {
MessageOutput.println("Try reconnecting"); MessageOutput.println("Try reconnecting");
WiFi.disconnect(true, false); WiFi.disconnect(true, false);