diff --git a/src/ArduinoIoTCloudTCP.cpp b/src/ArduinoIoTCloudTCP.cpp index 96907800e..438dfa260 100644 --- a/src/ArduinoIoTCloudTCP.cpp +++ b/src/ArduinoIoTCloudTCP.cpp @@ -216,6 +216,7 @@ void ArduinoIoTCloudTCP::update() switch (_state) { case State::ConfigPhy: next_state = handle_ConfigPhy(); break; + case State::UpdatePhy: next_state = handle_UpdatePhy(); break; case State::Init: next_state = handle_Init(); break; case State::ConnectPhy: next_state = handle_ConnectPhy(); break; case State::SyncTime: next_state = handle_SyncTime(); break; @@ -240,7 +241,7 @@ void ArduinoIoTCloudTCP::update() */ #if NETWORK_CONFIGURATOR_ENABLED if(_configurator != nullptr && _state > State::Init && _configurator->update() == NetworkConfiguratorStates::UPDATING_CONFIG){ - _state = State::ConfigPhy; + _state = State::UpdatePhy; } #endif @@ -316,6 +317,17 @@ ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_ConfigPhy() #endif } +ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_UpdatePhy() +{ +#if NETWORK_CONFIGURATOR_ENABLED + if(_configurator->update() == NetworkConfiguratorStates::CONFIGURED) { + _configurator->disconnectAgent(); + return State::Disconnect; + } + return State::UpdatePhy; +#endif +} + ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_Init() { /* Setup broker TLS client */ diff --git a/src/ArduinoIoTCloudTCP.h b/src/ArduinoIoTCloudTCP.h index d59c6de97..fd2ffab7f 100644 --- a/src/ArduinoIoTCloudTCP.h +++ b/src/ArduinoIoTCloudTCP.h @@ -122,6 +122,7 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass enum class State { ConfigPhy, + UpdatePhy, Init, ConnectPhy, SyncTime, @@ -178,6 +179,7 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass inline String getTopic_datain () { return ( getThingId().length() == 0) ? String("") : String("/a/t/" + getThingId() + "/e/i"); } State handle_ConfigPhy(); + State handle_UpdatePhy(); State handle_Init(); State handle_ConnectPhy(); State handle_SyncTime();