diff --git a/src/DeviceInterfaces/Networking.Sntp/lwip_sntp_default_options.h b/src/DeviceInterfaces/Networking.Sntp/lwip_sntp_default_options.h index a55419f165..7a049193cd 100644 --- a/src/DeviceInterfaces/Networking.Sntp/lwip_sntp_default_options.h +++ b/src/DeviceInterfaces/Networking.Sntp/lwip_sntp_default_options.h @@ -3,8 +3,8 @@ // See LICENSE file in the project root for full license information. // -#define SNTP_SERVER0_DEFAULT_ADDRESS "0.pool.ntp.org" -#define SNTP_SERVER1_DEFAULT_ADDRESS "1.pool.ntp.org" +#define SNTP_SERVER0_DEFAULT_ADDRESS "pool.ntp.org" +#define SNTP_SERVER1_DEFAULT_ADDRESS "time.cloudflare.com" // update delay (default 1 hour) // (value in milliseconds) diff --git a/src/DeviceInterfaces/Networking.Sntp/nf_lwipopts_sntp.h b/src/DeviceInterfaces/Networking.Sntp/nf_lwipopts_sntp.h index 939e48e89d..e6a2062185 100644 --- a/src/DeviceInterfaces/Networking.Sntp/nf_lwipopts_sntp.h +++ b/src/DeviceInterfaces/Networking.Sntp/nf_lwipopts_sntp.h @@ -25,7 +25,14 @@ extern "C" #endif // SNTP servers can be IP or full address and are resolved at +#if !defined SNTP_SERVER_DNS #define SNTP_SERVER_DNS 1 +#endif + +// SNTP servers can be discovered from DHCP +#if !defined SNTP_GET_SERVERS_FROM_DHCP +#define SNTP_GET_SERVERS_FROM_DHCP 1 +#endif // use two servers #define SNTP_MAX_SERVERS 2 diff --git a/targets/ChibiOS/_lwIP/nf_lwipthread.c b/targets/ChibiOS/_lwIP/nf_lwipthread.c index ff3d4164d4..a6df0b6b5e 100644 --- a/targets/ChibiOS/_lwIP/nf_lwipthread.c +++ b/targets/ChibiOS/_lwIP/nf_lwipthread.c @@ -236,6 +236,21 @@ struct netif *nf_getNetif() return &thisif; } +static void initialize_sntp() +{ + sntp_stop(); + sntp_setoperatingmode(SNTP_OPMODE_POLL); +#if SNTP_GET_SERVERS_FROM_DHCP + // try to get the ntp server from dhcp + sntp_servermode_dhcp(1); +#endif +#if SNTP_SERVER_DNS + sntp_setservername(0, SNTP_SERVER0_DEFAULT_ADDRESS); + sntp_setservername(1, SNTP_SERVER1_DEFAULT_ADDRESS); +#endif + sntp_init(); +} + void lwipDefaultLinkUpCB(void *p) { struct netif *ifc = (struct netif *)p; @@ -260,7 +275,7 @@ void lwipDefaultLinkUpCB(void *p) // otherwise SNTP will be started when DHCP request succeeds if (addressMode != NET_ADDRESS_DHCP) { - sntp_init(); + initialize_sntp(); } #endif } @@ -284,9 +299,7 @@ void lwipDefaultLinkDownCB(void *p) } #endif -#if SNTP_SERVER_DNS sntp_stop(); -#endif } /** @@ -337,6 +350,8 @@ static THD_FUNCTION(lwip_thread, p) } else { + // FIXME: this is set to the default lwIP address which might not be the same as the opts. + // It currently defaults to the STM32 developer MAC. thisif.hwaddr[0] = LWIP_ETHADDR_0; thisif.hwaddr[1] = LWIP_ETHADDR_1; thisif.hwaddr[2] = LWIP_ETHADDR_2; @@ -398,13 +413,8 @@ static THD_FUNCTION(lwip_thread, p) chThdResume(&lwip_trp, MSG_OK); chThdSetPriority(LWIP_THREAD_PRIORITY); -// setup SNTP -#if SNTP_SERVER_DNS - sntp_setoperatingmode(SNTP_OPMODE_POLL); - sntp_setservername(0, SNTP_SERVER0_DEFAULT_ADDRESS); - sntp_setservername(1, SNTP_SERVER1_DEFAULT_ADDRESS); - sntp_init(); -#endif + // setup SNTP + initialize_sntp(); while (true) { diff --git a/targets/ChibiOS/_lwIP/nf_lwipthread.h b/targets/ChibiOS/_lwIP/nf_lwipthread.h index c8d2685a78..53f90bf5c3 100644 --- a/targets/ChibiOS/_lwIP/nf_lwipthread.h +++ b/targets/ChibiOS/_lwIP/nf_lwipthread.h @@ -21,7 +21,7 @@ * @brief Default network interface hostname. */ #if !defined(LWIP_NETIF_HOSTNAME_STRING) || defined(__DOXYGEN__) -#define LWIP_NETIF_HOSTNAME_STRING "lwip" +#define LWIP_NETIF_HOSTNAME_STRING "nf-chibios-lwip" #endif /** @@ -91,42 +91,42 @@ * @brief MAC Address byte 0. */ #if !defined(LWIP_ETHADDR_0) || defined(__DOXYGEN__) -#define LWIP_ETHADDR_0 0xC2 +#define LWIP_ETHADDR_0 0x00 #endif /** * @brief MAC Address byte 1. */ #if !defined(LWIP_ETHADDR_1) || defined(__DOXYGEN__) -#define LWIP_ETHADDR_1 0xAF +#define LWIP_ETHADDR_1 0x80 #endif /** * @brief MAC Address byte 2. */ #if !defined(LWIP_ETHADDR_2) || defined(__DOXYGEN__) -#define LWIP_ETHADDR_2 0x51 +#define LWIP_ETHADDR_2 0xE1 #endif /** * @brief MAC Address byte 3. */ #if !defined(LWIP_ETHADDR_3) || defined(__DOXYGEN__) -#define LWIP_ETHADDR_3 0x03 +#define LWIP_ETHADDR_3 0x01 #endif /** * @brief MAC Address byte 4. */ #if !defined(LWIP_ETHADDR_4) || defined(__DOXYGEN__) -#define LWIP_ETHADDR_4 0xCF +#define LWIP_ETHADDR_4 0x35 #endif /** * @brief MAC Address byte 5. */ #if !defined(LWIP_ETHADDR_5) || defined(__DOXYGEN__) -#define LWIP_ETHADDR_5 0x46 +#define LWIP_ETHADDR_5 0xD1 #endif /** diff --git a/targets/ESP32/_common/targetHAL_Network.cpp b/targets/ESP32/_common/targetHAL_Network.cpp index 3e39a64dda..d1bf751ee8 100644 --- a/targets/ESP32/_common/targetHAL_Network.cpp +++ b/targets/ESP32/_common/targetHAL_Network.cpp @@ -86,8 +86,14 @@ static void initialize_sntp() { sntp_stop(); sntp_setoperatingmode(SNTP_OPMODE_POLL); +#if SNTP_GET_SERVERS_FROM_DHCP + // try to get the ntp server from dhcp + sntp_servermode_dhcp(1); +#endif +#if SNTP_SERVER_DNS sntp_setservername(0, SNTP_SERVER0_DEFAULT_ADDRESS); sntp_setservername(1, SNTP_SERVER1_DEFAULT_ADDRESS); +#endif sntp_init(); } diff --git a/targets/TI_SimpleLink/_nanoCLR/targetSimpleLinkCC32xx_Threads.c b/targets/TI_SimpleLink/_nanoCLR/targetSimpleLinkCC32xx_Threads.c index e5995bb76b..1bc7fc4dc7 100644 --- a/targets/TI_SimpleLink/_nanoCLR/targetSimpleLinkCC32xx_Threads.c +++ b/targets/TI_SimpleLink/_nanoCLR/targetSimpleLinkCC32xx_Threads.c @@ -833,8 +833,16 @@ void *mainThread(void *arg) } #ifdef SL_APP_SNTP + sntp_stop(); + sntp_setoperatingmode(SNTP_OPMODE_POLL); +#if SNTP_GET_SERVERS_FROM_DHCP + // try to get the ntp server from dhcp + sntp_servermode_dhcp(1); +#endif +#if SNTP_SERVER_DNS sntp_setservername(0, SNTP_SERVER0_DEFAULT_ADDRESS); sntp_setservername(1, SNTP_SERVER1_DEFAULT_ADDRESS); +#endif sntp_init(); #endif