Sming Framework API
Sming - Open Source framework for high efficiency WiFi SoC ESP8266 native development with C++ language.

NTP client class. More...

#include <NtpClient.h>

Inheritance diagram for NtpClient:
UdpConnection

Public Member Functions

 NtpClient ()
 Instantiates NTP client object. More...
 
 NtpClient (NtpTimeResultDelegate onTimeReceivedCb)
 Instantiates NTP client object. More...
 
 NtpClient (String reqServer, int reqIntervalSeconds, NtpTimeResultDelegate onTimeReceivedCb=nullptr)
 Instantiates NTP client object. More...
 
void requestTime ()
 Request time from NTP server. More...
 
void setNtpServer (String server)
 Set the NTP server. More...
 
void setAutoQuery (bool autoQuery)
 Enable / disable periodic query. More...
 
void setAutoQueryInterval (int seconds)
 Set query period. More...
 
void setAutoUpdateSystemClock (bool autoUpdateClock)
 Enable / disable update of system clock. More...
 

Protected Member Functions

void onReceive (pbuf *buf, IPAddress remoteIP, uint16_t remotePort)
 Handle UDP message reception. More...
 
void internalRequestTime (IPAddress serverIp)
 Send time request to NTP server. More...
 
virtual bool listen (int port)
 
virtual bool connect (IPAddress ip, uint16_t port)
 
virtual void close ()
 
virtual void send (const char *data, int length)
 
void sendString (const char *data)
 
void sendString (const String &data)
 
virtual void sendTo (IPAddress remoteIP, uint16_t remotePort, const char *data, int length)
 
void sendStringTo (IPAddress remoteIP, uint16_t remotePort, const char *data)
 
void sendStringTo (IPAddress remoteIP, uint16_t remotePort, const String &data)
 
void initialize (udp_pcb *pcb=NULL)
 

Static Protected Member Functions

static void staticDnsResponse (const char *name, struct ip_addr *ip, void *arg)
 Handle DNS response. More...
 
static void staticOnReceive (void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port)
 

Protected Attributes

String server = NTP_DEFAULT_SERVER
 IP address or Hostname of NTP server. More...
 
NtpTimeResultDelegate delegateCompleted = nullptr
 NTP result handler delegate. More...
 
bool autoUpdateSystemClock = false
 True to update system clock with NTP time. More...
 
Timer autoUpdateTimer
 Periodic query timer. More...
 
Timer timeoutTimer
 NTP message timeout timer. More...
 
Timer connectionTimer
 Wait for WiFi connection timer. More...
 
udp_pcb * udp
 
UdpConnectionDataDelegate onDataCallback
 

Detailed Description

NTP client class.

Constructor & Destructor Documentation

NtpClient::NtpClient ( )

Instantiates NTP client object.

NtpClient::NtpClient ( NtpTimeResultDelegate  onTimeReceivedCb)

Instantiates NTP client object.

Parameters
onTimeReceivedCbCallback delegate to be called when NTP time result is received
NtpClient::NtpClient ( String  reqServer,
int  reqIntervalSeconds,
NtpTimeResultDelegate  onTimeReceivedCb = nullptr 
)

Instantiates NTP client object.

Parameters
reqServerIP address or hostname of NTP server
reqIntervalSecondsQuantity of seconds between NTP requests
onTimeReceivedCbCallback delegate to be called when NTP time result is received (Default: None)

Member Function Documentation

void NtpClient::internalRequestTime ( IPAddress  serverIp)
protected

Send time request to NTP server.

Parameters
serverIpIP address of NTP server
void NtpClient::onReceive ( pbuf *  buf,
IPAddress  remoteIP,
uint16_t  remotePort 
)
protectedvirtual

Handle UDP message reception.

Parameters
bufPointer to data buffer containing UDP payload
remoteIPIP address of remote host
remotePortPort number of remote host

Reimplemented from UdpConnection.

void NtpClient::requestTime ( )

Request time from NTP server.

Note
Instigates request. Result is handled by NTP result handler function if defined
void NtpClient::setAutoQuery ( bool  autoQuery)

Enable / disable periodic query.

Parameters
autoQueryTrue to enable periodic query of NTP server
void NtpClient::setAutoQueryInterval ( int  seconds)

Set query period.

Parameters
secondsPeriod in seconds between periodic queries
void NtpClient::setAutoUpdateSystemClock ( bool  autoUpdateClock)

Enable / disable update of system clock.

Parameters
autoUpdateClockTrue to update system clock with NTP result.
void NtpClient::setNtpServer ( String  server)

Set the NTP server.

Parameters
serverIP address or hostname of NTP server
static void NtpClient::staticDnsResponse ( const char *  name,
struct ip_addr *  ip,
void *  arg 
)
staticprotected

Handle DNS response.

Parameters
namePointer to c-string containing hostname
ipPonter to IP address
argPointer to the NTP client object that made the DNS request
Note
This function is called when a DNS query is serviced

Member Data Documentation

bool NtpClient::autoUpdateSystemClock = false
protected

True to update system clock with NTP time.

Timer NtpClient::autoUpdateTimer
protected

Periodic query timer.

Timer NtpClient::connectionTimer
protected

Wait for WiFi connection timer.

NtpTimeResultDelegate NtpClient::delegateCompleted = nullptr
protected

NTP result handler delegate.

String NtpClient::server = NTP_DEFAULT_SERVER
protected

IP address or Hostname of NTP server.

Timer NtpClient::timeoutTimer
protected

NTP message timeout timer.