|
|
#include <NTPSettingsService.h>
NTPSettingsService::NTPSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager) : AdminSettingsService(server, fs, securityManager, NTP_SETTINGS_SERVICE_PATH, NTP_SETTINGS_FILE) { #ifdef ESP32
WiFi.onEvent( std::bind(&NTPSettingsService::onStationModeDisconnected, this, std::placeholders::_1, std::placeholders::_2), WiFiEvent_t::SYSTEM_EVENT_STA_DISCONNECTED); WiFi.onEvent(std::bind(&NTPSettingsService::onStationModeGotIP, this, std::placeholders::_1, std::placeholders::_2), WiFiEvent_t::SYSTEM_EVENT_STA_GOT_IP); #elif defined(ESP8266)
_onStationModeDisconnectedHandler = WiFi.onStationModeDisconnected( std::bind(&NTPSettingsService::onStationModeDisconnected, this, std::placeholders::_1)); _onStationModeGotIPHandler = WiFi.onStationModeGotIP(std::bind(&NTPSettingsService::onStationModeGotIP, this, std::placeholders::_1)); #endif
}
NTPSettingsService::~NTPSettingsService() { }
void NTPSettingsService::loop() { // detect when we need to re-configure NTP and do it in the main loop
if (_reconfigureNTP) { _reconfigureNTP = false; configureNTP(); } }
void NTPSettingsService::readFromJsonObject(JsonObject& root) { _enabled = root["enabled"] | NTP_SETTINGS_SERVICE_DEFAULT_ENABLED; _server = root["server"] | NTP_SETTINGS_SERVICE_DEFAULT_SERVER; _tzLabel = root["tz_label"] | NTP_SETTINGS_SERVICE_DEFAULT_TIME_ZONE_LABEL; _tzFormat = root["tz_format"] | NTP_SETTINGS_SERVICE_DEFAULT_TIME_ZONE_FORMAT; }
void NTPSettingsService::writeToJsonObject(JsonObject& root) { root["enabled"] = _enabled; root["server"] = _server; root["tz_label"] = _tzLabel; root["tz_format"] = _tzFormat; }
void NTPSettingsService::onConfigUpdated() { _reconfigureNTP = true; }
#ifdef ESP32
void NTPSettingsService::onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info) { Serial.printf("Got IP address, starting NTP Synchronization\n"); _reconfigureNTP = true; }
void NTPSettingsService::onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info) { Serial.printf("WiFi connection dropped, stopping NTP.\n"); _reconfigureNTP = false; sntp_stop(); } #elif defined(ESP8266)
void NTPSettingsService::onStationModeGotIP(const WiFiEventStationModeGotIP& event) { Serial.printf("Got IP address, starting NTP Synchronization\n"); _reconfigureNTP = true; }
void NTPSettingsService::onStationModeDisconnected(const WiFiEventStationModeDisconnected& event) { Serial.printf("WiFi connection dropped, stopping NTP.\n"); _reconfigureNTP = false; sntp_stop(); } #endif
void NTPSettingsService::configureNTP() { Serial.println("Configuring NTP..."); if (_enabled) { #ifdef ESP32
configTzTime(_tzFormat.c_str(), _server.c_str()); #elif defined(ESP8266)
configTime(_tzFormat.c_str(), _server.c_str()); #endif
} else { sntp_stop(); } }
|