diff --git a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h index f570a85fef..3cdb8cff66 100644 --- a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h +++ b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h @@ -87,6 +87,8 @@ class GenericThreadDriver final : public ThreadDriver connectNetworkTimeout = connectTimeoutSec; } + void ClearNetwork() { mStagingNetwork.Clear(); } + // BaseDriver NetworkIterator * GetNetworks() override { return new ThreadNetworkIterator(this); } CHIP_ERROR Init(Internal::BaseDriver::NetworkStatusChangeCallback * statusChangeCallback) override; diff --git a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.hpp b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.hpp index 6916c096c9..b453d1dc40 100644 --- a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.hpp +++ b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.hpp @@ -87,6 +87,13 @@ void initNetworkCommissioningThreadDriver() #endif } +void resetGenericThreadDriver() +{ +#ifndef _NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_ + sGenericThreadDriver.ClearNetwork(); +#endif +} + #if CHIP_DEVICE_CONFIG_ENABLE_THREAD_DNS_CLIENT CHIP_ERROR ReadDomainNameComponent(const char *& in, char * out, size_t outSize) { @@ -1257,6 +1264,7 @@ void GenericThreadStackManagerImpl_OpenThread::_ErasePersistentInfo() otThreadSetEnabled(mOTInst, false); otIp6SetEnabled(mOTInst, false); otInstanceErasePersistentInfo(mOTInst); + resetGenericThreadDriver(); Impl()->UnlockThreadStack(); }