Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dbus] add PendingDatasetTlvs #1947

Merged
merged 1 commit into from
Jul 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/dbus/client/thread_api_dbus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,11 @@ ClientError ThreadApiDBus::GetActiveDatasetTlvs(std::vector<uint8_t> &aDataset)
return GetProperty(OTBR_DBUS_PROPERTY_ACTIVE_DATASET_TLVS, aDataset);
}

ClientError ThreadApiDBus::GetPendingDatasetTlvs(std::vector<uint8_t> &aDataset)
{
return GetProperty(OTBR_DBUS_PROPERTY_PENDING_DATASET_TLVS, aDataset);
}

ClientError ThreadApiDBus::GetFeatureFlagListData(std::vector<uint8_t> &aFeatureFlagListData)
{
return GetProperty(OTBR_DBUS_PROPERTY_FEATURE_FLAG_LIST_DATA, aFeatureFlagListData);
Expand Down
12 changes: 12 additions & 0 deletions src/dbus/client/thread_api_dbus.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -720,6 +720,18 @@ class ThreadApiDBus
*/
ClientError GetActiveDatasetTlvs(std::vector<uint8_t> &aDataset);

/**
* This method gets the pending operational dataset
*
* @param[out] aDataset The pending operational dataset
*
* @retval ERROR_NONE Successfully performed the dbus function call
* @retval ERROR_DBUS dbus encode/decode error
* @retval ... OpenThread defined error value otherwise
*
*/
ClientError GetPendingDatasetTlvs(std::vector<uint8_t> &aDataset);

/**
* This method gets the feature flag list proto serialized byte data.
*
Expand Down
1 change: 1 addition & 0 deletions src/dbus/common/constants.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
#define OTBR_DBUS_PROPERTY_EXTERNAL_ROUTES "ExternalRoutes"
#define OTBR_DBUS_PROPERTY_ON_MESH_PREFIXES "OnMeshPrefixes"
#define OTBR_DBUS_PROPERTY_ACTIVE_DATASET_TLVS "ActiveDatasetTlvs"
#define OTBR_DBUS_PROPERTY_PENDING_DATASET_TLVS "PendingDatasetTlvs"
#define OTBR_DBUS_PROPERTY_FEATURE_FLAG_LIST_DATA "FeatureFlagListData"
#define OTBR_DBUS_PROPERTY_RADIO_REGION "RadioRegion"
#define OTBR_DBUS_PROPERTY_SRP_SERVER_INFO "SrpServerInfo"
Expand Down
18 changes: 18 additions & 0 deletions src/dbus/server/dbus_thread_object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,8 @@ otbrError DBusThreadObject::Init(void)
std::bind(&DBusThreadObject::GetOnMeshPrefixesHandler, this, _1));
RegisterGetPropertyHandler(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_ACTIVE_DATASET_TLVS,
std::bind(&DBusThreadObject::GetActiveDatasetTlvsHandler, this, _1));
RegisterGetPropertyHandler(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_PENDING_DATASET_TLVS,
std::bind(&DBusThreadObject::GetPendingDatasetTlvsHandler, this, _1));
RegisterGetPropertyHandler(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_FEATURE_FLAG_LIST_DATA,
std::bind(&DBusThreadObject::GetFeatureFlagListDataHandler, this, _1));
RegisterGetPropertyHandler(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_RADIO_REGION,
Expand Down Expand Up @@ -1237,6 +1239,22 @@ otError DBusThreadObject::GetActiveDatasetTlvsHandler(DBusMessageIter &aIter)
return error;
}

otError DBusThreadObject::GetPendingDatasetTlvsHandler(DBusMessageIter &aIter)
{
auto threadHelper = mNcp->GetThreadHelper();
otError error = OT_ERROR_NONE;
std::vector<uint8_t> data;
otOperationalDatasetTlvs datasetTlvs;

SuccessOrExit(error = otDatasetGetPendingTlvs(threadHelper->GetInstance(), &datasetTlvs));
data = std::vector<uint8_t>{std::begin(datasetTlvs.mTlvs), std::begin(datasetTlvs.mTlvs) + datasetTlvs.mLength};

VerifyOrExit(DBusMessageEncodeToVariant(&aIter, data) == OTBR_ERROR_NONE, error = OT_ERROR_INVALID_ARGS);

exit:
return error;
}

otError DBusThreadObject::SetFeatureFlagListDataHandler(DBusMessageIter &aIter)
{
#if OTBR_ENABLE_FEATURE_FLAGS
Expand Down
1 change: 1 addition & 0 deletions src/dbus/server/dbus_thread_object.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ class DBusThreadObject : public DBusObject
otError GetExternalRoutesHandler(DBusMessageIter &aIter);
otError GetOnMeshPrefixesHandler(DBusMessageIter &aIter);
otError GetActiveDatasetTlvsHandler(DBusMessageIter &aIter);
otError GetPendingDatasetTlvsHandler(DBusMessageIter &aIter);
otError GetFeatureFlagListDataHandler(DBusMessageIter &aIter);
otError GetRadioRegionHandler(DBusMessageIter &aIter);
otError GetSrpServerInfoHandler(DBusMessageIter &aIter);
Expand Down
5 changes: 5 additions & 0 deletions src/dbus/server/introspect.xml
Original file line number Diff line number Diff line change
Expand Up @@ -536,6 +536,11 @@
<annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
</property>

<!-- PendingDatasetTlvs: The Thread pending dataset tlv in binary form. -->
<property name="PendingDatasetTlvs" type="ay" access="read">
<annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
</property>

<!-- FeatureFlagListData: The Thread feature flags (defined as proto/feature_flag.proto)
in binary form. -->
<property name="FeatureFlagListData" type="ay" access="readwrite">
Expand Down