AceTime
0.6.1
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
|
A Clock that retrieves the time from an NTP server. More...
#include <NtpClock.h>
Public Member Functions | |
NtpClock (const char *server=kNtpServerName, uint16_t localPort=kLocalPort, uint16_t requestTimeout=kRequestTimeout) | |
Constructor. More... | |
void | setup (const char *ssid, const char *password) |
Set up using the provided ssid and password. More... | |
const char * | getServer () const |
bool | isSetup () const |
acetime_t | getNow () const override |
Return the number of seconds since the AceTime epoch (2000-01-01T00:00:00Z). More... | |
void | sendRequest () const override |
Send a time request asynchronously. More... | |
bool | isResponseReady () const override |
Return true if a response is ready. More... | |
acetime_t | readResponse () const override |
Returns number of seconds since AceTime epoch (2000-01-01). More... | |
![]() | |
virtual | ~Clock () |
Virtual destructor. More... | |
virtual void | setNow (acetime_t) |
Set the time to the indicated seconds. More... | |
Static Public Attributes | |
static const char | kNtpServerName [] = "us.pool.ntp.org" |
Default NTP Server. | |
static const uint16_t | kLocalPort = 8888 |
Default port used for UDP packets. More... | |
static const uint16_t | kRequestTimeout = 1000 |
Request time out milliseconds. More... | |
![]() | |
static const acetime_t | kInvalidSeconds = LocalTime::kInvalidSeconds |
A Clock that retrieves the time from an NTP server.
This class has the deficiency that the DNS name resolver WiFi.hostByName() is a blocking call. So every now and then, it can take 5-6 seconds for the call to return, blocking everything (e.g. display refresh, button clicks) until it times out.
TODO: Create a version that uses a non-blocking DNS look up.
Borrowed from https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/examples/NTPClient/NTPClient.ino and https://github.com/PaulStoffregen/Time/blob/master/examples/TimeNTP/TimeNTP.ino
Definition at line 43 of file NtpClock.h.
|
inlineexplicit |
Constructor.
ssid | wireless SSID |
password | password of the SSID |
server | name of the NTP server (default us.pool.ntp.org) |
localPort | used by the UDP client (default 8888) requestTimeout milliseconds for a request timesout (default 1000) |
Definition at line 62 of file NtpClock.h.
|
inlineoverridevirtual |
Return the number of seconds since the AceTime epoch (2000-01-01T00:00:00Z).
Returns kInvalidSeconds if an error has occured.
This is a blocking call. Some clocks (e.g. NTP client) this may take many seconds. On those clocks, use the asynchronous methods (sendRequest(), isResponseReady(), and readResponse()) instead.
Implements ace_time::clock::Clock.
Definition at line 100 of file NtpClock.h.
|
inlineoverridevirtual |
Return true if a response is ready.
Reimplemented from ace_time::clock::Clock.
Definition at line 132 of file NtpClock.h.
|
inlineoverridevirtual |
Returns number of seconds since AceTime epoch (2000-01-01).
Return kInvalidSeconds if there is an error. Valid only if isResponseReady() returns true.
Reimplemented from ace_time::clock::Clock.
Definition at line 137 of file NtpClock.h.
|
inlineoverridevirtual |
Send a time request asynchronously.
Reimplemented from ace_time::clock::Clock.
Definition at line 114 of file NtpClock.h.
|
inline |
Set up using the provided ssid and password.
Definition at line 71 of file NtpClock.h.
|
static |
Default port used for UDP packets.
Definition at line 49 of file NtpClock.h.
|
static |
Request time out milliseconds.
Definition at line 52 of file NtpClock.h.