diff options
author | jinran-google <jinran@google.com> | 2022-06-24 23:33:23 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-24 08:33:23 -0700 |
commit | efc940cdaacaccfc6a7dbe7435ec3a792ed757fe (patch) | |
tree | 20337c4aec1409ae17fad5e4908eab4de5bb9d3d /src/dbus | |
parent | d1df82a6a1066c3b67e957449f37313f22c0a830 (diff) | |
download | ot-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.cpp | 10 | ||||
-rw-r--r-- | src/dbus/server/dbus_thread_object.hpp | 1 |
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); |