From e5b44d2f422a606cb54da848f9c803174302799a Mon Sep 17 00:00:00 2001 From: fabik111 Date: Wed, 16 Jul 2025 14:36:04 +0200 Subject: [PATCH 1/2] add function for setting connection timeout accroding to network type --- src/Arduino_NetworkConfigurator.cpp | 59 +++++++++++++++++++++++++++-- src/Arduino_NetworkConfigurator.h | 3 ++ 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/Arduino_NetworkConfigurator.cpp b/src/Arduino_NetworkConfigurator.cpp index 40c33c4..71abc87 100644 --- a/src/Arduino_NetworkConfigurator.cpp +++ b/src/Arduino_NetworkConfigurator.cpp @@ -86,7 +86,6 @@ bool NetworkConfiguratorClass::begin() { DEBUG_ERROR("NetworkConfiguratorClass::%s Failed to initialize the AgentsManagerClass", __FUNCTION__); } - _connectionTimeout.begin(NC_CONNECTION_TIMEOUT_ms); _connectionRetryTimer.begin(NC_CONNECTION_RETRY_TIMER_ms); _resetInput->begin(); @@ -112,7 +111,7 @@ NetworkConfiguratorStates NetworkConfiguratorClass::update() { if(_state != nextState){ if(nextState == NetworkConfiguratorStates::CONNECTING){ - _connectionTimeout.reload(); + setConnectionTimeoutTimer(); } _state = nextState; } @@ -395,6 +394,60 @@ bool NetworkConfiguratorClass::handleConnectRequest() { return true; } +void NetworkConfiguratorClass::setConnectionTimeoutTimer() { + uint32_t timeout = 0; + switch (_networkSetting.type) { +#if defined(BOARD_HAS_WIFI) + case NetworkAdapter::WIFI: + timeout = 15000; // 15 seconds + break; +#endif + +#if defined(BOARD_HAS_ETHERNET) + case NetworkAdapter::ETHERNET: + timeout = 15000; // 15 seconds + break; +#endif + +#if defined(BOARD_HAS_NB) + case NetworkAdapter::NB: + timeout = 25000; // 25 seconds + break; +#endif + +#if defined(BOARD_HAS_GSM) + case NetworkAdapter::GSM: + timeout = 25000; // 25 seconds + break; +#endif + +#if defined(BOARD_HAS_CATM1_NBIOT) + case NetworkAdapter::CATM1: + timeout = 25000; // 25 seconds + break; +#endif + +#if defined(BOARD_HAS_CELLULAR) + case NetworkAdapter::CELL: + timeout = 25000; // 25 seconds + break; +#endif + +#if defined(BOARD_HAS_LORA) + case NetworkAdapter::LORA: + timeout 15000; // 15 seconds + break; +#endif + default: + timeout = 15000; // Default to 15 seconds for other adapters + break; + } + + _connectionTimeout.begin(timeout); + _connectionTimeout.reload(); + return; +} + String NetworkConfiguratorClass::decodeConnectionErrorMessage(NetworkConnectionState err, StatusMessage *errorCode) { switch (err) { case NetworkConnectionState::ERROR: @@ -462,7 +515,7 @@ NetworkConfiguratorStates NetworkConfiguratorClass::handleZeroTouchConfig() { return NetworkConfiguratorStates::READ_STORED_CONFIG; } _connectionHandlerIstantiated = true; - _connectionTimeout.reload(); + setConnectionTimeoutTimer(); } StatusMessage err; diff --git a/src/Arduino_NetworkConfigurator.h b/src/Arduino_NetworkConfigurator.h index fafe125..207e5ea 100644 --- a/src/Arduino_NetworkConfigurator.h +++ b/src/Arduino_NetworkConfigurator.h @@ -207,6 +207,9 @@ class NetworkConfiguratorClass { void startReconfigureProcedure(); + // Returns the connection timeout in milliseconds according to the set network type + void setConnectionTimeoutTimer(); + String decodeConnectionErrorMessage(NetworkConnectionState err, StatusMessage *errorCode); ConnectionResult connectToNetwork(StatusMessage *err); ConnectionResult disconnectFromNetwork(); From fd7c4fe4f8369fb6d0af089fbea80aeaba898840 Mon Sep 17 00:00:00 2001 From: fabik111 Date: Thu, 17 Jul 2025 11:28:49 +0200 Subject: [PATCH 2/2] change set timeout at 30 seconds for cellular based connectivities --- src/Arduino_NetworkConfigurator.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Arduino_NetworkConfigurator.cpp b/src/Arduino_NetworkConfigurator.cpp index 71abc87..cd16080 100644 --- a/src/Arduino_NetworkConfigurator.cpp +++ b/src/Arduino_NetworkConfigurator.cpp @@ -399,47 +399,47 @@ void NetworkConfiguratorClass::setConnectionTimeoutTimer() { switch (_networkSetting.type) { #if defined(BOARD_HAS_WIFI) case NetworkAdapter::WIFI: - timeout = 15000; // 15 seconds + timeout = NC_CONNECTION_TIMEOUT_ms; // 15 seconds break; #endif #if defined(BOARD_HAS_ETHERNET) case NetworkAdapter::ETHERNET: - timeout = 15000; // 15 seconds + timeout = NC_CONNECTION_TIMEOUT_ms; // 15 seconds break; #endif #if defined(BOARD_HAS_NB) case NetworkAdapter::NB: - timeout = 25000; // 25 seconds + timeout = 2 * NC_CONNECTION_TIMEOUT_ms; // 30 seconds break; #endif #if defined(BOARD_HAS_GSM) case NetworkAdapter::GSM: - timeout = 25000; // 25 seconds + timeout = 2 * NC_CONNECTION_TIMEOUT_ms; // 30 seconds break; #endif #if defined(BOARD_HAS_CATM1_NBIOT) case NetworkAdapter::CATM1: - timeout = 25000; // 25 seconds + timeout = 2 * NC_CONNECTION_TIMEOUT_ms; // 30 seconds break; #endif #if defined(BOARD_HAS_CELLULAR) case NetworkAdapter::CELL: - timeout = 25000; // 25 seconds + timeout = 2 * NC_CONNECTION_TIMEOUT_ms; // 30 seconds break; #endif #if defined(BOARD_HAS_LORA) case NetworkAdapter::LORA: - timeout 15000; // 15 seconds + timeout = NC_CONNECTION_TIMEOUT_ms; // 15 seconds break; #endif default: - timeout = 15000; // Default to 15 seconds for other adapters + timeout = NC_CONNECTION_TIMEOUT_ms; // Default to 15 seconds for other adapters break; }