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_ */