2018-02-26 00:11:31 +00:00
|
|
|
#ifndef NTPSettingsService_h
|
|
|
|
#define NTPSettingsService_h
|
|
|
|
|
2019-08-10 11:35:26 +00:00
|
|
|
#include <AdminSettingsService.h>
|
2018-02-26 00:11:31 +00:00
|
|
|
|
|
|
|
#include <NtpClientLib.h>
|
2019-12-03 23:16:06 +00:00
|
|
|
#include <TimeLib.h>
|
2018-02-26 00:11:31 +00:00
|
|
|
|
|
|
|
// default time server
|
|
|
|
#define NTP_SETTINGS_SERVICE_DEFAULT_SERVER "pool.ntp.org"
|
|
|
|
#define NTP_SETTINGS_SERVICE_DEFAULT_INTERVAL 3600
|
|
|
|
|
|
|
|
// min poll delay of 60 secs, max 1 day
|
|
|
|
#define NTP_SETTINGS_MIN_INTERVAL 60
|
|
|
|
#define NTP_SETTINGS_MAX_INTERVAL 86400
|
|
|
|
|
|
|
|
#define NTP_SETTINGS_FILE "/config/ntpSettings.json"
|
2018-04-01 09:35:23 +00:00
|
|
|
#define NTP_SETTINGS_SERVICE_PATH "/rest/ntpSettings"
|
2018-02-26 00:11:31 +00:00
|
|
|
|
2019-05-29 22:48:16 +00:00
|
|
|
class NTPSettingsService : public AdminSettingsService {
|
2019-12-03 23:16:06 +00:00
|
|
|
public:
|
|
|
|
NTPSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager);
|
|
|
|
~NTPSettingsService();
|
2018-02-26 00:11:31 +00:00
|
|
|
|
2019-12-03 23:16:06 +00:00
|
|
|
void loop();
|
2018-02-26 00:11:31 +00:00
|
|
|
|
2019-12-03 23:16:06 +00:00
|
|
|
protected:
|
|
|
|
void readFromJsonObject(JsonObject& root);
|
|
|
|
void writeToJsonObject(JsonObject& root);
|
|
|
|
void onConfigUpdated();
|
2018-02-26 00:11:31 +00:00
|
|
|
|
2019-12-03 23:16:06 +00:00
|
|
|
private:
|
|
|
|
String _server;
|
|
|
|
int _interval;
|
2018-02-26 00:11:31 +00:00
|
|
|
|
2019-12-03 23:16:06 +00:00
|
|
|
bool _reconfigureNTP = false;
|
|
|
|
bool _syncEventTriggered = false;
|
|
|
|
NTPSyncEvent_t _ntpEvent;
|
2018-02-26 00:11:31 +00:00
|
|
|
|
2019-12-24 11:19:19 +00:00
|
|
|
#ifdef ESP32
|
|
|
|
void onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info);
|
|
|
|
void onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info);
|
|
|
|
#elif defined(ESP8266)
|
2019-12-03 23:16:06 +00:00
|
|
|
WiFiEventHandler _onStationModeDisconnectedHandler;
|
|
|
|
WiFiEventHandler _onStationModeGotIPHandler;
|
2018-11-11 17:47:44 +00:00
|
|
|
|
2019-12-03 23:16:06 +00:00
|
|
|
void onStationModeGotIP(const WiFiEventStationModeGotIP& event);
|
|
|
|
void onStationModeDisconnected(const WiFiEventStationModeDisconnected& event);
|
2018-11-11 17:47:44 +00:00
|
|
|
#endif
|
2018-02-26 00:11:31 +00:00
|
|
|
|
2019-12-03 23:16:06 +00:00
|
|
|
void configureNTP();
|
|
|
|
void processSyncEvent(NTPSyncEvent_t ntpEvent);
|
2018-02-26 00:11:31 +00:00
|
|
|
};
|
|
|
|
|
2019-12-03 23:16:06 +00:00
|
|
|
#endif // end NTPSettingsService_h
|