Browse Source

calculate elapsed time rather than storing next fire time - avoids overflow issues

master
Rick Watson 6 years ago
parent
commit
b197ee8a80
  1. 16
      src/APSettingsService.cpp
  2. 4
      src/APSettingsService.h

16
src/APSettingsService.cpp

@ -1,16 +1,18 @@
#include <APSettingsService.h>
APSettingsService::APSettingsService(AsyncWebServer* server, FS* fs) : SettingsService(server, fs, AP_SETTINGS_SERVICE_PATH, AP_SETTINGS_FILE) {
onConfigUpdated();
}
APSettingsService::~APSettingsService() {}
void APSettingsService::loop() {
unsigned long now = millis();
if (_manageAtMillis <= now){
manageAP();
_manageAtMillis = now + MANAGE_NETWORK_DELAY;
}
unsigned long currentMillis = millis();
unsigned long manageElapsed = (unsigned long)(currentMillis - _lastManaged);
if (manageElapsed >= MANAGE_NETWORK_DELAY){
_lastManaged = currentMillis;
manageAP();
}
handleDNS();
}
@ -78,5 +80,5 @@ void APSettingsService::writeToJsonObject(JsonObject& root) {
}
void APSettingsService::onConfigUpdated() {
_manageAtMillis = 0;
}
_lastManaged = millis() - MANAGE_NETWORK_DELAY;
}

4
src/APSettingsService.h

@ -42,7 +42,7 @@ class APSettingsService : public SettingsService {
String _password;
// for the mangement delay loop
unsigned long _manageAtMillis;
unsigned long _lastManaged;
// for the captive portal
DNSServer *_dnsServer;
@ -54,4 +54,4 @@ class APSettingsService : public SettingsService {
};
#endif // end APSettingsConfig_h
#endif // end APSettingsConfig_h
Loading…
Cancel
Save