You are viewing an older revision! See the latest version

NTP Client

Table of Contents

  1. Packages
  2. Library

Packages

Precompiled version: http://mbed.org/users/donatien/programs/NetServicesLPC1768

Library

Architecture

The NTP client is a simple UDP client that will update the mbed's RTC.

Includes

#include "NtpClient.h"

Reference

NtpClient()

Instantiate the NTP client.

Requests

NtpResult setTime(const Host& host) //Blocking
NtpResult setTime(const Host& host, void (*pMethod)(NtpResult)) //Non blocking
NtpResult setTime(const Host& host, T* pItem, void (T::*pMethod)(NtpResult)) //Non blocking

Update the time using the server host. If a callback is provided, the function returns immediately and calls the callback on completion or error, otherwise it blocks until completion.

void setOnResult( void (*pMethod)(NtpResult) )
void setOnResult( T* pItem, void (T::*pMethod)(NtpResult) )
void doSetTime(const Host& host)

Alternatively, you can set a callback function for all requests using setOnResult, and then call the non-blocking doSetTime method.

Result codes

enum NtpResult
{
  NTP_OK,
  NTP_PROCESSING,
  NTP_PRTCL, //Protocol error
  NTP_TIMEOUT, //Connection timeout
  NTP_DNS //Could not resolve DNS Addr
};

Examples

This example updates the RTC.

#include "mbed.h"
#include "EthernetNetIf.h"
#include "NtpClient.h"

EthernetNetIf eth; 
NtpClient ntp;
  
int main() {

  printf("Start\n");

  printf("\r\nSetting up...\r\n");
  EthernetErr ethErr = eth.setup();
  if(ethErr)
  {
    printf("Error %d in setup.\n", ethErr);
    return -1;
  }
  printf("\r\nSetup OK\r\n");
  
  time_t ctTime;
  ctTime = time(NULL);  
  printf("\r\nCurrent time is : %s UTC\r\n", ctime(&ctTime));  

  Host server(IpAddr(), 123, "0.uk.pool.ntp.org");
  ntp.setTime(server);
    
  ctTime = time(NULL);  
  printf("\r\nTime is now : %s UTC\r\n", ctime(&ctTime)); 
  
  while(1)
  {
  
  }
  
  return 0;
  
}

This program can be imported from here : http://mbed.org/users/donatien/programs/NetNtpClientExample.


All wikipages