diff --git a/examples/utility/ArduinoIoTCloud_Travis_CI/thingProperties.h b/examples/utility/ArduinoIoTCloud_Travis_CI/thingProperties.h index 02ce29c2f..c0dded7a5 100644 --- a/examples/utility/ArduinoIoTCloud_Travis_CI/thingProperties.h +++ b/examples/utility/ArduinoIoTCloud_Travis_CI/thingProperties.h @@ -54,7 +54,6 @@ String str_property_6; String str_property_7; String str_property_8; - #if defined(BOARD_HAS_WIFI) WiFiConnectionHandler ArduinoIoTPreferredConnection(SECRET_SSID, SECRET_PASS); #elif defined(BOARD_HAS_GSM) diff --git a/src/AIoTC_Config.h b/src/AIoTC_Config.h index 7fd515395..2515575c9 100644 --- a/src/AIoTC_Config.h +++ b/src/AIoTC_Config.h @@ -26,6 +26,10 @@ #define OTA_STORAGE_SFU (0) #endif +#ifndef NTP_USE_RANDOM_PORT + #define NTP_USE_RANDOM_PORT (1) +#endif + #ifndef DBG_ERROR #define DBG_ERROR(fmt, ...) Debug.print(DBG_ERROR, fmt, ## __VA_ARGS__) #endif diff --git a/src/utility/time/NTPUtils.cpp b/src/utility/time/NTPUtils.cpp index 76d6862d7..9ce276c8c 100644 --- a/src/utility/time/NTPUtils.cpp +++ b/src/utility/time/NTPUtils.cpp @@ -25,6 +25,9 @@ #include "NTPUtils.h" #include +#ifdef BOARD_HAS_ECCX08 + #include +#endif /************************************************************************************** * PUBLIC MEMBER FUNCTIONS @@ -32,8 +35,12 @@ unsigned long NTPUtils::getTime(UDP & udp) { +#ifdef NTP_USE_RANDOM_PORT + udp.begin(NTPUtils::getRandomPort(MIN_NTP_PORT, MAX_NTP_PORT)); +#else udp.begin(NTP_LOCAL_PORT); - +#endif + sendNTPpacket(udp); bool is_timeout = false; @@ -83,4 +90,14 @@ void NTPUtils::sendNTPpacket(UDP & udp) udp.endPacket(); } +int NTPUtils::getRandomPort(int const min_port, int const max_port) +{ +#ifdef BOARD_HAS_ECCX08 + return ECCX08.random(min_port, max_port); +#else + randomSeed(analogRead(0)); + return random(min_port, max_port); +#endif +} + #endif /* #ifndef HAS_LORA */ diff --git a/src/utility/time/NTPUtils.h b/src/utility/time/NTPUtils.h index 0162078a5..91cec89af 100644 --- a/src/utility/time/NTPUtils.h +++ b/src/utility/time/NTPUtils.h @@ -42,17 +42,21 @@ class NTPUtils public: static unsigned long getTime(UDP & udp); + static int getRandomPort(int const min_port, int const max_port); private: static size_t const NTP_PACKET_SIZE = 48; static int const NTP_TIME_SERVER_PORT = 123; static int const NTP_LOCAL_PORT = 8888; +#if NTP_USE_RANDOM_PORT + static int const MIN_NTP_PORT = 49152; + static int const MAX_NTP_PORT = 65535; +#endif static unsigned long const NTP_TIMEOUT_MS = 1000; static char constexpr * NTP_TIME_SERVER = "time.arduino.cc"; static void sendNTPpacket(UDP & udp); - }; #endif /* #ifndef HAS_LORA */