diff --git a/NTPClient.cpp b/NTPClient.cpp index 7963c1a..af810e0 100644 --- a/NTPClient.cpp +++ b/NTPClient.cpp @@ -25,7 +25,7 @@ NTPClient::NTPClient(UDP& udp) { this->_udp = &udp; } -NTPClient::NTPClient(UDP& udp, int timeOffset) { +NTPClient::NTPClient(UDP& udp, long timeOffset) { this->_udp = &udp; this->_timeOffset = timeOffset; } @@ -35,13 +35,13 @@ NTPClient::NTPClient(UDP& udp, const char* poolServerName) { this->_poolServerName = poolServerName; } -NTPClient::NTPClient(UDP& udp, const char* poolServerName, int timeOffset) { +NTPClient::NTPClient(UDP& udp, const char* poolServerName, long timeOffset) { this->_udp = &udp; this->_timeOffset = timeOffset; this->_poolServerName = poolServerName; } -NTPClient::NTPClient(UDP& udp, const char* poolServerName, int timeOffset, int updateInterval) { +NTPClient::NTPClient(UDP& udp, const char* poolServerName, long timeOffset, unsigned long updateInterval) { this->_udp = &udp; this->_timeOffset = timeOffset; this->_poolServerName = poolServerName; @@ -101,26 +101,26 @@ bool NTPClient::update() { return true; } -unsigned long NTPClient::getEpochTime() { +unsigned long NTPClient::getEpochTime() const { return this->_timeOffset + // User offset this->_currentEpoc + // Epoc returned by the NTP server ((millis() - this->_lastUpdate) / 1000); // Time since last update } -int NTPClient::getDay() { +int NTPClient::getDay() const { return (((this->getEpochTime() / 86400L) + 4 ) % 7); //0 is Sunday } -int NTPClient::getHours() { +int NTPClient::getHours() const { return ((this->getEpochTime() % 86400L) / 3600); } -int NTPClient::getMinutes() { +int NTPClient::getMinutes() const { return ((this->getEpochTime() % 3600) / 60); } -int NTPClient::getSeconds() { +int NTPClient::getSeconds() const { return (this->getEpochTime() % 60); } -String NTPClient::getFormattedTime() { +String NTPClient::getFormattedTime() const { unsigned long rawTime = this->getEpochTime(); unsigned long hours = (rawTime % 86400L) / 3600; String hoursStr = hours < 10 ? "0" + String(hours) : String(hours); @@ -183,10 +183,14 @@ void NTPClient::setTimeOffset(int timeOffset) { this->_timeOffset = timeOffset; } -void NTPClient::setUpdateInterval(int updateInterval) { +void NTPClient::setUpdateInterval(unsigned long updateInterval) { this->_updateInterval = updateInterval; } +void NTPClient::setPoolServerName(const char* poolServerName) { + this->_poolServerName = poolServerName; +} + void NTPClient::sendNTPPacket() { // set all bytes in the buffer to 0 memset(this->_packetBuffer, 0, NTP_PACKET_SIZE); diff --git a/NTPClient.h b/NTPClient.h index e789642..0e45ac5 100644 --- a/NTPClient.h +++ b/NTPClient.h @@ -13,11 +13,11 @@ class NTPClient { UDP* _udp; bool _udpSetup = false; - const char* _poolServerName = "time.nist.gov"; // Default time server + const char* _poolServerName = "pool.ntp.org"; // Default time server int _port = NTP_DEFAULT_LOCAL_PORT; - int _timeOffset = 0; + long _timeOffset = 0; - unsigned int _updateInterval = 60000; // In ms + unsigned long _updateInterval = 60000; // In ms unsigned long _currentEpoc = 0; // In s unsigned long _lastUpdate = 0; // In ms @@ -28,10 +28,17 @@ class NTPClient { public: NTPClient(UDP& udp); - NTPClient(UDP& udp, int timeOffset); + NTPClient(UDP& udp, long timeOffset); NTPClient(UDP& udp, const char* poolServerName); - NTPClient(UDP& udp, const char* poolServerName, int timeOffset); - NTPClient(UDP& udp, const char* poolServerName, int timeOffset, int updateInterval); + NTPClient(UDP& udp, const char* poolServerName, long timeOffset); + NTPClient(UDP& udp, const char* poolServerName, long timeOffset, unsigned long updateInterval); + + /** + * Set time server name + * + * @param poolServerName + */ + void setPoolServerName(const char* poolServerName); /** * Starts the underlying UDP client with the default local port @@ -62,9 +69,9 @@ class NTPClient { int getHours(); int getMinutes(); int getSeconds(); - int getYear(); - int getMonth(); - int getDate(); + int getYear(); + int getMonth(); + int getDate(); /** * Changes the time offset. Useful for changing timezones dynamically @@ -75,22 +82,22 @@ class NTPClient { * Set the update interval to another frequency. E.g. useful when the * timeOffset should not be set in the constructor */ - void setUpdateInterval(int updateInterval); + void setUpdateInterval(unsigned long updateInterval); /** * @return time formatted like `hh:mm:ss` */ String getFormattedTime(); - /** + /** * @return date formatted like `dd.MM.yyyy` */ - String getFormattedDate(); + String getFormattedDate(); /** * @return time in seconds since Jan. 1, 1970 */ - unsigned long getEpochTime(); + unsigned long getEpochTime() const; /** * Stops the underlying UDP client diff --git a/README.md b/README.md index 1f84dea..7c850eb 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ const char *password = ""; WiFiUDP ntpUDP; -// By default 'time.nist.gov' is used with 60 seconds update interval and +// By default 'pool.ntp.org' is used with 60 seconds update interval and // no offset NTPClient timeClient(ntpUDP); diff --git a/keywords.txt b/keywords.txt index 1430d04..6f7bc6f 100644 --- a/keywords.txt +++ b/keywords.txt @@ -18,3 +18,6 @@ getMinutes KEYWORD2 getSeconds KEYWORD2 getFormattedTime KEYWORD2 getEpochTime KEYWORD2 +setTimeOffset KEYWORD2 +setUpdateInterval KEYWORD2 +setPoolServerName KEYWORD2