OS5.15 complaint NTP library
Dependents: Firebase-Example TCP-NTP-Server TCP-NTP-Server-OS5depreciated
Diff: NTPclient.h
- Revision:
- 0:3854dc7bd4de
- Child:
- 1:a97d143dd94e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NTPclient.h Sun Mar 08 14:32:36 2020 +0000 @@ -0,0 +1,59 @@ + +#include "mbed.h" + +#ifndef NTPCLIENT_H +#define NTPCLIENT_H + +#include <stdint.h> +#include "UDPSocket.h" +#include "NetworkInterface.h" + +#define NTP_DEFAULT_PORT 123 +#define NTP_DEFAULT_TIMEOUT 4000 +#define NTP_DEFAULT_TIMEZONE_OFFSET 0 + +class NTPclient +{ +public: + NTPclient(NetworkInterface & _m_intf); + // Returns current time in seconds (blocking) + // Update the time using the server host + // Blocks until completion + // NTPpool, NTP server IPv4 address or hostname (will be resolved via DNS) + // tzoffset, offset in seconds (3600 add 1 hour, -3600 subtract 1 hour) + // dst, adjust for DST 1= enabled, 0=dissabled + // setRTC, set system RTC 1= enabled, 0=dissabled + + uint32_t getNTP(const char* NTPpool, uint32_t tzoffset, bool dst, bool setRTC); + +private: + struct NTPPacket + { + //We are in LE Network is BE + //LSb first + unsigned mode : 3; + unsigned vn : 3; + unsigned li : 2; + + uint8_t stratum; + uint8_t poll; + uint8_t precision; + + //32 bits header + uint32_t rootDelay; + uint32_t rootDispersion; + uint32_t refId; + uint32_t refTm_s; + uint32_t refTm_f; + uint32_t origTm_s; + uint32_t origTm_f; + uint32_t rxTm_s; + uint32_t rxTm_f; + uint32_t txTm_s; + uint32_t txTm_f; + } __attribute__ ((packed)); + + NetworkInterface & m_intf; // WiFi interface + UDPSocket m_sock; +}; +#endif /* NTPCLIENT_H_ */