NetBurner 3.5.6
PDF Version
NTPServer.h
1/*NB_REVISION*/
2
3/*NB_COPYRIGHT*/
4
5#ifndef NTPSERVER_H
6#define NTPSERVER_H
7
8#include <nbrtos.h>
9#include <udp.h>
10#include <cstdint>
11#include "IEEE1588Timer.h"
12#include "GPSChip.h"
13
22{
23 public:
31 {
32 public:
33 beuint32_t sec;
34 beuint32_t frac;
35
42 bool SetFrom(uint32_t tt, uint32_t From1588);
43
47 NtpTimeStamp() : sec(0), frac(0) {}
48
53 static NtpTimeStamp Now();
54
62
69 };
70
71 private:
75 struct NTP_Packet
76 {
77 uint8_t LV_VN_Mode;
78 uint8_t Stratum;
79 uint8_t Poll;
80 int8_t Precision;
81
82 beuint32_t Root_Delay;
83 beuint32_t Root_Dispersion;
84 uint8_t Ref_Id[4];
85 NtpTimeStamp Ref_Time;
86 NtpTimeStamp Org_Time;
87 NtpTimeStamp Rx_Time;
88 NtpTimeStamp Tx_Time;
89 };
90
91 // Constants for NTP server operation
92 static const uint32_t DISPERSION = 0;
93 static const int8_t PRECISION = 0xE9;
94
95 // References to external components
96 IEEE1588Timer &timer;
97 GPSChip &gps;
98 uint16_t port;
99
100 // Server task management
101 OS_FIFO rxFifo;
102 bool running;
103 uint32_t taskStack[USER_TASK_STK_SIZE];
104
109 void serverTaskImpl();
110
111 public:
118 NTPServer(IEEE1588Timer &timer, GPSChip &gps, uint16_t port = 123);
119
125 bool start();
126
131 void stop();
132
137 static void serverTask(void *param);
138
143 bool isRunning() const { return running; }
144
149 uint16_t getPort() const { return port; }
150};
151
152#endif // NTPSERVER_H
Definition IEEE1588Timer.h:23
Definition NTPServer.h:31
static NtpTimeStamp Now()
Definition NTPServer.cpp:141
bool SetFrom(uint32_t tt, uint32_t From1588)
Definition NTPServer.cpp:100
NtpTimeStamp & operator=(UDPPacket &upkt)
Definition NTPServer.cpp:148
beuint32_t frac
Fractional seconds (big endian)
Definition NTPServer.h:34
beuint32_t sec
Seconds since NTP epoch (big endian)
Definition NTPServer.h:33
NtpTimeStamp()
Definition NTPServer.h:47
Definition NTPServer.h:22
bool start()
Definition NTPServer.cpp:21
void stop()
Definition NTPServer.cpp:41
NTPServer(IEEE1588Timer &timer, GPSChip &gps, uint16_t port=123)
Definition NTPServer.cpp:15
uint16_t getPort() const
Definition NTPServer.h:149
static void serverTask(void *param)
Definition NTPServer.cpp:48
bool isRunning() const
Definition NTPServer.h:143
UDP Packet Class - Complete UDP packet management.
Definition udp.h:602