1
1
2
- unsigned int localPort = 2390 ;
2
+ unsigned int localPort = 4097 ;
3
3
const int NTP_PACKET_SIZE = 48 ;
4
4
byte packetBuffer[NTP_PACKET_SIZE];
5
5
byte sendBuffer[] = {
@@ -8,7 +8,6 @@ byte sendBuffer[] = {
8
8
0x6 , // Polling interval
9
9
0xEC , // Clock precision.
10
10
0x0 , 0x0 , 0x0 , 0x0 }; // Reference ...
11
- WiFiUDP udp;
12
11
13
12
String ipToString (IPAddress ip) {
14
13
uint32_t addr = ip;
@@ -49,16 +48,17 @@ IPAddress parseIP(String ipaddr) {
49
48
}
50
49
51
50
void setupTime () {
52
- udp.begin (localPort);
53
51
setSyncProvider (getNtpTime);
54
52
setSyncInterval (syncInterval);
55
53
}
56
54
57
55
time_t getNtpTime ()
58
56
{
57
+ WiFiUDP udp;
58
+ udp.begin (localPort);
59
59
while (udp.parsePacket () > 0 ) ; // discard any previously received packets
60
60
for (int i = 0 ; i < 5 ; i++) { // 5 retries.
61
- sendNTPpacket (timeServer);
61
+ sendNTPpacket (&udp, timeServer);
62
62
uint32_t beginWait = millis ();
63
63
while (millis () - beginWait < 1500 ) {
64
64
if (udp.parsePacket ()) {
@@ -77,12 +77,12 @@ time_t getNtpTime()
77
77
}
78
78
79
79
80
- void sendNTPpacket (IPAddress &address) {
80
+ void sendNTPpacket (WiFiUDP *u, IPAddress &address) {
81
81
// Zeroise the buffer.
82
82
memset (packetBuffer, 0 , NTP_PACKET_SIZE);
83
83
memcpy (packetBuffer, sendBuffer, 16 );
84
84
85
- udp. beginPacket (address, 123 ); // Port 123.
86
- udp. write (packetBuffer, NTP_PACKET_SIZE);
87
- udp. endPacket ();
85
+ u-> beginPacket (address, 123 ); // Port 123.
86
+ u-> write (packetBuffer, NTP_PACKET_SIZE);
87
+ u-> endPacket ();
88
88
}
0 commit comments