Skip to content

Commit bed249c

Browse files
committed
Use new UDP object per connection. Gets around a weird driver behaviour that i've not dug into further
1 parent aa649b9 commit bed249c

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

esp8266-ledclock/ntp.ino

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
unsigned int localPort = 2390;
2+
unsigned int localPort = 4097;
33
const int NTP_PACKET_SIZE = 48;
44
byte packetBuffer[NTP_PACKET_SIZE];
55
byte sendBuffer[] = {
@@ -8,7 +8,6 @@ byte sendBuffer[] = {
88
0x6, // Polling interval
99
0xEC, // Clock precision.
1010
0x0, 0x0, 0x0, 0x0}; // Reference ...
11-
WiFiUDP udp;
1211

1312
String ipToString(IPAddress ip) {
1413
uint32_t addr = ip;
@@ -49,16 +48,17 @@ IPAddress parseIP(String ipaddr) {
4948
}
5049

5150
void setupTime() {
52-
udp.begin(localPort);
5351
setSyncProvider(getNtpTime);
5452
setSyncInterval(syncInterval);
5553
}
5654

5755
time_t getNtpTime()
5856
{
57+
WiFiUDP udp;
58+
udp.begin(localPort);
5959
while (udp.parsePacket() > 0) ; // discard any previously received packets
6060
for (int i = 0 ; i < 5 ; i++) { // 5 retries.
61-
sendNTPpacket(timeServer);
61+
sendNTPpacket(&udp, timeServer);
6262
uint32_t beginWait = millis();
6363
while (millis() - beginWait < 1500) {
6464
if (udp.parsePacket()) {
@@ -77,12 +77,12 @@ time_t getNtpTime()
7777
}
7878

7979

80-
void sendNTPpacket(IPAddress &address) {
80+
void sendNTPpacket(WiFiUDP *u, IPAddress &address) {
8181
// Zeroise the buffer.
8282
memset(packetBuffer, 0, NTP_PACKET_SIZE);
8383
memcpy(packetBuffer, sendBuffer, 16);
8484

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();
8888
}

0 commit comments

Comments
 (0)