From 684c8128ad203c86d1f058913dcd73fde63e9eaf Mon Sep 17 00:00:00 2001 From: Adrian Gielniewski Date: Fri, 6 Dec 2024 16:45:43 +0100 Subject: [PATCH] [nrf toup] Clear Thread Network after last fabric is removed Dataset has to be cleared to allow commissioning to different network when CONFIG_CHIP_LAST_FABRIC_REMOVED_ERASE_ONLY is used. Signed-off-by: Adrian Gielniewski --- .../OpenThread/GenericNetworkCommissioningThreadDriver.h | 2 ++ .../GenericThreadStackManagerImpl_OpenThread.hpp | 8 ++++++++ 2 files changed, 10 insertions(+) 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(); }