From 80c67d37c05988b21277f78b4bb7b84c40b20153 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:13:39 +0100 Subject: [PATCH] bufix: ntp query when NTP gets enabled from UI when NTP got enabled via UI, WLED would wait up to 12 hours before issuing the first NTP request. --- wled00/ntp.cpp | 2 +- wled00/set.cpp | 2 +- wled00/wled.cpp | 2 +- wled00/wled.h | 5 +++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/wled00/ntp.cpp b/wled00/ntp.cpp index 85bdcc7f8..e7dbf7439 100644 --- a/wled00/ntp.cpp +++ b/wled00/ntp.cpp @@ -247,7 +247,7 @@ static bool isValidNtpResponse(byte * ntpPacket) { // based on https://github.com/taranais/NTPClient/blob/master/NTPClient.cpp if((ntpPacket[0] & 0b11000000) == 0b11000000) return false; //reject LI=UNSYNC // if((ntpPacket[0] & 0b00111000) >> 3 < 0b100) return false; //reject Version < 4 - if((ntpPacket[0] & 0b00000111) != 0b100) return false; //reject Mode == Server + if((ntpPacket[0] & 0b00000111) != 0b100) return false; //reject Mode != Server if((ntpPacket[1] < 1) || (ntpPacket[1] > 15)) return false; //reject invalid Stratum if( ntpPacket[16] == 0 && ntpPacket[17] == 0 && ntpPacket[18] == 0 && ntpPacket[19] == 0 && diff --git a/wled00/set.cpp b/wled00/set.cpp index 01ebf5db6..efc0813c0 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -396,7 +396,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) //start ntp if not already connected if (ntpEnabled && WLED_CONNECTED && !ntpConnected) ntpConnected = ntpUdp.begin(ntpLocalPort); - ntpLastSyncTime = 0; // force new NTP query + ntpLastSyncTime = NTP_NEVER; // force new NTP query longitude = request->arg(F("LN")).toFloat(); latitude = request->arg(F("LT")).toFloat(); diff --git a/wled00/wled.cpp b/wled00/wled.cpp index a527f2967..bf1ab2256 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -133,7 +133,7 @@ void WLED::loop() if (lastMqttReconnectAttempt > millis()) { rolloverMillis++; lastMqttReconnectAttempt = 0; - ntpLastSyncTime = 0; + ntpLastSyncTime = NTP_NEVER; // force new NTP query strip.restartRuntime(); } if (millis() - lastMqttReconnectAttempt > 30000 || lastMqttReconnectAttempt == 0) { // lastMqttReconnectAttempt==0 forces immediate broadcast diff --git a/wled00/wled.h b/wled00/wled.h index 8a9a38d2b..2572c73fc 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -644,10 +644,11 @@ WLED_GLOBAL String escapedMac; WLED_GLOBAL DNSServer dnsServer; // network time +#define NTP_NEVER 999000000L WLED_GLOBAL bool ntpConnected _INIT(false); WLED_GLOBAL time_t localTime _INIT(0); -WLED_GLOBAL unsigned long ntpLastSyncTime _INIT(999000000L); -WLED_GLOBAL unsigned long ntpPacketSentTime _INIT(999000000L); +WLED_GLOBAL unsigned long ntpLastSyncTime _INIT(NTP_NEVER); +WLED_GLOBAL unsigned long ntpPacketSentTime _INIT(NTP_NEVER); WLED_GLOBAL IPAddress ntpServerIP; WLED_GLOBAL uint16_t ntpLocalPort _INIT(2390); WLED_GLOBAL uint16_t rolloverMillis _INIT(0);