fix reconnect & memory optimization

This commit is contained in:
Yurii
2023-12-13 00:43:12 +03:00
parent b6276ddb3f
commit e9c91ed6b4

View File

@@ -54,9 +54,9 @@ const char S_WIFI[] PROGMEM = "WIFI";
const char S_WIFI_SETTINGS[] PROGMEM = "WIFI.SETTINGS"; const char S_WIFI_SETTINGS[] PROGMEM = "WIFI.SETTINGS";
class WifiManagerTask : public Task { class WifiManagerTask : public LeanTask {
public: public:
WifiManagerTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {} WifiManagerTask(bool _enabled = false, unsigned long _interval = 0) : LeanTask(_enabled, _interval) {}
WifiManagerTask* addTaskForDisable(AbstractTask* task) { WifiManagerTask* addTaskForDisable(AbstractTask* task) {
this->tasksForDisable.push_back(task); this->tasksForDisable.push_back(task);
@@ -66,6 +66,7 @@ public:
protected: protected:
bool connected = false; bool connected = false;
unsigned long lastArpGratuitous = 0; unsigned long lastArpGratuitous = 0;
unsigned long lastReconnecting = 0;
std::vector<AbstractTask*> tasksForDisable; std::vector<AbstractTask*> tasksForDisable;
const char* getTaskName() { const char* getTaskName() {
@@ -200,7 +201,7 @@ protected:
wm.setRestorePersistent(false); wm.setRestorePersistent(false);
wm.setHostname(settings.hostname); wm.setHostname(settings.hostname);
wm.setWiFiAutoReconnect(true); wm.setWiFiAutoReconnect(false);
wm.setAPClientCheck(true); wm.setAPClientCheck(true);
wm.setConfigPortalBlocking(false); wm.setConfigPortalBlocking(false);
wm.setSaveParamsCallback(saveParamsCallback); wm.setSaveParamsCallback(saveParamsCallback);
@@ -210,7 +211,7 @@ protected:
task->disable(); task->disable();
} }
} }
this->delay(10); //this->delay(10);
}); });
wm.setConfigPortalTimeout(wm.getWiFiIsSaved() ? 180 : 0); wm.setConfigPortalTimeout(wm.getWiFiIsSaved() ? 180 : 0);
wm.setDisableConfigPortal(false); wm.setDisableConfigPortal(false);
@@ -226,19 +227,29 @@ protected:
wm.stopWebPortal(); wm.stopWebPortal();
} }
wm.setCaptivePortalEnable(true); /*wm.setCaptivePortalEnable(true);
if (!wm.getConfigPortalActive()) { if (!wm.getConfigPortalActive()) {
wm.startConfigPortal(); wm.startConfigPortal(AP_SSID, AP_PASSWORD);
} }*/
#if USE_TELNET #if USE_TELNET
TelnetStream.stop(); TelnetStream.stop();
#endif #endif
Log.sinfoln(FPSTR(S_WIFI), F("Disconnected")); Log.sinfoln(FPSTR(S_WIFI), F("Disconnected"));
}
} else if (!connected && WiFi.status() == WL_CONNECTED) { if (WiFi.status() != WL_CONNECTED && !wm.getConfigPortalActive()) {
if (millis() - this->lastReconnecting > 5000) {
Log.sinfoln(FPSTR(S_WIFI), F("Reconnecting..."));
WiFi.reconnect();
this->lastReconnecting = millis();
}
}
if (!connected && WiFi.status() == WL_CONNECTED) {
connected = true; connected = true;
wm.setConfigPortalTimeout(180); wm.setConfigPortalTimeout(180);
@@ -247,7 +258,6 @@ protected:
} }
wm.setCaptivePortalEnable(false); wm.setCaptivePortalEnable(false);
if (!wm.getWebPortalActive()) { if (!wm.getWebPortalActive()) {
wm.startWebPortal(); wm.startWebPortal();
} }