aboutsummaryrefslogtreecommitdiff
path: root/src/agent
diff options
context:
space:
mode:
authorjinran-google <jinran@google.com>2021-05-13 01:55:31 +0800
committerGitHub <noreply@github.com>2021-05-12 10:55:31 -0700
commit72815d01885f2ecbcfbd24d6d8ae72606c07a398 (patch)
tree7259f7298abca9078356b799ab28b3f319a1d437 /src/agent
parentcfabbf71c07f7c08c0d03b2fa01c3a0c3bf19f63 (diff)
downloadot-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.cpp14
-rw-r--r--src/agent/ncp_openthread.hpp6
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.