Skip to content

Commit

Permalink
fix(sntp): Lock / Unlock LWIP if CONFIG_LWIP_TCPIP_CORE_LOCKING is set
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieucarbou committed Oct 26, 2024
1 parent 74e4a74 commit d80c71b
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions cores/esp32/esp32-hal-time.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
//#include "tcpip_adapter.h"
#include "esp_netif.h"

#ifdef CONFIG_LWIP_TCPIP_CORE_LOCKING
#include "lwip/priv/tcpip_priv.h"
#endif

static void setTimeZone(long offset, int daylight) {
char cst[17] = {0};
char cdt[17] = "DST";
Expand Down Expand Up @@ -50,11 +54,23 @@ void configTime(long gmtOffset_sec, int daylightOffset_sec, const char *server1,
if (sntp_enabled()) {
sntp_stop();
}

#ifdef CONFIG_LWIP_TCPIP_CORE_LOCKING
if (!sys_thread_tcpip(LWIP_CORE_LOCK_QUERY_HOLDER))
LOCK_TCPIP_CORE();
#endif

sntp_setoperatingmode(SNTP_OPMODE_POLL);
sntp_setservername(0, (char *)server1);
sntp_setservername(1, (char *)server2);
sntp_setservername(2, (char *)server3);
sntp_init();

#ifdef CONFIG_LWIP_TCPIP_CORE_LOCKING
if (sys_thread_tcpip(LWIP_CORE_LOCK_QUERY_HOLDER))
UNLOCK_TCPIP_CORE();
#endif

setTimeZone(-gmtOffset_sec, daylightOffset_sec);
}

Expand All @@ -68,11 +84,23 @@ void configTzTime(const char *tz, const char *server1, const char *server2, cons
if (sntp_enabled()) {
sntp_stop();
}

#ifdef CONFIG_LWIP_TCPIP_CORE_LOCKING
if (!sys_thread_tcpip(LWIP_CORE_LOCK_QUERY_HOLDER))
LOCK_TCPIP_CORE();
#endif

sntp_setoperatingmode(SNTP_OPMODE_POLL);
sntp_setservername(0, (char *)server1);
sntp_setservername(1, (char *)server2);
sntp_setservername(2, (char *)server3);
sntp_init();

#ifdef CONFIG_LWIP_TCPIP_CORE_LOCKING
if (sys_thread_tcpip(LWIP_CORE_LOCK_QUERY_HOLDER))
UNLOCK_TCPIP_CORE();
#endif

setenv("TZ", tz, 1);
tzset();
}
Expand Down

0 comments on commit d80c71b

Please sign in to comment.