diff options
author | jinran-google <jinran@google.com> | 2021-05-13 01:55:31 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-12 10:55:31 -0700 |
commit | 72815d01885f2ecbcfbd24d6d8ae72606c07a398 (patch) | |
tree | 7259f7298abca9078356b799ab28b3f319a1d437 /src/agent | |
parent | cfabbf71c07f7c08c0d03b2fa01c3a0c3bf19f63 (diff) | |
download | ot-br-posix-72815d01885f2ecbcfbd24d6d8ae72606c07a398.tar.gz |
[dbus] use pseudo reset in DBus APIs (#845)
Diffstat (limited to 'src/agent')
-rw-r--r-- | src/agent/ncp_openthread.cpp | 14 | ||||
-rw-r--r-- | src/agent/ncp_openthread.hpp | 6 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/agent/ncp_openthread.cpp b/src/agent/ncp_openthread.cpp index a78eeeb1..26c7f8d5 100644 --- a/src/agent/ncp_openthread.cpp +++ b/src/agent/ncp_openthread.cpp @@ -209,6 +209,20 @@ void ControllerOpenThread::AddThreadStateChangedCallback(ThreadStateChangedCallb mThreadStateChangedCallbacks.emplace_back(std::move(aCallback)); } +void ControllerOpenThread::Reset(void) +{ + gPlatResetReason = OT_PLAT_RESET_REASON_SOFTWARE; + + otInstanceFinalize(mInstance); + otSysDeinit(); + Init(); + for (auto &handler : mResetHandlers) + { + handler(); + } + unsetenv("OTBR_NO_AUTO_ATTACH"); +} + const char *ControllerOpenThread::GetThreadVersion(void) { const char *version; diff --git a/src/agent/ncp_openthread.hpp b/src/agent/ncp_openthread.hpp index f7bf5596..11aa8358 100644 --- a/src/agent/ncp_openthread.hpp +++ b/src/agent/ncp_openthread.hpp @@ -137,6 +137,12 @@ public: void AddThreadStateChangedCallback(ThreadStateChangedCallback aCallback); /** + * This method resets the OpenThread instance. + * + */ + void Reset(void); + + /** * This method returns the Thread protocol version as a string. * * @returns A pointer to the Thread version string. |