aboutsummaryrefslogtreecommitdiff
path: root/src/dbus
diff options
context:
space:
mode:
authorjinran-google <jinran@google.com>2022-06-24 23:33:23 +0800
committerGitHub <noreply@github.com>2022-06-24 08:33:23 -0700
commitefc940cdaacaccfc6a7dbe7435ec3a792ed757fe (patch)
tree20337c4aec1409ae17fad5e4908eab4de5bb9d3d /src/dbus
parentd1df82a6a1066c3b67e957449f37313f22c0a830 (diff)
downloadot-br-posix-efc940cdaacaccfc6a7dbe7435ec3a792ed757fe.tar.gz
[dbus] add notifications for active dataset changes (#1437)
Diffstat (limited to 'src/dbus')
-rw-r--r--src/dbus/server/dbus_thread_object.cpp10
-rw-r--r--src/dbus/server/dbus_thread_object.hpp1
2 files changed, 11 insertions, 0 deletions
diff --git a/src/dbus/server/dbus_thread_object.cpp b/src/dbus/server/dbus_thread_object.cpp
index c9b29dd1..51727e7e 100644
--- a/src/dbus/server/dbus_thread_object.cpp
+++ b/src/dbus/server/dbus_thread_object.cpp
@@ -107,6 +107,7 @@ otbrError DBusThreadObject::Init(void)
auto threadHelper = mNcp->GetThreadHelper();
threadHelper->AddDeviceRoleHandler(std::bind(&DBusThreadObject::DeviceRoleHandler, this, _1));
+ threadHelper->AddActiveDatasetChangeHandler(std::bind(&DBusThreadObject::ActiveDatasetChangeHandler, this, _1));
mNcp->RegisterResetHandler(std::bind(&DBusThreadObject::NcpResetHandler, this));
RegisterMethod(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_SCAN_METHOD,
@@ -241,6 +242,8 @@ void DBusThreadObject::DeviceRoleHandler(otDeviceRole aDeviceRole)
void DBusThreadObject::NcpResetHandler(void)
{
mNcp->GetThreadHelper()->AddDeviceRoleHandler(std::bind(&DBusThreadObject::DeviceRoleHandler, this, _1));
+ mNcp->GetThreadHelper()->AddActiveDatasetChangeHandler(
+ std::bind(&DBusThreadObject::ActiveDatasetChangeHandler, this, _1));
SignalPropertyChanged(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_DEVICE_ROLE,
GetDeviceRoleName(OT_DEVICE_ROLE_DISABLED));
}
@@ -1398,6 +1401,13 @@ exit:
return error;
}
+void DBusThreadObject::ActiveDatasetChangeHandler(const otOperationalDatasetTlvs &aDatasetTlvs)
+{
+ std::vector<uint8_t> value(aDatasetTlvs.mLength);
+ std::copy(aDatasetTlvs.mTlvs, aDatasetTlvs.mTlvs + aDatasetTlvs.mLength, value.begin());
+ SignalPropertyChanged(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_ACTIVE_DATASET_TLVS, value);
+}
+
static_assert(OTBR_SRP_SERVER_STATE_DISABLED == static_cast<uint8_t>(OT_SRP_SERVER_STATE_DISABLED),
"OTBR_SRP_SERVER_STATE_DISABLED value is incorrect");
static_assert(OTBR_SRP_SERVER_STATE_RUNNING == static_cast<uint8_t>(OT_SRP_SERVER_STATE_RUNNING),
diff --git a/src/dbus/server/dbus_thread_object.hpp b/src/dbus/server/dbus_thread_object.hpp
index 90a31d39..daad87b4 100644
--- a/src/dbus/server/dbus_thread_object.hpp
+++ b/src/dbus/server/dbus_thread_object.hpp
@@ -80,6 +80,7 @@ public:
private:
void DeviceRoleHandler(otDeviceRole aDeviceRole);
+ void ActiveDatasetChangeHandler(const otOperationalDatasetTlvs &aDatasetTlvs);
void NcpResetHandler(void);
void ScanHandler(DBusRequest &aRequest);