This is a fork of the NTPClient Library to work with the mbed-os 5 way of doing networking

Fork of NTPClient by Dieter Graef

Revision:
2:eda6db3ada54
Parent:
1:52e0f030d00e
--- a/NTPClient.cpp	Fri Apr 28 14:17:00 2017 +0000
+++ b/NTPClient.cpp	Sun Feb 25 11:13:37 2018 +0000
@@ -17,27 +17,9 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-//Debug is disabled by default
-#if 0
-//Enable debug
-#define __DEBUG__
-#include <cstdio>
-#define DBG(x, ...) std::printf("[NTPClient : DBG]"x"\r\n", ##__VA_ARGS__); 
-#define WARN(x, ...) std::printf("[NTPClient : WARN]"x"\r\n", ##__VA_ARGS__); 
-#define ERR(x, ...) std::printf("[NTPClient : ERR]"x"\r\n", ##__VA_ARGS__); 
-
-#else
-//Disable debug
-#define DBG(x, ...) 
-#define WARN(x, ...)
-#define ERR(x, ...) 
-
-#endif
-
 #include "NTPClient.h"
 #include "EthernetInterface.h"
 #include "UDPSocket.h"
-
 #include "mbed.h" //time() and set_time()
 #include "lwip/opt.h"
 #include "lwip/def.h"
@@ -53,14 +35,8 @@
 
 NTPResult NTPClient::setTime(const char* host, uint16_t port, uint32_t timeout)
 {
-#ifdef __DEBUG__
-  time_t ctTime;
-  ctTime = time(NULL);
-  DBG("Time is set to (UTC): %s", ctime(&ctTime));
-#endif
 
   //Create & bind socket
-  DBG("Binding socket");
   SocketAddress inEndpoint("0.0.0.0", 0);
   m_sock.bind(inEndpoint); //Bind to a random port 
   m_sock.set_blocking(false); //Set not blocking
@@ -68,7 +44,6 @@
   struct NTPPacket pkt;
 
   //Now ping the server and wait for response
-  DBG("Ping");
   //Prepare NTP Packet:
   pkt.li = 0; //Leap Indicator : No warning
   pkt.vn = 4; //Version Number : 4
@@ -88,31 +63,23 @@
 
   pkt.refTm_f = pkt.origTm_f = pkt.rxTm_f = pkt.txTm_f = 0;
 
-
-    DBG("Ping2");
-
-    
   //Set timeout, non-blocking and wait using select
   int ret = m_sock.sendto(outEndpoint, &pkt, sizeof(NTPPacket));
-    DBG("Ping4");
  
   if (ret < 0 )
   {
-    ERR("Could not send packet");
     m_sock.close();
     return NTP_CONN;
   }
 
   //Read response
   // Set the inEndpoint address property
-  DBG("Pong");
-int tries =0;
-while (true)  {  
+    int tries =0;
+    while (true)  {  
     ret = m_sock.recvfrom( &inEndpoint, (char*)&pkt, sizeof(NTPPacket) ); //FIXME need a DNS Resolver to actually compare the incoming address with the DNS name
     wait(0.01);
     if((ret < 0 && ret != -3001) || tries >100)
     {
-      ERR("Could not receive packet");
       m_sock.close();
       return NTP_CONN;
     }
@@ -122,14 +89,12 @@
   printf("NTP Server Address: %s \r\n",outEndpoint.get_ip_address());
   if(ret < sizeof(NTPPacket)) //TODO: Accept chunks
   {
-    ERR("Receive packet size does not match");
     m_sock.close();
     return NTP_PRTCL;
   }
 
   if( pkt.stratum == 0)  //Kiss of death message : Not good !
   {
-    ERR("Kissed to death!");
     m_sock.close();
     return NTP_PRTCL;
   }
@@ -147,15 +112,9 @@
   //Compute offset, see RFC 4330 p.13
   uint32_t destTm_s = (NTP_TIMESTAMP_DELTA + time(NULL));
   int64_t offset = ( (int64_t)( pkt.rxTm_s - pkt.origTm_s ) + (int64_t) ( pkt.txTm_s - destTm_s ) ) / 2; //Avoid overflow
-  DBG("Sent @%ul", pkt.txTm_s);
-  DBG("Offset: %lld", offset);
   //Set time accordingly
   set_time( time(NULL) + offset );
 
-#ifdef __DEBUG__
-  ctTime = time(NULL);
-  DBG("Time is now (UTC): %s", ctime(&ctTime));
-#endif
 
   m_sock.close();