#ifndef TIMEMANAGER_H #define TIMEMANAGER_H #include class TimeManager { public: void begin(); void Stop(); bool getTime(unsigned long tick); // Called every second to handle requests and updates inline bool hasNTPUpdate() { return bHasNTPTime; }; inline unsigned long getFirstNTPTime() { return firstNTPTime; } bool checkNTPResponse(); void sendNTPRequest(); private: WiFiUDP udp; const char* ntpServer = "pool.ntp.org"; const unsigned int localPort = 2390; bool udpInitialized = false; bool bHasNTPTime = false; unsigned long firstNTPTime = 0; unsigned long lastNTPRequestMillis = 0; const unsigned long NTP_REQUEST_INTERVAL = 30 * 60 * 1000; // 30 minutes const unsigned long NTP_FAILED_INTERNAL = 1 * 60 * 1000; // 1 minute void setSystemClock(unsigned long epochTime); }; extern TimeManager timeManager; #endif // TIMEMANAGER_H