aboutsummaryrefslogtreecommitdiff
path: root/src/dbus
diff options
context:
space:
mode:
authorjinran-google <jinran@google.com>2021-04-06 00:28:31 +0800
committerGitHub <noreply@github.com>2021-04-05 09:28:31 -0700
commitfec07bf63c95e1be6d25c322838c0968e6fc63ca (patch)
tree732f5205c8ae2247c1bb8d7bf5518ab9310e3988 /src/dbus
parent1054bf91d2539a47eaae6a768e2cf1c4876eb605 (diff)
downloadot-br-posix-fec07bf63c95e1be6d25c322838c0968e6fc63ca.tar.gz
[dbus] add "Detach" API (#767)
Diffstat (limited to 'src/dbus')
-rw-r--r--src/dbus/common/constants.hpp1
-rw-r--r--src/dbus/server/dbus_thread_object.cpp7
-rw-r--r--src/dbus/server/dbus_thread_object.hpp1
-rw-r--r--src/dbus/server/introspect.xml4
4 files changed, 13 insertions, 0 deletions
diff --git a/src/dbus/common/constants.hpp b/src/dbus/common/constants.hpp
index 2d4cc313..158ff6f1 100644
--- a/src/dbus/common/constants.hpp
+++ b/src/dbus/common/constants.hpp
@@ -46,6 +46,7 @@
#define OTBR_DBUS_SCAN_METHOD "Scan"
#define OTBR_DBUS_ATTACH_METHOD "Attach"
+#define OTBR_DBUS_DETACH_METHOD "Detach"
#define OTBR_DBUS_FACTORY_RESET_METHOD "FactoryReset"
#define OTBR_DBUS_RESET_METHOD "Reset"
#define OTBR_DBUS_ADD_ON_MESH_PREFIX_METHOD "AddOnMeshPrefix"
diff --git a/src/dbus/server/dbus_thread_object.cpp b/src/dbus/server/dbus_thread_object.cpp
index f6c15be9..4e8a4680 100644
--- a/src/dbus/server/dbus_thread_object.cpp
+++ b/src/dbus/server/dbus_thread_object.cpp
@@ -111,6 +111,8 @@ otbrError DBusThreadObject::Init(void)
std::bind(&DBusThreadObject::ScanHandler, this, _1));
RegisterMethod(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_ATTACH_METHOD,
std::bind(&DBusThreadObject::AttachHandler, this, _1));
+ RegisterMethod(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_DETACH_METHOD,
+ std::bind(&DBusThreadObject::DetachHandler, this, _1));
RegisterMethod(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_FACTORY_RESET_METHOD,
std::bind(&DBusThreadObject::FactoryResetHandler, this, _1));
RegisterMethod(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_RESET_METHOD,
@@ -287,6 +289,11 @@ void DBusThreadObject::AttachHandler(DBusRequest &aRequest)
}
}
+void DBusThreadObject::DetachHandler(DBusRequest &aRequest)
+{
+ aRequest.ReplyOtResult(mNcp->GetThreadHelper()->Detach());
+}
+
void DBusThreadObject::FactoryResetHandler(DBusRequest &aRequest)
{
aRequest.ReplyOtResult(OT_ERROR_NONE);
diff --git a/src/dbus/server/dbus_thread_object.hpp b/src/dbus/server/dbus_thread_object.hpp
index b303ef0a..cf56f09d 100644
--- a/src/dbus/server/dbus_thread_object.hpp
+++ b/src/dbus/server/dbus_thread_object.hpp
@@ -86,6 +86,7 @@ private:
void ScanHandler(DBusRequest &aRequest);
void AttachHandler(DBusRequest &aRequest);
+ void DetachHandler(DBusRequest &aRequest);
void LeaveHandler(DBusRequest &aRequest);
void FactoryResetHandler(DBusRequest &aRequest);
void ResetHandler(DBusRequest &aRequest);
diff --git a/src/dbus/server/introspect.xml b/src/dbus/server/introspect.xml
index 9436e59b..c9aebf39 100644
--- a/src/dbus/server/introspect.xml
+++ b/src/dbus/server/introspect.xml
@@ -46,6 +46,10 @@
<arg name="channel_mask" type="u"/>
</method>
+ <!-- Detach: Detach the current device from the Thread network. -->
+ <method name="Detach">
+ </method>
+
<!-- PermitUnsecureJoin: Allow joining the network via unsecure traffic temporarily.
@port: The port of the unsecure traffic.
@timeout: The timeout for the permission.