@@ -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
0 commit comments