Skip to content

Commit 79c7630

Browse files
committed
generalize check_eth state
1 parent 1c2f0fb commit 79c7630

File tree

2 files changed

+45
-30
lines changed

2 files changed

+45
-30
lines changed

src/NetworkConfigurator.cpp

+39-27
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@ bool NetworkConfiguratorClass::begin() {
5151
if(_state != NetworkConfiguratorStates::END) {
5252
return true;
5353
}
54+
#if ZERO_TOUCH_ENABLED
55+
_state = NetworkConfiguratorStates::ZERO_TOUCH_CONFIG;
56+
#else
5457
_state = NetworkConfiguratorStates::READ_STORED_CONFIG;
58+
#endif
5559
memset(&_networkSetting, 0x00, sizeof(models::NetworkSetting));
5660
LEDFeedbackClass::getInstance().begin();
5761
#ifdef BOARD_HAS_WIFI
@@ -76,17 +80,6 @@ bool NetworkConfiguratorClass::begin() {
7680
_connectionRetryTimer.begin(NC_CONNECTION_RETRY_TIMER_ms);
7781
_resetInput->begin();
7882

79-
#ifdef BOARD_HAS_ETHERNET //TODO Generalize
80-
_networkSetting.type = NetworkAdapter::ETHERNET;
81-
_networkSetting.eth.timeout = 250;
82-
_networkSetting.eth.response_timeout = 500;
83-
if (!_connectionHandler->updateSetting(_networkSetting)) {
84-
return true;
85-
}
86-
_connectionHandlerIstantiated = true;
87-
_connectionTimeout.reload();
88-
_state = NetworkConfiguratorStates::CHECK_ETH;
89-
#endif
9083
return true;
9184
}
9285

@@ -95,16 +88,16 @@ NetworkConfiguratorStates NetworkConfiguratorClass::poll() {
9588
LEDFeedbackClass::getInstance().poll();//TODO rename in update
9689

9790
switch (_state) {
98-
#ifdef BOARD_HAS_ETHERNET
99-
case NetworkConfiguratorStates::CHECK_ETH: nextState = handleCheckEth (); break;
91+
#if ZERO_TOUCH_ENABLED
92+
case NetworkConfiguratorStates::ZERO_TOUCH_CONFIG: nextState = handleZeroTouchConfig(); break;
10093
#endif
101-
case NetworkConfiguratorStates::READ_STORED_CONFIG: nextState = handleReadStorage (); break;
102-
case NetworkConfiguratorStates::WAITING_FOR_CONFIG: nextState = handleWaitingForConf(); break;
103-
case NetworkConfiguratorStates::CONNECTING: nextState = handleConnecting (); break;
104-
case NetworkConfiguratorStates::CONFIGURED: nextState = handleConfigured (); break;
105-
case NetworkConfiguratorStates::UPDATING_CONFIG: nextState = handleUpdatingConfig(); break;
106-
case NetworkConfiguratorStates::ERROR: nextState = handleErrorState (); break;
107-
case NetworkConfiguratorStates::END: break;
94+
case NetworkConfiguratorStates::READ_STORED_CONFIG: nextState = handleReadStorage (); break;
95+
case NetworkConfiguratorStates::WAITING_FOR_CONFIG: nextState = handleWaitingForConf (); break;
96+
case NetworkConfiguratorStates::CONNECTING: nextState = handleConnecting (); break;
97+
case NetworkConfiguratorStates::CONFIGURED: nextState = handleConfigured (); break;
98+
case NetworkConfiguratorStates::UPDATING_CONFIG: nextState = handleUpdatingConfig (); break;
99+
case NetworkConfiguratorStates::ERROR: nextState = handleErrorState (); break;
100+
case NetworkConfiguratorStates::END: break;
108101
}
109102

110103
if(_state != nextState){
@@ -429,22 +422,32 @@ void NetworkConfiguratorClass::startReconfigureProcedure() {
429422
NVIC_SystemReset();
430423
}
431424

432-
#ifdef BOARD_HAS_ETHERNET
433-
NetworkConfiguratorStates NetworkConfiguratorClass::handleCheckEth() {
434-
NetworkConfiguratorStates nextState = _state;
425+
#if ZERO_TOUCH_ENABLED
426+
NetworkConfiguratorStates NetworkConfiguratorClass::handleZeroTouchConfig() {
427+
if(_networkSetting.type == NetworkAdapter::NONE) {
428+
#ifdef BOARD_HAS_ETHERNET
429+
defaultEthernetSettings();
430+
#endif
431+
if (!_connectionHandler->updateSetting(_networkSetting)) {
432+
return NetworkConfiguratorStates::READ_STORED_CONFIG;
433+
}
434+
_connectionHandlerIstantiated = true;
435+
_connectionTimeout.reload();
436+
}
437+
435438
StatusMessage err;
436439
ConnectionResult connectionRes = connectToNetwork(&err);
437440
if (connectionRes == ConnectionResult::SUCCESS) {
438-
nextState = NetworkConfiguratorStates::CONFIGURED;
441+
return NetworkConfiguratorStates::CONFIGURED;
439442
} else if (connectionRes == ConnectionResult::FAILED) {
440443
DEBUG_VERBOSE("NetworkConfiguratorClass::%s Connection eth fail", __FUNCTION__);
441444
if(disconnectFromNetwork() == ConnectionResult::FAILED) {
442445
sendStatus(StatusMessage::ERROR);
443446
}
444447
_connectionHandlerIstantiated = false;
445-
nextState = NetworkConfiguratorStates::READ_STORED_CONFIG;
448+
return NetworkConfiguratorStates::READ_STORED_CONFIG;
446449
}
447-
return nextState;
450+
return NetworkConfiguratorStates::ZERO_TOUCH_CONFIG;
448451
}
449452
#endif
450453

@@ -665,4 +668,13 @@ void NetworkConfiguratorClass::printNetworkSettings() {
665668
break;
666669
}
667670
}
668-
#endif // NETWORK_CONFIGURATOR_COMPATIBLE
671+
672+
#ifdef BOARD_HAS_ETHERNET
673+
void NetworkConfiguratorClass::defaultEthernetSettings() {
674+
_networkSetting.type = NetworkAdapter::ETHERNET;
675+
_networkSetting.eth.timeout = 250;
676+
_networkSetting.eth.response_timeout = 500;
677+
}
678+
#endif
679+
680+
#endif // NETWORK_CONFIGURATOR_COMPATIBLE

src/NetworkConfigurator.h

+6-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include <Arduino_KVStore.h>
1919
#include "Utility/ResetInput/ResetInput.h"
2020

21-
enum class NetworkConfiguratorStates { CHECK_ETH, //TODO rename
21+
enum class NetworkConfiguratorStates { ZERO_TOUCH_CONFIG,
2222
READ_STORED_CONFIG,
2323
WAITING_FOR_CONFIG,
2424
CONNECTING,
@@ -161,8 +161,8 @@ class NetworkConfiguratorClass {
161161
KVStore *_kvstore;
162162
AgentsManagerClass *_agentsManager;
163163

164-
#ifdef BOARD_HAS_ETHERNET
165-
NetworkConfiguratorStates handleCheckEth(); //TODO rename
164+
#if ZERO_TOUCH_ENABLED
165+
NetworkConfiguratorStates handleZeroTouchConfig();
166166
#endif
167167
NetworkConfiguratorStates handleReadStorage();
168168
NetworkConfiguratorStates handleWaitingForConf();
@@ -180,6 +180,9 @@ class NetworkConfiguratorClass {
180180
ConnectionResult disconnectFromNetwork();
181181
bool sendStatus(StatusMessage msg);
182182
static void printNetworkSettings();
183+
#ifdef BOARD_HAS_ETHERNET
184+
void defaultEthernetSettings();
185+
#endif
183186
#ifdef BOARD_HAS_WIFI
184187
bool scanWiFiNetworks(WiFiOption &wifiOptObj);
185188
bool insertWiFiAP(WiFiOption &wifiOptObj, char *ssid, int rssi);

0 commit comments

Comments
 (0)