This is a fork of the NTPClient Library to work with the mbed-os 5 way of doing networking
Fork of NTPClient by
Revision 2:eda6db3ada54, committed 2018-02-25
- Comitter:
- jhd25
- Date:
- Sun Feb 25 11:13:37 2018 +0000
- Parent:
- 1:52e0f030d00e
- Commit message:
- Changed to stdint.h from cstdint
Changed in this revision
NTPClient.cpp | Show annotated file Show diff for this revision Revisions of this file |
NTPClient.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 52e0f030d00e -r eda6db3ada54 NTPClient.cpp --- 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();
diff -r 52e0f030d00e -r eda6db3ada54 NTPClient.h --- a/NTPClient.h Fri Apr 28 14:17:00 2017 +0000 +++ b/NTPClient.h Sun Feb 25 11:13:37 2018 +0000 @@ -24,11 +24,8 @@ #ifndef NTPCLIENT_H_ #define NTPCLIENT_H_ -#include <cstdint> +#include "stdint.h" -using std::uint8_t; -using std::uint16_t; -using std::uint32_t; #include "UDPSocket.h" #include "EthernetInterface.h"