From 34125cee1d1c6a81cd1da07de27ce69d851f9389 Mon Sep 17 00:00:00 2001 From: vortigont Date: Thu, 22 Jul 2021 20:09:28 +0300 Subject: [PATCH] Examples update, add a note for configTime() that only one ntp server is supported by lwip (#5343) lwip lib bundled with esp32 Arduino supports only one ntp server. Any additional servers set are just silently ignored. This default is different from esp8266 Arduino core and very confusing. Most of the examples provided uses 3 different ntp servers for redundancy while only the first one is used actually. Addressing issue #4964 --- cores/esp32/esp32-hal-time.c | 4 ++++ libraries/FFat/examples/FFat_time/FFat_time.ino | 4 ++++ .../HTTPUpdate/examples/httpUpdateSecure/httpUpdateSecure.ino | 4 ++++ libraries/LittleFS/examples/LITTLEFS_time/LITTLEFS_time.ino | 4 ++++ libraries/SD/examples/SD_time/SD_time.ino | 4 ++++ libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino | 4 ++++ libraries/SPIFFS/examples/SPIFFS_time/SPIFFS_time.ino | 4 ++++ 7 files changed, 28 insertions(+) diff --git a/cores/esp32/esp32-hal-time.c b/cores/esp32/esp32-hal-time.c index e7048307284..2d0276ff3e3 100644 --- a/cores/esp32/esp32-hal-time.c +++ b/cores/esp32/esp32-hal-time.c @@ -44,6 +44,8 @@ static void setTimeZone(long offset, int daylight) /* * configTime * Source: https://github.com/esp8266/Arduino/blob/master/cores/esp8266/time.c + * Note: Bundled Arduino lwip supports only ONE ntp server, 2nd and 3rd options are silently ignored + * see CONFIG_LWIP_DHCP_MAX_NTP_SERVERS define in ./tools/sdk/esp32/sdkconfig * */ void configTime(long gmtOffset_sec, int daylightOffset_sec, const char* server1, const char* server2, const char* server3) { @@ -63,6 +65,8 @@ void configTime(long gmtOffset_sec, int daylightOffset_sec, const char* server1, /* * configTzTime * sntp setup using TZ environment variable + * Note: Bundled Arduino lwip supports only ONE ntp server, 2nd and 3rd options are silently ignored + * see CONFIG_LWIP_DHCP_MAX_NTP_SERVERS define in ./tools/sdk/esp32/sdkconfig * */ void configTzTime(const char* tz, const char* server1, const char* server2, const char* server3) { diff --git a/libraries/FFat/examples/FFat_time/FFat_time.ino b/libraries/FFat/examples/FFat_time/FFat_time.ino index 475cfea026b..090a3bbc767 100644 --- a/libraries/FFat/examples/FFat_time/FFat_time.ino +++ b/libraries/FFat/examples/FFat_time/FFat_time.ino @@ -148,6 +148,10 @@ void setup(){ Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.println("Contacting Time Server"); + /* + Note: Bundled Arduino lwip supports only ONE ntp server, 2nd and 3rd options are silently ignored + see CONFIG_LWIP_DHCP_MAX_NTP_SERVERS define in ./tools/sdk/esp32/sdkconfig + */ configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); struct tm tmstruct ; delay(2000); diff --git a/libraries/HTTPUpdate/examples/httpUpdateSecure/httpUpdateSecure.ino b/libraries/HTTPUpdate/examples/httpUpdateSecure/httpUpdateSecure.ino index 1c85ace02a5..cff8f45cec9 100644 --- a/libraries/HTTPUpdate/examples/httpUpdateSecure/httpUpdateSecure.ino +++ b/libraries/HTTPUpdate/examples/httpUpdateSecure/httpUpdateSecure.ino @@ -17,6 +17,10 @@ WiFiMulti WiFiMulti; // Set time via NTP, as required for x.509 validation void setClock() { + /* + Note: Bundled Arduino lwip supports only ONE ntp server, 2nd and 3rd options are silently ignored + see CONFIG_LWIP_DHCP_MAX_NTP_SERVERS define in ./tools/sdk/esp32/sdkconfig + */ configTime(0, 0, "pool.ntp.org", "time.nist.gov"); // UTC Serial.print(F("Waiting for NTP time sync: ")); diff --git a/libraries/LittleFS/examples/LITTLEFS_time/LITTLEFS_time.ino b/libraries/LittleFS/examples/LITTLEFS_time/LITTLEFS_time.ino index 038261b1127..bb5b9c3ae91 100644 --- a/libraries/LittleFS/examples/LITTLEFS_time/LITTLEFS_time.ino +++ b/libraries/LittleFS/examples/LITTLEFS_time/LITTLEFS_time.ino @@ -160,6 +160,10 @@ void setup(){ Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.println("Contacting Time Server"); + /* + Note: Bundled Arduino lwip supports only ONE ntp server, 2nd and 3rd options are silently ignored + see CONFIG_LWIP_DHCP_MAX_NTP_SERVERS define in ./tools/sdk/esp32/sdkconfig + */ configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); struct tm tmstruct ; delay(2000); diff --git a/libraries/SD/examples/SD_time/SD_time.ino b/libraries/SD/examples/SD_time/SD_time.ino index cef80dd600c..ff35d673448 100644 --- a/libraries/SD/examples/SD_time/SD_time.ino +++ b/libraries/SD/examples/SD_time/SD_time.ino @@ -164,6 +164,10 @@ void setup(){ Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.println("Contacting Time Server"); + /* + Note: Bundled Arduino lwip supports only ONE ntp server, 2nd and 3rd options are silently ignored + see CONFIG_LWIP_DHCP_MAX_NTP_SERVERS define in ./tools/sdk/esp32/sdkconfig + */ configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); struct tm tmstruct ; delay(2000); diff --git a/libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino b/libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino index 4472f8c6c37..c15a1648a3c 100644 --- a/libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino +++ b/libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino @@ -164,6 +164,10 @@ void setup(){ Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.println("Contacting Time Server"); + /* + Note: Bundled Arduino lwip supports only ONE ntp server, 2nd and 3rd options are silently ignored + see CONFIG_LWIP_DHCP_MAX_NTP_SERVERS define in ./tools/sdk/esp32/sdkconfig + */ configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); struct tm tmstruct ; delay(2000); diff --git a/libraries/SPIFFS/examples/SPIFFS_time/SPIFFS_time.ino b/libraries/SPIFFS/examples/SPIFFS_time/SPIFFS_time.ino index a86759693a9..60cd6484dfd 100644 --- a/libraries/SPIFFS/examples/SPIFFS_time/SPIFFS_time.ino +++ b/libraries/SPIFFS/examples/SPIFFS_time/SPIFFS_time.ino @@ -148,6 +148,10 @@ void setup(){ Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.println("Contacting Time Server"); + /* + Note: Bundled Arduino lwip supports only ONE ntp server, 2nd and 3rd options are silently ignored + see CONFIG_LWIP_DHCP_MAX_NTP_SERVERS define in ./tools/sdk/esp32/sdkconfig + */ configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); struct tm tmstruct ; delay(2000);