From 2545b6562da4b19642b5bc15f2577ebcf4e0f308 Mon Sep 17 00:00:00 2001
From: Paul Zander <69502639+pjzander-signify@users.noreply.github.com>
Date: Wed, 27 Oct 2021 20:36:48 +0200
Subject: [PATCH] Add Bridged Actions cluster (#10694) (#10989)
* Add Bridged Actions Cluster
* Replace OCTET_STRING with now supported CHAR_STRING
* Remove the Bridged Actions cluster commands from the all-clusters-app
* Make some Bridge Actions cluster attributes external
* Revert setting some Bridge Actions attributes to external
---
.../all-clusters-common/all-clusters-app.zap | 97 ++
.../chip/bridged-actions-cluster.xml | 176 ++++
src/app/zap-templates/zcl/zcl.json | 1 +
src/app/zap_cluster_list.py | 2 +
.../data_model/controller-clusters.zap | 194 ++++
.../java/zap-generated/CHIPClusters-JNI.cpp | 864 ++++++++++++++++++
.../chip/devicecontroller/ChipClusters.java | 200 ++++
.../python/chip/clusters/CHIPClusters.cpp | 267 ++++++
.../python/chip/clusters/CHIPClusters.py | 268 ++++++
.../python/chip/clusters/Objects.py | 377 ++++++++
.../CHIP/zap-generated/CHIPCallbackBridge.mm | 47 +
.../CHIPCallbackBridge_internal.h | 28 +
.../CHIP/zap-generated/CHIPClustersObjc.h | 44 +
.../CHIP/zap-generated/CHIPClustersObjc.mm | 138 +++
.../zap-generated/CHIPClustersObjc_internal.h | 4 +
.../CHIP/zap-generated/CHIPTestClustersObjc.h | 11 +
.../zap-generated/CHIPTestClustersObjc.mm | 27 +
.../Framework/CHIPTests/CHIPClustersTests.m | 74 ++
.../PluginApplicationCallbacks.h | 1 +
.../zap-generated/attribute-size.cpp | 89 ++
.../zap-generated/callback-stub.cpp | 8 +
.../zap-generated/endpoint_config.h | 609 +++++++-----
.../zap-generated/gen_config.h | 6 +
.../app-common/zap-generated/af-structs.h | 20 +
.../app-common/zap-generated/attribute-id.h | 9 +
.../zap-generated/attributes/Accessors.cpp | 29 +
.../zap-generated/attributes/Accessors.h | 11 +
.../app-common/zap-generated/callback.h | 186 ++++
.../zap-generated/callbacks/PluginCallbacks.h | 3 +
.../app-common/zap-generated/cluster-id.h | 3 +
.../zap-generated/cluster-objects.cpp | 591 ++++++++++++
.../zap-generated/cluster-objects.h | 573 ++++++++++++
.../app-common/zap-generated/command-id.h | 14 +
.../app-common/zap-generated/enums.h | 60 ++
.../app-common/zap-generated/ids/Attributes.h | 26 +
.../app-common/zap-generated/ids/Clusters.h | 3 +
.../app-common/zap-generated/ids/Commands.h | 54 ++
.../app-common/zap-generated/print-cluster.h | 7 +
.../zap-generated/cluster/Commands.h | 575 ++++++++++++
.../zap-generated/CHIPClientCallbacks.cpp | 48 +
.../zap-generated/CHIPClientCallbacks.h | 12 +
.../zap-generated/CHIPClusters.cpp | 646 +++++++++++++
.../zap-generated/CHIPClusters.h | 41 +
.../PluginApplicationCallbacks.h | 1 +
.../zap-generated/callback-stub.cpp | 8 +
.../zap-generated/endpoint_config.h | 108 +--
.../zap-generated/gen_config.h | 5 +
.../zap-generated/tests/CHIPClustersTest.cpp | 21 +
.../zap-generated/tests/CHIPClustersTest.h | 12 +
49 files changed, 6310 insertions(+), 288 deletions(-)
create mode 100644 src/app/zap-templates/zcl/data-model/chip/bridged-actions-cluster.xml
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
index ea2e054fda1f06..ab036981a5c064 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
@@ -7957,6 +7957,103 @@
}
]
},
+ {
+ "name": "Bridged Actions",
+ "code": 37,
+ "mfgCode": null,
+ "define": "BRIDGED_ACTIONS_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Bridged Actions",
+ "code": 37,
+ "mfgCode": null,
+ "define": "BRIDGED_ACTIONS_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "action list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "endpoint list",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "setup url",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "www.signify.com",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
{
"name": "Basic",
"code": 40,
diff --git a/src/app/zap-templates/zcl/data-model/chip/bridged-actions-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/bridged-actions-cluster.xml
new file mode 100644
index 00000000000000..e1f13d4bc8a8ad
--- /dev/null
+++ b/src/app/zap-templates/zcl/data-model/chip/bridged-actions-cluster.xml
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ General
+ Bridged Actions
+ 0x0025
+ BRIDGED_ACTIONS_CLUSTER
+ This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information.
+
+ action list
+ endpoint list
+ setup url
+
+
+ This command triggers an action (state change) on the involved endpoints.
+
+
+
+
+
+ This command triggers an action (state change) on the involved endpoints, with a specified time to transition from the current state to the new state.
+
+
+
+
+
+
+ This command triggers the commencement of an action on the involved endpoints.
+
+
+
+
+
+ This command triggers the commencement of an action (with a duration) on the involved endpoints.
+
+
+
+
+
+
+ This command stops the ongoing action on the involved endpoints.
+
+
+
+
+
+ This command pauses an ongoing action.
+
+
+
+
+
+ This command pauses an ongoing action with a duration.
+
+
+
+
+
+
+ This command resumes a previously paused action.
+
+
+
+
+
+ This command enables a certain action or automation.
+
+
+
+
+
+ This command enables a certain action or automation with a duration.
+
+
+
+
+
+
+ This command disables a certain action or automation.
+
+
+
+
+
+ This command disables a certain action or automation with a duration.
+
+
+
+
+
+
+
diff --git a/src/app/zap-templates/zcl/zcl.json b/src/app/zap-templates/zcl/zcl.json
index f6cc69d94c36d1..87da705b0355ed 100644
--- a/src/app/zap-templates/zcl/zcl.json
+++ b/src/app/zap-templates/zcl/zcl.json
@@ -10,6 +10,7 @@
"basic-information-cluster.xml",
"binding-cluster.xml",
"boolean-state-cluster.xml",
+ "bridged-actions-cluster.xml",
"bridged-device-basic.xml",
"chip-devices.xml",
"chip-ota.xml",
diff --git a/src/app/zap_cluster_list.py b/src/app/zap_cluster_list.py
index 1539aeb7a9c6b9..1cd2025379cd1b 100755
--- a/src/app/zap_cluster_list.py
+++ b/src/app/zap_cluster_list.py
@@ -20,6 +20,7 @@
'BINARY_INPUT_BASIC_CLUSTER': [],
'BINDING_CLUSTER': ['bindings'],
'BOOLEAN_STATE_CLUSTER': [],
+ 'BRIDGED_ACTIONS_CLUSTER': [],
'BRIDGED_DEVICE_BASIC_CLUSTER': [],
'COLOR_CONTROL_CLUSTER': ['color-control-server'],
'COMMISSIONING_CLUSTER': [],
@@ -86,6 +87,7 @@
'BINARY_INPUT_BASIC_CLUSTER': [],
'BINDING_CLUSTER': [],
'BOOLEAN_STATE_CLUSTER': [],
+ 'BRIDGED_ACTIONS_CLUSTER': [],
'BRIDGED_DEVICE_BASIC_CLUSTER': [],
'COLOR_CONTROL_CLUSTER': [],
'COMMISSIONING_CLUSTER': [],
diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap
index 16321499cd246f..63dd59d12e6fcf 100644
--- a/src/controller/data_model/controller-clusters.zap
+++ b/src/controller/data_model/controller-clusters.zap
@@ -1343,6 +1343,200 @@
}
]
},
+ {
+ "name": "Bridged Actions",
+ "code": 37,
+ "mfgCode": null,
+ "define": "BRIDGED_ACTIONS_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "InstantAction",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "InstantActionWithTransition",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StartAction",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StartActionWithDuration",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StopAction",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "PauseAction",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "PauseActionWithDuration",
+ "code": 6,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ResumeAction",
+ "code": 7,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "EnableAction",
+ "code": 8,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "EnableActionWithDuration",
+ "code": 9,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "DisableAction",
+ "code": 10,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "DisableActionWithDuration",
+ "code": 11,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Bridged Actions",
+ "code": 37,
+ "mfgCode": null,
+ "define": "BRIDGED_ACTIONS_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "action list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "endpoint list",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "setup url",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "www.signify.com",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
{
"name": "Basic",
"code": 40,
diff --git a/src/controller/java/zap-generated/CHIPClusters-JNI.cpp b/src/controller/java/zap-generated/CHIPClusters-JNI.cpp
index 46ef84430c4d5e..382c99b6d9adf7 100644
--- a/src/controller/java/zap-generated/CHIPClusters-JNI.cpp
+++ b/src/controller/java/zap-generated/CHIPClusters-JNI.cpp
@@ -6343,6 +6343,194 @@ class CHIPAudioOutputAudioOutputListAttributeCallback : public Callback::Callbac
jobject javaCallbackRef;
};
+class CHIPBridgedActionsActionListAttributeCallback : public Callback::Callback
+{
+public:
+ CHIPBridgedActionsActionListAttributeCallback(jobject javaCallback) :
+ Callback::Callback(CallbackFn, this)
+ {
+ JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+ }
+
+ static void CallbackFn(
+ void * context,
+ const chip::app::DataModel::DecodableList & list)
+ {
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context));
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jclass arrayListClass;
+ err = JniReferences::GetInstance().GetClassRef(env, "java/util/ArrayList", arrayListClass);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error using Java ArrayList"));
+ JniClass arrayListJniClass(arrayListClass);
+ jmethodID arrayListCtor = env->GetMethodID(arrayListClass, "", "()V");
+ jmethodID arrayListAddMethod = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z");
+ VerifyOrReturn(arrayListCtor != nullptr && arrayListAddMethod != nullptr,
+ ChipLogError(Zcl, "Error finding Java ArrayList methods"));
+ jobject arrayListObj = env->NewObject(arrayListClass, arrayListCtor);
+ VerifyOrReturn(arrayListObj != nullptr, ChipLogError(Zcl, "Error creating Java ArrayList"));
+
+ jmethodID javaMethod;
+ err = JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jclass attributeClass;
+ err = JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipClusters$BridgedActionsCluster$ActionListAttribute", attributeClass);
+ VerifyOrReturn(
+ err == CHIP_NO_ERROR,
+ ChipLogError(Zcl, "Could not find class chip/devicecontroller/ChipClusters$BridgedActionsCluster$ActionListAttribute"));
+ JniClass attributeJniClass(attributeClass);
+ jmethodID attributeCtor = env->GetMethodID(attributeClass, "", "(ILjava/lang/String;IIII)V");
+ VerifyOrReturn(attributeCtor != nullptr, ChipLogError(Zcl, "Could not find ActionListAttribute constructor"));
+
+ auto iter = list.begin();
+ while (iter.Next())
+ {
+ auto & entry = iter.GetValue();
+ jint actionID = entry.actionID;
+ UtfString nameStr(env, entry.name);
+ jstring name(nameStr.jniValue());
+ jint type = entry.type;
+ jint endpointListID = entry.endpointListID;
+ jint supportedCommands = entry.supportedCommands;
+ jint status = entry.status;
+
+ jobject attributeObj =
+ env->NewObject(attributeClass, attributeCtor, actionID, name, type, endpointListID, supportedCommands, status);
+ VerifyOrReturn(attributeObj != nullptr, ChipLogError(Zcl, "Could not create ActionListAttribute object"));
+
+ env->CallBooleanMethod(arrayListObj, arrayListAddMethod, attributeObj);
+ }
+ VerifyOrReturn(
+ iter.GetStatus() == CHIP_NO_ERROR,
+ ChipLogError(Zcl, "Error decoding ActionListAttribute value: %" CHIP_ERROR_FORMAT, iter.GetStatus().Format()));
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+ }
+
+private:
+ jobject javaCallbackRef;
+};
+
+class CHIPBridgedActionsEndpointListAttributeCallback : public Callback::Callback
+{
+public:
+ CHIPBridgedActionsEndpointListAttributeCallback(jobject javaCallback) :
+ Callback::Callback(CallbackFn, this)
+ {
+ JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+ }
+
+ static void CallbackFn(
+ void * context,
+ const chip::app::DataModel::DecodableList &
+ list)
+ {
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context));
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jclass arrayListClass;
+ err = JniReferences::GetInstance().GetClassRef(env, "java/util/ArrayList", arrayListClass);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error using Java ArrayList"));
+ JniClass arrayListJniClass(arrayListClass);
+ jmethodID arrayListCtor = env->GetMethodID(arrayListClass, "", "()V");
+ jmethodID arrayListAddMethod = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z");
+ VerifyOrReturn(arrayListCtor != nullptr && arrayListAddMethod != nullptr,
+ ChipLogError(Zcl, "Error finding Java ArrayList methods"));
+ jobject arrayListObj = env->NewObject(arrayListClass, arrayListCtor);
+ VerifyOrReturn(arrayListObj != nullptr, ChipLogError(Zcl, "Error creating Java ArrayList"));
+
+ jmethodID javaMethod;
+ err = JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jclass attributeClass;
+ err = JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipClusters$BridgedActionsCluster$EndpointListAttribute", attributeClass);
+ VerifyOrReturn(
+ err == CHIP_NO_ERROR,
+ ChipLogError(Zcl,
+ "Could not find class chip/devicecontroller/ChipClusters$BridgedActionsCluster$EndpointListAttribute"));
+ JniClass attributeJniClass(attributeClass);
+ jmethodID attributeCtor = env->GetMethodID(attributeClass, "", "(ILjava/lang/String;I[B)V");
+ VerifyOrReturn(attributeCtor != nullptr, ChipLogError(Zcl, "Could not find EndpointListAttribute constructor"));
+
+ auto iter = list.begin();
+ while (iter.Next())
+ {
+ auto & entry = iter.GetValue();
+ jint endpointListID = entry.endpointListID;
+ UtfString nameStr(env, entry.name);
+ jstring name(nameStr.jniValue());
+ jint type = entry.type;
+ jbyteArray endpoints = env->NewByteArray(entry.endpoints.size());
+ env->SetByteArrayRegion(endpoints, 0, entry.endpoints.size(), reinterpret_cast(entry.endpoints.data()));
+
+ jobject attributeObj = env->NewObject(attributeClass, attributeCtor, endpointListID, name, type, endpoints);
+ VerifyOrReturn(attributeObj != nullptr, ChipLogError(Zcl, "Could not create EndpointListAttribute object"));
+
+ env->CallBooleanMethod(arrayListObj, arrayListAddMethod, attributeObj);
+ }
+ VerifyOrReturn(
+ iter.GetStatus() == CHIP_NO_ERROR,
+ ChipLogError(Zcl, "Error decoding EndpointListAttribute value: %" CHIP_ERROR_FORMAT, iter.GetStatus().Format()));
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+ }
+
+private:
+ jobject javaCallbackRef;
+};
+
class CHIPContentLauncherAcceptsHeaderListAttributeCallback
: public Callback::Callback
{
@@ -10793,6 +10981,682 @@ JNI_METHOD(void, BooleanStateCluster, readClusterRevisionAttribute)(JNIEnv * env
onSuccess.release();
onFailure.release();
}
+JNI_METHOD(jlong, BridgedActionsCluster, initWithDevice)(JNIEnv * env, jobject self, jlong devicePtr, jint endpointId)
+{
+ chip::DeviceLayer::StackLock lock;
+ BridgedActionsCluster * cppCluster = new BridgedActionsCluster();
+
+ cppCluster->Associate(reinterpret_cast(devicePtr), endpointId);
+ return reinterpret_cast(cppCluster);
+}
+
+JNI_METHOD(void, BridgedActionsCluster, disableAction)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->DisableAction(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, disableActionWithDuration)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID, jlong duration)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->DisableActionWithDuration(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID, duration);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, enableAction)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->EnableAction(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, enableActionWithDuration)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID, jlong duration)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->EnableActionWithDuration(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID, duration);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, instantAction)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->InstantAction(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, instantActionWithTransition)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID, jint transitionTime)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->InstantActionWithTransition(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID, transitionTime);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, pauseAction)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->PauseAction(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, pauseActionWithDuration)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID, jlong duration)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->PauseActionWithDuration(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID, duration);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, resumeAction)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->ResumeAction(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, startAction)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->StartAction(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, startActionWithDuration)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID, jlong duration)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->StartActionWithDuration(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID, duration);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+JNI_METHOD(void, BridgedActionsCluster, stopAction)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jint actionID, jlong invokeID)
+{
+ chip::DeviceLayer::StackLock lock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster;
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrExit(onSuccess.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrExit(onFailure.get() != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrExit(cppCluster != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+
+ err = cppCluster->StopAction(onSuccess->Cancel(), onFailure->Cancel(), actionID, invokeID);
+ SuccessOrExit(err);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ jthrowable exception;
+ jmethodID method;
+
+ err = JniReferences::GetInstance().FindMethod(env, callback, "onError", "(Ljava/lang/Exception;)V", &method);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+
+ err = CreateIllegalStateException(env, "Error invoking cluster", err, exception);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Error throwing IllegalStateException %" CHIP_ERROR_FORMAT, err.Format());
+ return;
+ }
+ env->CallVoidMethod(callback, method, exception);
+ }
+ else
+ {
+ onSuccess.release();
+ onFailure.release();
+ }
+}
+
+JNI_METHOD(void, BridgedActionsCluster, readActionListAttribute)(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback)
+{
+ chip::DeviceLayer::StackLock lock;
+ std::unique_ptr
+ onSuccess(Platform::New(callback),
+ Platform::Delete);
+ VerifyOrReturn(onSuccess.get() != nullptr,
+ ReturnIllegalStateException(env, callback, "Error creating native success callback", CHIP_ERROR_NO_MEMORY));
+
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrReturn(onFailure.get() != nullptr,
+ ReturnIllegalStateException(env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrReturn(cppCluster != nullptr,
+ ReturnIllegalStateException(env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
+
+ err = cppCluster->ReadAttributeActionList(onSuccess->Cancel(), onFailure->Cancel());
+ VerifyOrReturn(err == CHIP_NO_ERROR, ReturnIllegalStateException(env, callback, "Error reading attribute", err));
+
+ onSuccess.release();
+ onFailure.release();
+}
+
+JNI_METHOD(void, BridgedActionsCluster, readEndpointListAttribute)(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback)
+{
+ chip::DeviceLayer::StackLock lock;
+ std::unique_ptr
+ onSuccess(Platform::New(callback),
+ Platform::Delete);
+ VerifyOrReturn(onSuccess.get() != nullptr,
+ ReturnIllegalStateException(env, callback, "Error creating native success callback", CHIP_ERROR_NO_MEMORY));
+
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrReturn(onFailure.get() != nullptr,
+ ReturnIllegalStateException(env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrReturn(cppCluster != nullptr,
+ ReturnIllegalStateException(env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
+
+ err = cppCluster->ReadAttributeEndpointList(onSuccess->Cancel(), onFailure->Cancel());
+ VerifyOrReturn(err == CHIP_NO_ERROR, ReturnIllegalStateException(env, callback, "Error reading attribute", err));
+
+ onSuccess.release();
+ onFailure.release();
+}
+
+JNI_METHOD(void, BridgedActionsCluster, readSetupUrlAttribute)(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback)
+{
+ chip::DeviceLayer::StackLock lock;
+ std::unique_ptr onSuccess(
+ Platform::New(callback, false), Platform::Delete);
+ VerifyOrReturn(onSuccess.get() != nullptr,
+ ReturnIllegalStateException(env, callback, "Error creating native success callback", CHIP_ERROR_NO_MEMORY));
+
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrReturn(onFailure.get() != nullptr,
+ ReturnIllegalStateException(env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrReturn(cppCluster != nullptr,
+ ReturnIllegalStateException(env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
+
+ err = cppCluster->ReadAttributeSetupUrl(onSuccess->Cancel(), onFailure->Cancel());
+ VerifyOrReturn(err == CHIP_NO_ERROR, ReturnIllegalStateException(env, callback, "Error reading attribute", err));
+
+ onSuccess.release();
+ onFailure.release();
+}
+
+JNI_METHOD(void, BridgedActionsCluster, readClusterRevisionAttribute)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback)
+{
+ chip::DeviceLayer::StackLock lock;
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrReturn(onSuccess.get() != nullptr,
+ ReturnIllegalStateException(env, callback, "Error creating native success callback", CHIP_ERROR_NO_MEMORY));
+
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrReturn(onFailure.get() != nullptr,
+ ReturnIllegalStateException(env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ BridgedActionsCluster * cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrReturn(cppCluster != nullptr,
+ ReturnIllegalStateException(env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
+
+ err = cppCluster->ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ VerifyOrReturn(err == CHIP_NO_ERROR, ReturnIllegalStateException(env, callback, "Error reading attribute", err));
+
+ onSuccess.release();
+ onFailure.release();
+}
JNI_METHOD(jlong, BridgedDeviceBasicCluster, initWithDevice)(JNIEnv * env, jobject self, jlong devicePtr, jint endpointId)
{
chip::DeviceLayer::StackLock lock;
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
index effa0be5c0a9af..1929e58ca6ff59 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
@@ -808,6 +808,206 @@ private native void readClusterRevisionAttribute(
long chipClusterPtr, IntegerAttributeCallback callback);
}
+ public static class BridgedActionsCluster extends BaseChipCluster {
+ public BridgedActionsCluster(long devicePtr, int endpointId) {
+ super(devicePtr, endpointId);
+ }
+
+ public static long clusterId() {
+ return Long.parseUnsignedLong("37");
+ }
+
+ @Override
+ public native long initWithDevice(long devicePtr, int endpointId);
+
+ public void disableAction(DefaultClusterCallback callback, int actionID, long invokeID) {
+ disableAction(chipClusterPtr, callback, actionID, invokeID);
+ }
+
+ public void disableActionWithDuration(
+ DefaultClusterCallback callback, int actionID, long invokeID, long duration) {
+ disableActionWithDuration(chipClusterPtr, callback, actionID, invokeID, duration);
+ }
+
+ public void enableAction(DefaultClusterCallback callback, int actionID, long invokeID) {
+ enableAction(chipClusterPtr, callback, actionID, invokeID);
+ }
+
+ public void enableActionWithDuration(
+ DefaultClusterCallback callback, int actionID, long invokeID, long duration) {
+ enableActionWithDuration(chipClusterPtr, callback, actionID, invokeID, duration);
+ }
+
+ public void instantAction(DefaultClusterCallback callback, int actionID, long invokeID) {
+ instantAction(chipClusterPtr, callback, actionID, invokeID);
+ }
+
+ public void instantActionWithTransition(
+ DefaultClusterCallback callback, int actionID, long invokeID, int transitionTime) {
+ instantActionWithTransition(chipClusterPtr, callback, actionID, invokeID, transitionTime);
+ }
+
+ public void pauseAction(DefaultClusterCallback callback, int actionID, long invokeID) {
+ pauseAction(chipClusterPtr, callback, actionID, invokeID);
+ }
+
+ public void pauseActionWithDuration(
+ DefaultClusterCallback callback, int actionID, long invokeID, long duration) {
+ pauseActionWithDuration(chipClusterPtr, callback, actionID, invokeID, duration);
+ }
+
+ public void resumeAction(DefaultClusterCallback callback, int actionID, long invokeID) {
+ resumeAction(chipClusterPtr, callback, actionID, invokeID);
+ }
+
+ public void startAction(DefaultClusterCallback callback, int actionID, long invokeID) {
+ startAction(chipClusterPtr, callback, actionID, invokeID);
+ }
+
+ public void startActionWithDuration(
+ DefaultClusterCallback callback, int actionID, long invokeID, long duration) {
+ startActionWithDuration(chipClusterPtr, callback, actionID, invokeID, duration);
+ }
+
+ public void stopAction(DefaultClusterCallback callback, int actionID, long invokeID) {
+ stopAction(chipClusterPtr, callback, actionID, invokeID);
+ }
+
+ private native void disableAction(
+ long chipClusterPtr, DefaultClusterCallback callback, int actionID, long invokeID);
+
+ private native void disableActionWithDuration(
+ long chipClusterPtr,
+ DefaultClusterCallback callback,
+ int actionID,
+ long invokeID,
+ long duration);
+
+ private native void enableAction(
+ long chipClusterPtr, DefaultClusterCallback callback, int actionID, long invokeID);
+
+ private native void enableActionWithDuration(
+ long chipClusterPtr,
+ DefaultClusterCallback callback,
+ int actionID,
+ long invokeID,
+ long duration);
+
+ private native void instantAction(
+ long chipClusterPtr, DefaultClusterCallback callback, int actionID, long invokeID);
+
+ private native void instantActionWithTransition(
+ long chipClusterPtr,
+ DefaultClusterCallback callback,
+ int actionID,
+ long invokeID,
+ int transitionTime);
+
+ private native void pauseAction(
+ long chipClusterPtr, DefaultClusterCallback callback, int actionID, long invokeID);
+
+ private native void pauseActionWithDuration(
+ long chipClusterPtr,
+ DefaultClusterCallback callback,
+ int actionID,
+ long invokeID,
+ long duration);
+
+ private native void resumeAction(
+ long chipClusterPtr, DefaultClusterCallback callback, int actionID, long invokeID);
+
+ private native void startAction(
+ long chipClusterPtr, DefaultClusterCallback callback, int actionID, long invokeID);
+
+ private native void startActionWithDuration(
+ long chipClusterPtr,
+ DefaultClusterCallback callback,
+ int actionID,
+ long invokeID,
+ long duration);
+
+ private native void stopAction(
+ long chipClusterPtr, DefaultClusterCallback callback, int actionID, long invokeID);
+
+ public static class ActionListAttribute {
+ public int actionID;
+ public String name;
+ public int type;
+ public int endpointListID;
+ public int supportedCommands;
+ public int status;
+
+ public ActionListAttribute(
+ int actionID,
+ String name,
+ int type,
+ int endpointListID,
+ int supportedCommands,
+ int status) {
+ this.actionID = actionID;
+ this.name = name;
+ this.type = type;
+ this.endpointListID = endpointListID;
+ this.supportedCommands = supportedCommands;
+ this.status = status;
+ }
+ }
+
+ public interface ActionListAttributeCallback {
+ void onSuccess(List valueList);
+
+ void onError(Exception ex);
+ }
+
+ public static class EndpointListAttribute {
+ public int endpointListID;
+ public String name;
+ public int type;
+ public byte[] endpoints;
+
+ public EndpointListAttribute(int endpointListID, String name, int type, byte[] endpoints) {
+ this.endpointListID = endpointListID;
+ this.name = name;
+ this.type = type;
+ this.endpoints = endpoints;
+ }
+ }
+
+ public interface EndpointListAttributeCallback {
+ void onSuccess(List valueList);
+
+ void onError(Exception ex);
+ }
+
+ public void readActionListAttribute(ActionListAttributeCallback callback) {
+ readActionListAttribute(chipClusterPtr, callback);
+ }
+
+ public void readEndpointListAttribute(EndpointListAttributeCallback callback) {
+ readEndpointListAttribute(chipClusterPtr, callback);
+ }
+
+ public void readSetupUrlAttribute(CharStringAttributeCallback callback) {
+ readSetupUrlAttribute(chipClusterPtr, callback);
+ }
+
+ public void readClusterRevisionAttribute(IntegerAttributeCallback callback) {
+ readClusterRevisionAttribute(chipClusterPtr, callback);
+ }
+
+ private native void readActionListAttribute(
+ long chipClusterPtr, ActionListAttributeCallback callback);
+
+ private native void readEndpointListAttribute(
+ long chipClusterPtr, EndpointListAttributeCallback callback);
+
+ private native void readSetupUrlAttribute(
+ long chipClusterPtr, CharStringAttributeCallback callback);
+
+ private native void readClusterRevisionAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+ }
+
public static class BridgedDeviceBasicCluster extends BaseChipCluster {
public BridgedDeviceBasicCluster(long devicePtr, int endpointId) {
super(devicePtr, endpointId);
diff --git a/src/controller/python/chip/clusters/CHIPClusters.cpp b/src/controller/python/chip/clusters/CHIPClusters.cpp
index 6b2a7d0a3048cb..a906e651dae61e 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.cpp
+++ b/src/controller/python/chip/clusters/CHIPClusters.cpp
@@ -198,6 +198,111 @@ static void OnAudioOutputAudioOutputListListAttributeResponse(
chip::Callback::Callback gAudioOutputAudioOutputListListAttributeCallback{
OnAudioOutputAudioOutputListListAttributeResponse, nullptr
};
+static void OnBridgedActionsActionListListAttributeResponse(
+ void * context,
+ const chip::app::DataModel::DecodableList & list)
+{
+ size_t count = 0;
+ CHIP_ERROR err = list.ComputeSize(&count);
+ if (err != CHIP_NO_ERROR)
+ {
+ if (gFailureResponseDelegate != nullptr)
+ {
+ gFailureResponseDelegate(EMBER_ZCL_STATUS_INVALID_VALUE);
+ }
+ return;
+ }
+
+ ChipLogProgress(Zcl, " attributeValue:%s", count > 0 ? "" : " []");
+
+ if (count > 0)
+ ChipLogProgress(Zcl, " [");
+
+ auto iter = list.begin();
+ while (iter.Next())
+ {
+#if CHIP_PROGRESS_LOGGING
+ auto & entry = iter.GetValue();
+#endif // CHIP_PROGRESS_LOGGING
+ ChipLogProgress(Zcl, " {");
+ ChipLogProgress(Zcl, " ActionID: %" PRIu16 ",", entry.actionID);
+ ChipLogProgress(Zcl, " Name: %.*s,", static_cast(entry.name.size()), entry.name.data());
+ ChipLogProgress(Zcl, " Type: %" PRIu8 ",", entry.type);
+ ChipLogProgress(Zcl, " EndpointListID: %" PRIu16 ",", entry.endpointListID);
+ ChipLogProgress(Zcl, " SupportedCommands: %" PRIu16 ",", entry.supportedCommands);
+ ChipLogProgress(Zcl, " Status: %" PRIu8 ",", entry.status);
+ ChipLogProgress(Zcl, " },");
+ }
+ if (iter.GetStatus() != CHIP_NO_ERROR)
+ {
+ if (gFailureResponseDelegate != nullptr)
+ {
+ gFailureResponseDelegate(EMBER_ZCL_STATUS_INVALID_VALUE);
+ }
+ return;
+ }
+
+ if (count > 0)
+ ChipLogProgress(Zcl, " ]");
+
+ if (gSuccessResponseDelegate != nullptr)
+ gSuccessResponseDelegate();
+}
+chip::Callback::Callback gBridgedActionsActionListListAttributeCallback{
+ OnBridgedActionsActionListListAttributeResponse, nullptr
+};
+static void OnBridgedActionsEndpointListListAttributeResponse(
+ void * context,
+ const chip::app::DataModel::DecodableList &
+ list)
+{
+ size_t count = 0;
+ CHIP_ERROR err = list.ComputeSize(&count);
+ if (err != CHIP_NO_ERROR)
+ {
+ if (gFailureResponseDelegate != nullptr)
+ {
+ gFailureResponseDelegate(EMBER_ZCL_STATUS_INVALID_VALUE);
+ }
+ return;
+ }
+
+ ChipLogProgress(Zcl, " attributeValue:%s", count > 0 ? "" : " []");
+
+ if (count > 0)
+ ChipLogProgress(Zcl, " [");
+
+ auto iter = list.begin();
+ while (iter.Next())
+ {
+#if CHIP_PROGRESS_LOGGING
+ auto & entry = iter.GetValue();
+#endif // CHIP_PROGRESS_LOGGING
+ ChipLogProgress(Zcl, " {");
+ ChipLogProgress(Zcl, " EndpointListID: %" PRIu16 ",", entry.endpointListID);
+ ChipLogProgress(Zcl, " Name: %.*s,", static_cast(entry.name.size()), entry.name.data());
+ ChipLogProgress(Zcl, " Type: %" PRIu8 ",", entry.type);
+ ChipLogProgress(Zcl, " Endpoints: %s,", ByteSpanToString(entry.endpoints).c_str());
+ ChipLogProgress(Zcl, " },");
+ }
+ if (iter.GetStatus() != CHIP_NO_ERROR)
+ {
+ if (gFailureResponseDelegate != nullptr)
+ {
+ gFailureResponseDelegate(EMBER_ZCL_STATUS_INVALID_VALUE);
+ }
+ return;
+ }
+
+ if (count > 0)
+ ChipLogProgress(Zcl, " ]");
+
+ if (gSuccessResponseDelegate != nullptr)
+ gSuccessResponseDelegate();
+}
+chip::Callback::Callback gBridgedActionsEndpointListListAttributeCallback{
+ OnBridgedActionsEndpointListListAttributeResponse, nullptr
+};
static void
OnContentLauncherAcceptsHeaderListListAttributeResponse(void * context,
const chip::app::DataModel::DecodableList & list)
@@ -2224,6 +2329,168 @@ chip::ChipError::StorageType chip_ime_ReadAttribute_BooleanState_ClusterRevision
}
// End of Cluster BooleanState
+// Cluster BridgedActions
+
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_DisableAction(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId, chip::GroupId,
+ uint16_t actionID, uint32_t invokeID)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.DisableAction(nullptr, nullptr, actionID, invokeID).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_DisableActionWithDuration(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId,
+ chip::GroupId, uint16_t actionID,
+ uint32_t invokeID, uint32_t duration)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.DisableActionWithDuration(nullptr, nullptr, actionID, invokeID, duration).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_EnableAction(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId, chip::GroupId,
+ uint16_t actionID, uint32_t invokeID)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.EnableAction(nullptr, nullptr, actionID, invokeID).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_EnableActionWithDuration(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId,
+ chip::GroupId, uint16_t actionID,
+ uint32_t invokeID, uint32_t duration)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.EnableActionWithDuration(nullptr, nullptr, actionID, invokeID, duration).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_InstantAction(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId, chip::GroupId,
+ uint16_t actionID, uint32_t invokeID)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.InstantAction(nullptr, nullptr, actionID, invokeID).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_InstantActionWithTransition(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId,
+ chip::GroupId, uint16_t actionID,
+ uint32_t invokeID,
+ uint16_t transitionTime)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.InstantActionWithTransition(nullptr, nullptr, actionID, invokeID, transitionTime).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_PauseAction(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId, chip::GroupId,
+ uint16_t actionID, uint32_t invokeID)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.PauseAction(nullptr, nullptr, actionID, invokeID).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_PauseActionWithDuration(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId,
+ chip::GroupId, uint16_t actionID,
+ uint32_t invokeID, uint32_t duration)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.PauseActionWithDuration(nullptr, nullptr, actionID, invokeID, duration).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_ResumeAction(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId, chip::GroupId,
+ uint16_t actionID, uint32_t invokeID)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.ResumeAction(nullptr, nullptr, actionID, invokeID).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_StartAction(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId, chip::GroupId,
+ uint16_t actionID, uint32_t invokeID)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.StartAction(nullptr, nullptr, actionID, invokeID).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_StartActionWithDuration(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId,
+ chip::GroupId, uint16_t actionID,
+ uint32_t invokeID, uint32_t duration)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.StartActionWithDuration(nullptr, nullptr, actionID, invokeID, duration).AsInteger();
+}
+chip::ChipError::StorageType chip_ime_AppendCommand_BridgedActions_StopAction(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId, chip::GroupId,
+ uint16_t actionID, uint32_t invokeID)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.StopAction(nullptr, nullptr, actionID, invokeID).AsInteger();
+}
+
+chip::ChipError::StorageType chip_ime_ReadAttribute_BridgedActions_ActionList(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId,
+ chip::GroupId /* ZCLgroupId */)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster
+ .ReadAttributeActionList(gBridgedActionsActionListListAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel())
+ .AsInteger();
+}
+
+chip::ChipError::StorageType chip_ime_ReadAttribute_BridgedActions_EndpointList(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId,
+ chip::GroupId /* ZCLgroupId */)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster
+ .ReadAttributeEndpointList(gBridgedActionsEndpointListListAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel())
+ .AsInteger();
+}
+
+chip::ChipError::StorageType chip_ime_ReadAttribute_BridgedActions_SetupUrl(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId,
+ chip::GroupId /* ZCLgroupId */)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.ReadAttributeSetupUrl(gCharStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()).AsInteger();
+}
+
+chip::ChipError::StorageType chip_ime_ReadAttribute_BridgedActions_ClusterRevision(chip::Controller::Device * device,
+ chip::EndpointId ZCLendpointId,
+ chip::GroupId /* ZCLgroupId */)
+{
+ VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT.AsInteger());
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, ZCLendpointId);
+ return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()).AsInteger();
+}
+
+// End of Cluster BridgedActions
// Cluster BridgedDeviceBasic
chip::ChipError::StorageType chip_ime_ReadAttribute_BridgedDeviceBasic_VendorName(chip::Controller::Device * device,
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index 358dd4a832f2e4..09f91aac62a39d 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -468,6 +468,135 @@ class ChipClusters:
},
},
}
+ _BRIDGED_ACTIONS_CLUSTER_INFO = {
+ "clusterName": "BridgedActions",
+ "clusterId": 0x00000025,
+ "commands": {
+ 0x0000000A: {
+ "commandId": 0x0000000A,
+ "commandName": "DisableAction",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ },
+ },
+ 0x0000000B: {
+ "commandId": 0x0000000B,
+ "commandName": "DisableActionWithDuration",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ "duration": "int",
+ },
+ },
+ 0x00000008: {
+ "commandId": 0x00000008,
+ "commandName": "EnableAction",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ },
+ },
+ 0x00000009: {
+ "commandId": 0x00000009,
+ "commandName": "EnableActionWithDuration",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ "duration": "int",
+ },
+ },
+ 0x00000000: {
+ "commandId": 0x00000000,
+ "commandName": "InstantAction",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ },
+ },
+ 0x00000001: {
+ "commandId": 0x00000001,
+ "commandName": "InstantActionWithTransition",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ "transitionTime": "int",
+ },
+ },
+ 0x00000005: {
+ "commandId": 0x00000005,
+ "commandName": "PauseAction",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ },
+ },
+ 0x00000006: {
+ "commandId": 0x00000006,
+ "commandName": "PauseActionWithDuration",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ "duration": "int",
+ },
+ },
+ 0x00000007: {
+ "commandId": 0x00000007,
+ "commandName": "ResumeAction",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ },
+ },
+ 0x00000002: {
+ "commandId": 0x00000002,
+ "commandName": "StartAction",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ },
+ },
+ 0x00000003: {
+ "commandId": 0x00000003,
+ "commandName": "StartActionWithDuration",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ "duration": "int",
+ },
+ },
+ 0x00000004: {
+ "commandId": 0x00000004,
+ "commandName": "StopAction",
+ "args": {
+ "actionID": "int",
+ "invokeID": "int",
+ },
+ },
+ },
+ "attributes": {
+ 0x00000000: {
+ "attributeName": "ActionList",
+ "attributeId": 0x00000000,
+ "type": "",
+ },
+ 0x00000001: {
+ "attributeName": "EndpointList",
+ "attributeId": 0x00000001,
+ "type": "",
+ },
+ 0x00000002: {
+ "attributeName": "SetupUrl",
+ "attributeId": 0x00000002,
+ "type": "str",
+ },
+ 0x0000FFFD: {
+ "attributeName": "ClusterRevision",
+ "attributeId": 0x0000FFFD,
+ "type": "int",
+ },
+ },
+ }
_BRIDGED_DEVICE_BASIC_CLUSTER_INFO = {
"clusterName": "BridgedDeviceBasic",
"clusterId": 0x00000039,
@@ -4150,6 +4279,7 @@ class ChipClusters:
0x0000000F: _BINARY_INPUT_BASIC_CLUSTER_INFO,
0x0000F000: _BINDING_CLUSTER_INFO,
0x00000045: _BOOLEAN_STATE_CLUSTER_INFO,
+ 0x00000025: _BRIDGED_ACTIONS_CLUSTER_INFO,
0x00000039: _BRIDGED_DEVICE_BASIC_CLUSTER_INFO,
0x00000300: _COLOR_CONTROL_CLUSTER_INFO,
0x0000050A: _CONTENT_LAUNCHER_CLUSTER_INFO,
@@ -4208,6 +4338,7 @@ class ChipClusters:
"BinaryInputBasic": _BINARY_INPUT_BASIC_CLUSTER_INFO,
"Binding": _BINDING_CLUSTER_INFO,
"BooleanState": _BOOLEAN_STATE_CLUSTER_INFO,
+ "BridgedActions": _BRIDGED_ACTIONS_CLUSTER_INFO,
"BridgedDeviceBasic": _BRIDGED_DEVICE_BASIC_CLUSTER_INFO,
"ColorControl": _COLOR_CONTROL_CLUSTER_INFO,
"ContentLauncher": _CONTENT_LAUNCHER_CLUSTER_INFO,
@@ -4397,6 +4528,66 @@ def ClusterBinding_CommandUnbind(self, device: ctypes.c_void_p, ZCLendpoint: int
device, ZCLendpoint, ZCLgroupid, nodeId, groupId, endpointId, clusterId
)
+ def ClusterBridgedActions_CommandDisableAction(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_DisableAction(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID
+ )
+
+ def ClusterBridgedActions_CommandDisableActionWithDuration(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int, duration: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_DisableActionWithDuration(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID, duration
+ )
+
+ def ClusterBridgedActions_CommandEnableAction(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_EnableAction(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID
+ )
+
+ def ClusterBridgedActions_CommandEnableActionWithDuration(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int, duration: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_EnableActionWithDuration(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID, duration
+ )
+
+ def ClusterBridgedActions_CommandInstantAction(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_InstantAction(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID
+ )
+
+ def ClusterBridgedActions_CommandInstantActionWithTransition(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int, transitionTime: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_InstantActionWithTransition(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID, transitionTime
+ )
+
+ def ClusterBridgedActions_CommandPauseAction(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_PauseAction(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID
+ )
+
+ def ClusterBridgedActions_CommandPauseActionWithDuration(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int, duration: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_PauseActionWithDuration(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID, duration
+ )
+
+ def ClusterBridgedActions_CommandResumeAction(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_ResumeAction(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID
+ )
+
+ def ClusterBridgedActions_CommandStartAction(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_StartAction(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID
+ )
+
+ def ClusterBridgedActions_CommandStartActionWithDuration(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int, duration: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_StartActionWithDuration(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID, duration
+ )
+
+ def ClusterBridgedActions_CommandStopAction(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, actionID: int, invokeID: int):
+ return self._chipLib.chip_ime_AppendCommand_BridgedActions_StopAction(
+ device, ZCLendpoint, ZCLgroupid, actionID, invokeID
+ )
+
def ClusterColorControl_CommandColorLoopSet(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, updateFlags: int, action: int, direction: int, time: int, startHue: int, optionsMask: int, optionsOverride: int):
return self._chipLib.chip_ime_AppendCommand_ColorControl_ColorLoopSet(
device, ZCLendpoint, ZCLgroupid, updateFlags, action, direction, time, startHue, optionsMask, optionsOverride
@@ -5346,6 +5537,18 @@ def ClusterBooleanState_SubscribeAttributeStateValue(self, device: ctypes.c_void
def ClusterBooleanState_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int):
return self._chipLib.chip_ime_ReadAttribute_BooleanState_ClusterRevision(device, ZCLendpoint, ZCLgroupid)
+ def ClusterBridgedActions_ReadAttributeActionList(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int):
+ return self._chipLib.chip_ime_ReadAttribute_BridgedActions_ActionList(device, ZCLendpoint, ZCLgroupid)
+
+ def ClusterBridgedActions_ReadAttributeEndpointList(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int):
+ return self._chipLib.chip_ime_ReadAttribute_BridgedActions_EndpointList(device, ZCLendpoint, ZCLgroupid)
+
+ def ClusterBridgedActions_ReadAttributeSetupUrl(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int):
+ return self._chipLib.chip_ime_ReadAttribute_BridgedActions_SetupUrl(device, ZCLendpoint, ZCLgroupid)
+
+ def ClusterBridgedActions_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int):
+ return self._chipLib.chip_ime_ReadAttribute_BridgedActions_ClusterRevision(device, ZCLendpoint, ZCLgroupid)
+
def ClusterBridgedDeviceBasic_ReadAttributeVendorName(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int):
return self._chipLib.chip_ime_ReadAttribute_BridgedDeviceBasic_VendorName(device, ZCLendpoint, ZCLgroupid)
@@ -7141,6 +7344,71 @@ def InitLib(self, chipLib):
self._chipLib.chip_ime_ReadAttribute_BooleanState_ClusterRevision.argtypes = [
ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16]
self._chipLib.chip_ime_ReadAttribute_BooleanState_ClusterRevision.restype = ctypes.c_uint32
+ # Cluster BridgedActions
+ # Cluster BridgedActions Command DisableAction
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_DisableAction.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_DisableAction.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command DisableActionWithDuration
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_DisableActionWithDuration.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_DisableActionWithDuration.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command EnableAction
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_EnableAction.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_EnableAction.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command EnableActionWithDuration
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_EnableActionWithDuration.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_EnableActionWithDuration.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command InstantAction
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_InstantAction.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_InstantAction.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command InstantActionWithTransition
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_InstantActionWithTransition.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32, ctypes.c_uint16]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_InstantActionWithTransition.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command PauseAction
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_PauseAction.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_PauseAction.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command PauseActionWithDuration
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_PauseActionWithDuration.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_PauseActionWithDuration.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command ResumeAction
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_ResumeAction.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_ResumeAction.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command StartAction
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_StartAction.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_StartAction.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command StartActionWithDuration
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_StartActionWithDuration.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_StartActionWithDuration.restype = ctypes.c_uint32
+ # Cluster BridgedActions Command StopAction
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_StopAction.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint32]
+ self._chipLib.chip_ime_AppendCommand_BridgedActions_StopAction.restype = ctypes.c_uint32
+ # Cluster BridgedActions ReadAttribute ActionList
+ self._chipLib.chip_ime_ReadAttribute_BridgedActions_ActionList.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16]
+ self._chipLib.chip_ime_ReadAttribute_BridgedActions_ActionList.restype = ctypes.c_uint32
+ # Cluster BridgedActions ReadAttribute EndpointList
+ self._chipLib.chip_ime_ReadAttribute_BridgedActions_EndpointList.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16]
+ self._chipLib.chip_ime_ReadAttribute_BridgedActions_EndpointList.restype = ctypes.c_uint32
+ # Cluster BridgedActions ReadAttribute SetupUrl
+ self._chipLib.chip_ime_ReadAttribute_BridgedActions_SetupUrl.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16]
+ self._chipLib.chip_ime_ReadAttribute_BridgedActions_SetupUrl.restype = ctypes.c_uint32
+ # Cluster BridgedActions ReadAttribute ClusterRevision
+ self._chipLib.chip_ime_ReadAttribute_BridgedActions_ClusterRevision.argtypes = [
+ ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16]
+ self._chipLib.chip_ime_ReadAttribute_BridgedActions_ClusterRevision.restype = ctypes.c_uint32
# Cluster BridgedDeviceBasic
# Cluster BridgedDeviceBasic ReadAttribute VendorName
self._chipLib.chip_ime_ReadAttribute_BridgedDeviceBasic_VendorName.argtypes = [
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index 765036f23331bb..3215d203ef2a96 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -4138,6 +4138,383 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
return ClusterObjectFieldDescriptor(Type=uint)
+@dataclass
+class BridgedActions:
+ id: typing.ClassVar[int] = 0x0025
+
+ class Enums:
+ class ActionErrorEnum(IntEnum):
+ kUnknown = 0x00
+ kInterrupted = 0x01
+
+ class ActionStatusEnum(IntEnum):
+ kInactive = 0x00
+ kActive = 0x01
+ kPaused = 0x02
+ kDisabled = 0x03
+
+ class ActionTypeEnum(IntEnum):
+ kOther = 0x00
+ kScene = 0x01
+ kSequence = 0x02
+ kAutomation = 0x03
+ kException = 0x04
+ kNotification = 0x05
+ kAlarm = 0x06
+
+ class EndpointListTypeEnum(IntEnum):
+ kOther = 0x00
+ kRoom = 0x01
+ kZone = 0x02
+
+ class Structs:
+ @dataclass
+ class ActionStruct(ClusterObject):
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="Name", Tag=1, Type=str),
+ ClusterObjectFieldDescriptor(
+ Label="Type", Tag=2, Type=BridgedActions.Enums.ActionTypeEnum),
+ ClusterObjectFieldDescriptor(
+ Label="EndpointListID", Tag=3, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="SupportedCommands", Tag=4, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="Status", Tag=5, Type=BridgedActions.Enums.ActionStatusEnum),
+ ])
+
+ ActionID: 'uint' = None
+ Name: 'str' = None
+ Type: 'BridgedActions.Enums.ActionTypeEnum' = None
+ EndpointListID: 'uint' = None
+ SupportedCommands: 'uint' = None
+ Status: 'BridgedActions.Enums.ActionStatusEnum' = None
+
+ @dataclass
+ class EndpointListStruct(ClusterObject):
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="EndpointListID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="Name", Tag=1, Type=str),
+ ClusterObjectFieldDescriptor(
+ Label="Type", Tag=2, Type=BridgedActions.Enums.EndpointListTypeEnum),
+ ClusterObjectFieldDescriptor(
+ Label="Endpoints", Tag=3, Type=bytes),
+ ])
+
+ EndpointListID: 'uint' = None
+ Name: 'str' = None
+ Type: 'BridgedActions.Enums.EndpointListTypeEnum' = None
+ Endpoints: 'bytes' = None
+
+ class Commands:
+ @dataclass
+ class InstantAction(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0000
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+
+ @dataclass
+ class InstantActionWithTransition(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0001
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="TransitionTime", Tag=2, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+ TransitionTime: 'uint' = None
+
+ @dataclass
+ class StartAction(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0002
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+
+ @dataclass
+ class StartActionWithDuration(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0003
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="Duration", Tag=2, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+ Duration: 'uint' = None
+
+ @dataclass
+ class StopAction(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0004
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+
+ @dataclass
+ class PauseAction(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0005
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+
+ @dataclass
+ class PauseActionWithDuration(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0006
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="Duration", Tag=2, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+ Duration: 'uint' = None
+
+ @dataclass
+ class ResumeAction(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0007
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+
+ @dataclass
+ class EnableAction(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0008
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+
+ @dataclass
+ class EnableActionWithDuration(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x0009
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="Duration", Tag=2, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+ Duration: 'uint' = None
+
+ @dataclass
+ class DisableAction(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x000A
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+
+ @dataclass
+ class DisableActionWithDuration(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x0025
+ command_id: typing.ClassVar[int] = 0x000B
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(
+ Label="ActionID", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="InvokeID", Tag=1, Type=uint),
+ ClusterObjectFieldDescriptor(
+ Label="Duration", Tag=2, Type=uint),
+ ])
+
+ ActionID: 'uint' = None
+ InvokeID: 'uint' = None
+ Duration: 'uint' = None
+
+ class Attributes:
+ class ActionList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x0025
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=BridgedActions.Structs.ActionStruct, IsArray=True)
+
+ class EndpointList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x0025
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0001
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=BridgedActions.Structs.EndpointListStruct, IsArray=True)
+
+ class SetupUrl(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x0025
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0002
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=str)
+
+ class FeatureMap(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x0025
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0xFFFC
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=uint)
+
+ class ClusterRevision(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x0025
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0xFFFD
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=uint)
+
+
@dataclass
class Basic:
id: typing.ClassVar[int] = 0x0028
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm
index 830cee257ffc73..ea71f7b12863b0 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm
@@ -115,6 +115,53 @@
DispatchSuccess(context, @ { @"value" : array });
};
+void CHIPBridgedActionsActionListListAttributeCallbackBridge::OnSuccessFn(void * context,
+ const chip::app::DataModel::DecodableList & list)
+{
+ id array = [[NSMutableArray alloc] init];
+ auto iter = list.begin();
+ while (iter.Next()) {
+ auto & entry = iter.GetValue();
+ [array addObject:@ {
+ @"ActionID" : [NSNumber numberWithUnsignedShort:entry.actionID],
+ @"Name" : [[NSString alloc] initWithBytes:entry.name.data() length:entry.name.size() encoding:NSUTF8StringEncoding],
+ @"Type" : [NSNumber numberWithUnsignedChar:entry.type],
+ @"EndpointListID" : [NSNumber numberWithUnsignedShort:entry.endpointListID],
+ @"SupportedCommands" : [NSNumber numberWithUnsignedShort:entry.supportedCommands],
+ @"Status" : [NSNumber numberWithUnsignedChar:entry.status],
+ }];
+ }
+ if (iter.GetStatus() != CHIP_NO_ERROR) {
+ OnFailureFn(context, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return;
+ }
+
+ DispatchSuccess(context, @ { @"value" : array });
+};
+
+void CHIPBridgedActionsEndpointListListAttributeCallbackBridge::OnSuccessFn(void * context,
+ const chip::app::DataModel::DecodableList &
+ list)
+{
+ id array = [[NSMutableArray alloc] init];
+ auto iter = list.begin();
+ while (iter.Next()) {
+ auto & entry = iter.GetValue();
+ [array addObject:@ {
+ @"EndpointListID" : [NSNumber numberWithUnsignedShort:entry.endpointListID],
+ @"Name" : [[NSString alloc] initWithBytes:entry.name.data() length:entry.name.size() encoding:NSUTF8StringEncoding],
+ @"Type" : [NSNumber numberWithUnsignedChar:entry.type],
+ @"Endpoints" : [NSData dataWithBytes:entry.endpoints.data() length:entry.endpoints.size()],
+ }];
+ }
+ if (iter.GetStatus() != CHIP_NO_ERROR) {
+ OnFailureFn(context, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return;
+ }
+
+ DispatchSuccess(context, @ { @"value" : array });
+};
+
void CHIPContentLauncherAcceptsHeaderListListAttributeCallbackBridge::OnSuccessFn(
void * context, const chip::app::DataModel::DecodableList & list)
{
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h
index 4417fad4c5b6c3..5e401e22dea36b 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h
@@ -169,6 +169,34 @@ class CHIPAudioOutputAudioOutputListListAttributeCallbackBridge
list);
};
+class CHIPBridgedActionsActionListListAttributeCallbackBridge
+ : public CHIPCallbackBridge
+{
+public:
+ CHIPBridgedActionsActionListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, CHIPActionBlock action,
+ bool keepAlive = false) :
+ CHIPCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){};
+
+ static void OnSuccessFn(
+ void * context,
+ const chip::app::DataModel::DecodableList &
+ list);
+};
+
+class CHIPBridgedActionsEndpointListListAttributeCallbackBridge
+ : public CHIPCallbackBridge
+{
+public:
+ CHIPBridgedActionsEndpointListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ CHIPActionBlock action, bool keepAlive = false) :
+ CHIPCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){};
+
+ static void OnSuccessFn(
+ void * context,
+ const chip::app::DataModel::DecodableList &
+ list);
+};
+
class CHIPContentLauncherAcceptsHeaderListListAttributeCallbackBridge
: public CHIPCallbackBridge
{
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h
index 5ec6f123541ce8..204281848a707a 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h
@@ -260,6 +260,50 @@ NS_ASSUME_NONNULL_BEGIN
@end
+/**
+ * Cluster Bridged Actions
+ *
+ */
+@interface CHIPBridgedActions : CHIPCluster
+
+- (void)disableAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler;
+- (void)disableActionWithDuration:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ duration:(uint32_t)duration
+ responseHandler:(ResponseHandler)responseHandler;
+- (void)enableAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler;
+- (void)enableActionWithDuration:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ duration:(uint32_t)duration
+ responseHandler:(ResponseHandler)responseHandler;
+- (void)instantAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler;
+- (void)instantActionWithTransition:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ transitionTime:(uint16_t)transitionTime
+ responseHandler:(ResponseHandler)responseHandler;
+- (void)pauseAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler;
+- (void)pauseActionWithDuration:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ duration:(uint32_t)duration
+ responseHandler:(ResponseHandler)responseHandler;
+- (void)resumeAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler;
+- (void)startAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler;
+- (void)startActionWithDuration:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ duration:(uint32_t)duration
+ responseHandler:(ResponseHandler)responseHandler;
+- (void)stopAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler;
+
+- (void)readAttributeActionListWithResponseHandler:(ResponseHandler)responseHandler;
+
+- (void)readAttributeEndpointListWithResponseHandler:(ResponseHandler)responseHandler;
+
+- (void)readAttributeSetupUrlWithResponseHandler:(ResponseHandler)responseHandler;
+
+- (void)readAttributeClusterRevisionWithResponseHandler:(ResponseHandler)responseHandler;
+
+@end
+
/**
* Cluster Bridged Device Basic
*
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm
index 77dde1cdd581ca..6313aa1593a51c 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm
@@ -666,6 +666,144 @@ new CHIPInt16uAttributeCallbackBridge(self.callbackQueue, responseHandler, ^(Can
@end
+@implementation CHIPBridgedActions
+
+- (chip::Controller::ClusterBase *)getCluster
+{
+ return &_cppCluster;
+}
+
+- (void)disableAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.DisableAction(success, failure, actionID, invokeID);
+ });
+}
+
+- (void)disableActionWithDuration:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ duration:(uint32_t)duration
+ responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.DisableActionWithDuration(success, failure, actionID, invokeID, duration);
+ });
+}
+
+- (void)enableAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.EnableAction(success, failure, actionID, invokeID);
+ });
+}
+
+- (void)enableActionWithDuration:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ duration:(uint32_t)duration
+ responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.EnableActionWithDuration(success, failure, actionID, invokeID, duration);
+ });
+}
+
+- (void)instantAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.InstantAction(success, failure, actionID, invokeID);
+ });
+}
+
+- (void)instantActionWithTransition:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ transitionTime:(uint16_t)transitionTime
+ responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.InstantActionWithTransition(success, failure, actionID, invokeID, transitionTime);
+ });
+}
+
+- (void)pauseAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.PauseAction(success, failure, actionID, invokeID);
+ });
+}
+
+- (void)pauseActionWithDuration:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ duration:(uint32_t)duration
+ responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.PauseActionWithDuration(success, failure, actionID, invokeID, duration);
+ });
+}
+
+- (void)resumeAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.ResumeAction(success, failure, actionID, invokeID);
+ });
+}
+
+- (void)startAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.StartAction(success, failure, actionID, invokeID);
+ });
+}
+
+- (void)startActionWithDuration:(uint16_t)actionID
+ invokeID:(uint32_t)invokeID
+ duration:(uint32_t)duration
+ responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.StartActionWithDuration(success, failure, actionID, invokeID, duration);
+ });
+}
+
+- (void)stopAction:(uint16_t)actionID invokeID:(uint32_t)invokeID responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.StopAction(success, failure, actionID, invokeID);
+ });
+}
+
+- (void)readAttributeActionListWithResponseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPBridgedActionsActionListListAttributeCallbackBridge(
+ self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.ReadAttributeActionList(success, failure);
+ });
+}
+
+- (void)readAttributeEndpointListWithResponseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPBridgedActionsEndpointListListAttributeCallbackBridge(
+ self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.ReadAttributeEndpointList(success, failure);
+ });
+}
+
+- (void)readAttributeSetupUrlWithResponseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPCharStringAttributeCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.ReadAttributeSetupUrl(success, failure);
+ });
+}
+
+- (void)readAttributeClusterRevisionWithResponseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPInt16uAttributeCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.ReadAttributeClusterRevision(success, failure);
+ });
+}
+
+@end
+
@implementation CHIPBridgedDeviceBasic
- (chip::Controller::ClusterBase *)getCluster
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc_internal.h b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc_internal.h
index 5b5305355b3d69..7b0ae929a0412b 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc_internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc_internal.h
@@ -61,6 +61,10 @@
@property (readonly) chip::Controller::BooleanStateCluster cppCluster;
@end
+@interface CHIPBridgedActions ()
+@property (readonly) chip::Controller::BridgedActionsCluster cppCluster;
+@end
+
@interface CHIPBridgedDeviceBasic ()
@property (readonly) chip::Controller::BridgedDeviceBasicCluster cppCluster;
@end
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h
index 13af1ebf4d9fa9..1153b66dfc8d68 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h
@@ -154,6 +154,17 @@ NS_ASSUME_NONNULL_BEGIN
@end
+/**
+ * Cluster Bridged Actions
+ *
+ */
+@interface CHIPTestBridgedActions : CHIPBridgedActions
+
+- (void)writeAttributeSetupUrlWithValue:(NSString *)value responseHandler:(ResponseHandler)responseHandler;
+- (void)writeAttributeClusterRevisionWithValue:(uint16_t)value responseHandler:(ResponseHandler)responseHandler;
+
+@end
+
/**
* Cluster Bridged Device Basic
*
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm
index e610ed9d9f6a2c..2b10df093798f6 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm
@@ -445,6 +445,33 @@ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Canc
@end
+@interface CHIPTestBridgedActions ()
+@property (readonly) chip::Controller::BridgedActionsClusterTest cppCluster;
+@end
+
+@implementation CHIPTestBridgedActions
+
+- (chip::Controller::ClusterBase *)getCluster
+{
+ return &_cppCluster;
+}
+
+- (void)writeAttributeSetupUrlWithValue:(NSString *)value responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.WriteAttributeSetupUrl(success, failure, [self asCharSpan:value]);
+ });
+}
+
+- (void)writeAttributeClusterRevisionWithValue:(uint16_t)value responseHandler:(ResponseHandler)responseHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(self.callbackQueue, responseHandler, ^(Cancelable * success, Cancelable * failure) {
+ return self.cppCluster.WriteAttributeClusterRevision(success, failure, value);
+ });
+}
+
+@end
+
@interface CHIPTestBridgedDeviceBasic ()
@property (readonly) chip::Controller::BridgedDeviceBasicClusterTest cppCluster;
@end
diff --git a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m
index a301259bf075ad..e5a965c31c8b49 100644
--- a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m
+++ b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m
@@ -13358,6 +13358,80 @@ - (void)testSendClusterBooleanStateReadAttributeClusterRevisionWithResponseHandl
[self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
}
+- (void)testSendClusterBridgedActionsReadAttributeActionListWithResponseHandler
+{
+ XCTestExpectation * expectation = [self expectationWithDescription:@"BridgedActionsReadAttributeActionListWithResponseHandler"];
+
+ CHIPDevice * device = GetConnectedDevice();
+ dispatch_queue_t queue = dispatch_get_main_queue();
+ CHIPBridgedActions * cluster = [[CHIPBridgedActions alloc] initWithDevice:device endpoint:1 queue:queue];
+ XCTAssertNotNil(cluster);
+
+ [cluster readAttributeActionListWithResponseHandler:^(NSError * err, NSDictionary * values) {
+ NSLog(@"BridgedActions ActionList Error: %@", err);
+ XCTAssertEqual(err.code, 0);
+ [expectation fulfill];
+ }];
+
+ [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
+}
+
+- (void)testSendClusterBridgedActionsReadAttributeEndpointListWithResponseHandler
+{
+ XCTestExpectation * expectation =
+ [self expectationWithDescription:@"BridgedActionsReadAttributeEndpointListWithResponseHandler"];
+
+ CHIPDevice * device = GetConnectedDevice();
+ dispatch_queue_t queue = dispatch_get_main_queue();
+ CHIPBridgedActions * cluster = [[CHIPBridgedActions alloc] initWithDevice:device endpoint:1 queue:queue];
+ XCTAssertNotNil(cluster);
+
+ [cluster readAttributeEndpointListWithResponseHandler:^(NSError * err, NSDictionary * values) {
+ NSLog(@"BridgedActions EndpointList Error: %@", err);
+ XCTAssertEqual(err.code, 0);
+ [expectation fulfill];
+ }];
+
+ [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
+}
+
+- (void)testSendClusterBridgedActionsReadAttributeSetupUrlWithResponseHandler
+{
+ XCTestExpectation * expectation = [self expectationWithDescription:@"BridgedActionsReadAttributeSetupUrlWithResponseHandler"];
+
+ CHIPDevice * device = GetConnectedDevice();
+ dispatch_queue_t queue = dispatch_get_main_queue();
+ CHIPBridgedActions * cluster = [[CHIPBridgedActions alloc] initWithDevice:device endpoint:1 queue:queue];
+ XCTAssertNotNil(cluster);
+
+ [cluster readAttributeSetupUrlWithResponseHandler:^(NSError * err, NSDictionary * values) {
+ NSLog(@"BridgedActions SetupUrl Error: %@", err);
+ XCTAssertEqual(err.code, 0);
+ [expectation fulfill];
+ }];
+
+ [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
+}
+
+- (void)testSendClusterBridgedActionsReadAttributeClusterRevisionWithResponseHandler
+{
+ XCTestExpectation * expectation =
+ [self expectationWithDescription:@"BridgedActionsReadAttributeClusterRevisionWithResponseHandler"];
+
+ CHIPDevice * device = GetConnectedDevice();
+ dispatch_queue_t queue = dispatch_get_main_queue();
+ CHIPBridgedActions * cluster = [[CHIPBridgedActions alloc] initWithDevice:device endpoint:1 queue:queue];
+ XCTAssertNotNil(cluster);
+
+ [cluster readAttributeClusterRevisionWithResponseHandler:^(NSError * err, NSDictionary * values) {
+ NSLog(@"BridgedActions ClusterRevision Error: %@", err);
+ XCTAssertEqual(err.code, 0);
+ [expectation fulfill];
+ }];
+
+ [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
+}
+
- (void)testSendClusterBridgedDeviceBasicReadAttributeVendorNameWithResponseHandler
{
XCTestExpectation * expectation =
diff --git a/zzz_generated/all-clusters-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/all-clusters-app/zap-generated/PluginApplicationCallbacks.h
index 0bd76757258240..ea79a344ba528d 100644
--- a/zzz_generated/all-clusters-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/all-clusters-app/zap-generated/PluginApplicationCallbacks.h
@@ -32,6 +32,7 @@
MatterBinaryInputBasicPluginServerInitCallback(); \
MatterBindingPluginServerInitCallback(); \
MatterBooleanStatePluginServerInitCallback(); \
+ MatterBridgedActionsPluginServerInitCallback(); \
MatterBridgedDeviceBasicPluginServerInitCallback(); \
MatterColorControlPluginServerInitCallback(); \
MatterContentLauncherPluginServerInitCallback(); \
diff --git a/zzz_generated/all-clusters-app/zap-generated/attribute-size.cpp b/zzz_generated/all-clusters-app/zap-generated/attribute-size.cpp
index c317be238e49ec..6b2f90fd3ac906 100644
--- a/zzz_generated/all-clusters-app/zap-generated/attribute-size.cpp
+++ b/zzz_generated/all-clusters-app/zap-generated/attribute-size.cpp
@@ -133,6 +133,82 @@ uint16_t emberAfCopyList(ClusterId clusterId, EmberAfAttributeMetadata * am, boo
}
break;
}
+ case 0x0025: // Bridged Actions Cluster
+ {
+ uint16_t entryOffset = kSizeLengthInBytes;
+ switch (am->attributeId)
+ {
+ case 0x0000: // action list
+ {
+ entryLength = 42;
+ if (((index - 1) * entryLength) > (am->size - entryLength))
+ {
+ ChipLogError(Zcl, "Index %" PRId32 " is invalid.", index);
+ return 0;
+ }
+ entryOffset = static_cast(entryOffset + ((index - 1) * entryLength));
+ // Struct _ActionStruct
+ _ActionStruct * entry = reinterpret_cast<_ActionStruct *>(write ? src : dest);
+ copyListMember(write ? dest : (uint8_t *) &entry->ActionID, write ? (uint8_t *) &entry->ActionID : src, write,
+ &entryOffset, sizeof(entry->ActionID)); // INT16U
+ ByteSpan NameSpanStorage(Uint8::from_const_char(entry->Name.data()), entry->Name.size()); // CHAR_STRING
+ ByteSpan * NameSpan = &NameSpanStorage;
+ if (CHIP_NO_ERROR !=
+ (write ? WriteByteSpan(dest + entryOffset, 34, NameSpan) : ReadByteSpan(src + entryOffset, 34, NameSpan)))
+ {
+ ChipLogError(Zcl, "Index %" PRId32 " is invalid. Not enough remaining space", index);
+ return 0;
+ }
+ entryOffset = static_cast(entryOffset + 34);
+ copyListMember(write ? dest : (uint8_t *) &entry->Type, write ? (uint8_t *) &entry->Type : src, write, &entryOffset,
+ sizeof(entry->Type)); // ActionTypeEnum
+ copyListMember(write ? dest : (uint8_t *) &entry->EndpointListID, write ? (uint8_t *) &entry->EndpointListID : src,
+ write, &entryOffset, sizeof(entry->EndpointListID)); // INT16U
+ copyListMember(write ? dest : (uint8_t *) &entry->SupportedCommands,
+ write ? (uint8_t *) &entry->SupportedCommands : src, write, &entryOffset,
+ sizeof(entry->SupportedCommands)); // INT16U
+ copyListMember(write ? dest : (uint8_t *) &entry->Status, write ? (uint8_t *) &entry->Status : src, write, &entryOffset,
+ sizeof(entry->Status)); // ActionStatusEnum
+ break;
+ }
+ case 0x0001: // endpoint list
+ {
+ entryLength = 295;
+ if (((index - 1) * entryLength) > (am->size - entryLength))
+ {
+ ChipLogError(Zcl, "Index %" PRId32 " is invalid.", index);
+ return 0;
+ }
+ entryOffset = static_cast(entryOffset + ((index - 1) * entryLength));
+ // Struct _EndpointListStruct
+ _EndpointListStruct * entry = reinterpret_cast<_EndpointListStruct *>(write ? src : dest);
+ copyListMember(write ? dest : (uint8_t *) &entry->EndpointListID, write ? (uint8_t *) &entry->EndpointListID : src,
+ write, &entryOffset, sizeof(entry->EndpointListID)); // INT16U
+ ByteSpan NameSpanStorage(Uint8::from_const_char(entry->Name.data()), entry->Name.size()); // CHAR_STRING
+ ByteSpan * NameSpan = &NameSpanStorage;
+ if (CHIP_NO_ERROR !=
+ (write ? WriteByteSpan(dest + entryOffset, 34, NameSpan) : ReadByteSpan(src + entryOffset, 34, NameSpan)))
+ {
+ ChipLogError(Zcl, "Index %" PRId32 " is invalid. Not enough remaining space", index);
+ return 0;
+ }
+ entryOffset = static_cast(entryOffset + 34);
+ copyListMember(write ? dest : (uint8_t *) &entry->Type, write ? (uint8_t *) &entry->Type : src, write, &entryOffset,
+ sizeof(entry->Type)); // EndpointListTypeEnum
+ ByteSpan * EndpointsSpan = &entry->Endpoints; // OCTET_STRING
+ if (CHIP_NO_ERROR !=
+ (write ? WriteByteSpan(dest + entryOffset, 258, EndpointsSpan)
+ : ReadByteSpan(src + entryOffset, 258, EndpointsSpan)))
+ {
+ ChipLogError(Zcl, "Index %" PRId32 " is invalid. Not enough remaining space", index);
+ return 0;
+ }
+ entryOffset = static_cast(entryOffset + 258);
+ break;
+ }
+ }
+ break;
+ }
case 0x050A: // Content Launcher Cluster
{
uint16_t entryOffset = kSizeLengthInBytes;
@@ -900,6 +976,19 @@ uint16_t emberAfAttributeValueListSize(ClusterId clusterId, AttributeId attribut
break;
}
break;
+ case 0x0025: // Bridged Actions Cluster
+ switch (attributeId)
+ {
+ case 0x0000: // action list
+ // Struct _ActionStruct
+ entryLength = 42;
+ break;
+ case 0x0001: // endpoint list
+ // Struct _EndpointListStruct
+ entryLength = 295;
+ break;
+ }
+ break;
case 0x050A: // Content Launcher Cluster
switch (attributeId)
{
diff --git a/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp b/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
index b2a9af107d7029..477fcaed26cbc1 100644
--- a/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
@@ -59,6 +59,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
case ZCL_BOOLEAN_STATE_CLUSTER_ID:
emberAfBooleanStateClusterInitCallback(endpoint);
break;
+ case ZCL_BRIDGED_ACTIONS_CLUSTER_ID:
+ emberAfBridgedActionsClusterInitCallback(endpoint);
+ break;
case ZCL_BRIDGED_DEVICE_BASIC_CLUSTER_ID:
emberAfBridgedDeviceBasicClusterInitCallback(endpoint);
break;
@@ -253,6 +256,11 @@ void __attribute__((weak)) emberAfBooleanStateClusterInitCallback(EndpointId end
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfBridgedActionsClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfBridgedDeviceBasicClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
index 767d9cb865ef15..c5f54a4ccf30ad 100644
--- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
@@ -463,59 +463,122 @@
/* 3285 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
\
+ /* Endpoint: 1, Cluster: Bridged Actions (server), big-endian */ \
+ \
+ /* 3289 - action list, */ \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ \
+ /* 3545 - endpoint list, */ \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ \
+ /* 3801 - setup url, */ \
+ 15, 'w', 'w', 'w', '.', 's', 'i', 'g', 'n', 'i', 'f', 'y', '.', 'c', 'o', 'm', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ \
/* Endpoint: 1, Cluster: Power Source (server), big-endian */ \
\
- /* 3289 - Description, */ \
+ /* 4314 - Description, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, \
\
- /* 3350 - BatteryVoltage, */ \
+ /* 4375 - BatteryVoltage, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 3354 - BatteryTimeRemaining, */ \
+ /* 4379 - BatteryTimeRemaining, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 3358 - ActiveBatteryFaults, */ \
+ /* 4383 - ActiveBatteryFaults, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3366 - FeatureMap, */ \
+ /* 4391 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Bridged Device Basic (server), big-endian */ \
\
- /* 3370 - VendorName, */ \
+ /* 4395 - VendorName, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3403 - ProductName, */ \
+ /* 4428 - ProductName, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3436 - UserLabel, */ \
+ /* 4461 - UserLabel, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3469 - HardwareVersionString, */ \
+ /* 4494 - HardwareVersionString, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3534 - SoftwareVersion, */ \
+ /* 4559 - SoftwareVersion, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 3538 - SoftwareVersionString, */ \
+ /* 4563 - SoftwareVersionString, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3603 - ManufacturingDate, */ \
+ /* 4628 - ManufacturingDate, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3620 - PartNumber, */ \
+ /* 4645 - PartNumber, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -531,7 +594,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3875 - ProductURL, */ \
+ /* 4900 - ProductURL, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -547,19 +610,19 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 4130 - ProductLabel, */ \
+ /* 5155 - ProductLabel, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 4195 - SerialNumber, */ \
+ /* 5220 - SerialNumber, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Fixed Label (server), big-endian */ \
\
- /* 4228 - label list, */ \
+ /* 5253 - label list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -577,25 +640,25 @@
\
/* Endpoint: 1, Cluster: Window Covering (server), big-endian */ \
\
- /* 4482 - FeatureMap, */ \
+ /* 5507 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Pump Configuration and Control (server), big-endian */ \
\
- /* 4486 - LifetimeEnergyConsumed, */ \
+ /* 5511 - LifetimeEnergyConsumed, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 4490 - FeatureMap, */ \
+ /* 5515 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Thermostat (server), big-endian */ \
\
- /* 4494 - FeatureMap, */ \
+ /* 5519 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x0B, \
\
/* Endpoint: 1, Cluster: Color Control (server), big-endian */ \
\
- /* 4498 - compensation text, */ \
+ /* 5523 - compensation text, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -613,18 +676,18 @@
\
/* Endpoint: 1, Cluster: IAS Zone (server), big-endian */ \
\
- /* 4753 - IAS CIE address, */ \
+ /* 5778 - IAS CIE address, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Wake on LAN (server), big-endian */ \
\
- /* 4761 - wake on lan mac address, */ \
+ /* 5786 - wake on lan mac address, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: TV Channel (server), big-endian */ \
\
- /* 4794 - tv channel list, */ \
+ /* 5819 - tv channel list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -640,17 +703,17 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5048 - tv channel lineup, */ \
+ /* 6073 - tv channel lineup, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5081 - current tv channel, */ \
+ /* 6106 - current tv channel, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Target Navigator (server), big-endian */ \
\
- /* 5114 - target navigator list, */ \
+ /* 6139 - target navigator list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -668,30 +731,30 @@
\
/* Endpoint: 1, Cluster: Media Playback (server), big-endian */ \
\
- /* 5368 - start time, */ \
+ /* 6393 - start time, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \
\
- /* 5376 - duration, */ \
+ /* 6401 - duration, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5384 - position updated at, */ \
+ /* 6409 - position updated at, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5392 - position, */ \
+ /* 6417 - position, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5400 - playback speed, */ \
+ /* 6425 - playback speed, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5408 - seek range end, */ \
+ /* 6433 - seek range end, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5416 - seek range start, */ \
+ /* 6441 - seek range start, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Media Input (server), big-endian */ \
\
- /* 5424 - media input list, */ \
+ /* 6449 - media input list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -709,7 +772,7 @@
\
/* Endpoint: 1, Cluster: Content Launcher (server), big-endian */ \
\
- /* 5678 - accepts header list, */ \
+ /* 6703 - accepts header list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -725,7 +788,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5932 - supported streaming types, */ \
+ /* 6957 - supported streaming types, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -743,7 +806,7 @@
\
/* Endpoint: 1, Cluster: Audio Output (server), big-endian */ \
\
- /* 6186 - audio output list, */ \
+ /* 7211 - audio output list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -761,7 +824,7 @@
\
/* Endpoint: 1, Cluster: Application Launcher (server), big-endian */ \
\
- /* 6440 - application launcher list, */ \
+ /* 7465 - application launcher list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -779,45 +842,45 @@
\
/* Endpoint: 1, Cluster: Application Basic (server), big-endian */ \
\
- /* 6694 - vendor name, */ \
+ /* 7719 - vendor name, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6727 - application name, */ \
+ /* 7752 - application name, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6760 - application id, */ \
+ /* 7785 - application id, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Test Cluster (server), big-endian */ \
\
- /* 6793 - bitmap32, */ \
+ /* 7818 - bitmap32, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 6797 - bitmap64, */ \
+ /* 7822 - bitmap64, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6805 - int32u, */ \
+ /* 7830 - int32u, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 6809 - int64u, */ \
+ /* 7834 - int64u, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6817 - int32s, */ \
+ /* 7842 - int32s, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 6821 - int64s, */ \
+ /* 7846 - int64s, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6829 - octet_string, */ \
+ /* 7854 - octet_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6840 - list_int8u, */ \
+ /* 7865 - list_int8u, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6850 - list_octet_string, */ \
+ /* 7875 - list_octet_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -833,7 +896,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 7104 - list_struct_octet_string, */ \
+ /* 8129 - list_struct_octet_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -849,7 +912,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 7358 - long_octet_string, */ \
+ /* 8383 - long_octet_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -904,10 +967,10 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 8360 - char_string, */ \
+ /* 9385 - char_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 8371 - long_char_string, */ \
+ /* 9396 - long_char_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -962,23 +1025,23 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 9373 - epoch_us, */ \
+ /* 10398 - epoch_us, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 9381 - epoch_s, */ \
+ /* 10406 - epoch_s, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Electrical Measurement (server), big-endian */ \
\
- /* 9385 - measurement type, */ \
+ /* 10410 - measurement type, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 9389 - total active power, */ \
+ /* 10414 - total active power, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 2, Cluster: On/Off (server), big-endian */ \
\
- /* 9393 - FeatureMap, */ \
+ /* 10418 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
}
@@ -1422,59 +1485,122 @@
/* 3285 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
\
+ /* Endpoint: 1, Cluster: Bridged Actions (server), little-endian */ \
+ \
+ /* 3289 - action list, */ \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ \
+ /* 3545 - endpoint list, */ \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ \
+ /* 3801 - setup url, */ \
+ 15, 'w', 'w', 'w', '.', 's', 'i', 'g', 'n', 'i', 'f', 'y', '.', 'c', 'o', 'm', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ \
/* Endpoint: 1, Cluster: Power Source (server), little-endian */ \
\
- /* 3289 - Description, */ \
+ /* 4314 - Description, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, \
\
- /* 3350 - BatteryVoltage, */ \
+ /* 4375 - BatteryVoltage, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 3354 - BatteryTimeRemaining, */ \
+ /* 4379 - BatteryTimeRemaining, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 3358 - ActiveBatteryFaults, */ \
+ /* 4383 - ActiveBatteryFaults, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3366 - FeatureMap, */ \
+ /* 4391 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Bridged Device Basic (server), little-endian */ \
\
- /* 3370 - VendorName, */ \
+ /* 4395 - VendorName, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3403 - ProductName, */ \
+ /* 4428 - ProductName, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3436 - UserLabel, */ \
+ /* 4461 - UserLabel, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3469 - HardwareVersionString, */ \
+ /* 4494 - HardwareVersionString, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3534 - SoftwareVersion, */ \
+ /* 4559 - SoftwareVersion, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 3538 - SoftwareVersionString, */ \
+ /* 4563 - SoftwareVersionString, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3603 - ManufacturingDate, */ \
+ /* 4628 - ManufacturingDate, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3620 - PartNumber, */ \
+ /* 4645 - PartNumber, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1490,7 +1616,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 3875 - ProductURL, */ \
+ /* 4900 - ProductURL, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1506,19 +1632,19 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 4130 - ProductLabel, */ \
+ /* 5155 - ProductLabel, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 4195 - SerialNumber, */ \
+ /* 5220 - SerialNumber, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Fixed Label (server), little-endian */ \
\
- /* 4228 - label list, */ \
+ /* 5253 - label list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1536,25 +1662,25 @@
\
/* Endpoint: 1, Cluster: Window Covering (server), little-endian */ \
\
- /* 4482 - FeatureMap, */ \
+ /* 5507 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Pump Configuration and Control (server), little-endian */ \
\
- /* 4486 - LifetimeEnergyConsumed, */ \
+ /* 5511 - LifetimeEnergyConsumed, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 4490 - FeatureMap, */ \
+ /* 5515 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Thermostat (server), little-endian */ \
\
- /* 4494 - FeatureMap, */ \
+ /* 5519 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x0B, \
\
/* Endpoint: 1, Cluster: Color Control (server), little-endian */ \
\
- /* 4498 - compensation text, */ \
+ /* 5523 - compensation text, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1572,18 +1698,18 @@
\
/* Endpoint: 1, Cluster: IAS Zone (server), little-endian */ \
\
- /* 4753 - IAS CIE address, */ \
+ /* 5778 - IAS CIE address, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Wake on LAN (server), little-endian */ \
\
- /* 4761 - wake on lan mac address, */ \
+ /* 5786 - wake on lan mac address, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: TV Channel (server), little-endian */ \
\
- /* 4794 - tv channel list, */ \
+ /* 5819 - tv channel list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1599,17 +1725,17 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5048 - tv channel lineup, */ \
+ /* 6073 - tv channel lineup, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5081 - current tv channel, */ \
+ /* 6106 - current tv channel, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Target Navigator (server), little-endian */ \
\
- /* 5114 - target navigator list, */ \
+ /* 6139 - target navigator list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1627,30 +1753,30 @@
\
/* Endpoint: 1, Cluster: Media Playback (server), little-endian */ \
\
- /* 5368 - start time, */ \
+ /* 6393 - start time, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \
\
- /* 5376 - duration, */ \
+ /* 6401 - duration, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5384 - position updated at, */ \
+ /* 6409 - position updated at, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5392 - position, */ \
+ /* 6417 - position, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5400 - playback speed, */ \
+ /* 6425 - playback speed, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5408 - seek range end, */ \
+ /* 6433 - seek range end, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5416 - seek range start, */ \
+ /* 6441 - seek range start, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Media Input (server), little-endian */ \
\
- /* 5424 - media input list, */ \
+ /* 6449 - media input list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1668,7 +1794,7 @@
\
/* Endpoint: 1, Cluster: Content Launcher (server), little-endian */ \
\
- /* 5678 - accepts header list, */ \
+ /* 6703 - accepts header list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1684,7 +1810,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 5932 - supported streaming types, */ \
+ /* 6957 - supported streaming types, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1702,7 +1828,7 @@
\
/* Endpoint: 1, Cluster: Audio Output (server), little-endian */ \
\
- /* 6186 - audio output list, */ \
+ /* 7211 - audio output list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1720,7 +1846,7 @@
\
/* Endpoint: 1, Cluster: Application Launcher (server), little-endian */ \
\
- /* 6440 - application launcher list, */ \
+ /* 7465 - application launcher list, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1738,45 +1864,45 @@
\
/* Endpoint: 1, Cluster: Application Basic (server), little-endian */ \
\
- /* 6694 - vendor name, */ \
+ /* 7719 - vendor name, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6727 - application name, */ \
+ /* 7752 - application name, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6760 - application id, */ \
+ /* 7785 - application id, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Test Cluster (server), little-endian */ \
\
- /* 6793 - bitmap32, */ \
+ /* 7818 - bitmap32, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 6797 - bitmap64, */ \
+ /* 7822 - bitmap64, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6805 - int32u, */ \
+ /* 7830 - int32u, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 6809 - int64u, */ \
+ /* 7834 - int64u, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6817 - int32s, */ \
+ /* 7842 - int32s, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 6821 - int64s, */ \
+ /* 7846 - int64s, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6829 - octet_string, */ \
+ /* 7854 - octet_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6840 - list_int8u, */ \
+ /* 7865 - list_int8u, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 6850 - list_octet_string, */ \
+ /* 7875 - list_octet_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1792,7 +1918,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 7104 - list_struct_octet_string, */ \
+ /* 8129 - list_struct_octet_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1808,7 +1934,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 7358 - long_octet_string, */ \
+ /* 8383 - long_octet_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1863,10 +1989,10 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 8360 - char_string, */ \
+ /* 9385 - char_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 8371 - long_char_string, */ \
+ /* 9396 - long_char_string, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
@@ -1921,29 +2047,29 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 9373 - epoch_us, */ \
+ /* 10398 - epoch_us, */ \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
\
- /* 9381 - epoch_s, */ \
+ /* 10406 - epoch_s, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 1, Cluster: Electrical Measurement (server), little-endian */ \
\
- /* 9385 - measurement type, */ \
+ /* 10410 - measurement type, */ \
0x00, 0x00, 0x00, 0x00, \
\
- /* 9389 - total active power, */ \
+ /* 10414 - total active power, */ \
0x00, 0x00, 0x00, 0x00, \
\
/* Endpoint: 2, Cluster: On/Off (server), little-endian */ \
\
- /* 9393 - FeatureMap, */ \
+ /* 10418 - FeatureMap, */ \
0x00, 0x00, 0x00, 0x00, \
}
#endif // BIGENDIAN_CPU
-#define GENERATED_DEFAULTS_COUNT (151)
+#define GENERATED_DEFAULTS_COUNT (154)
#define ZAP_TYPE(type) ZCL_##type##_ATTRIBUTE_TYPE
#define ZAP_LONG_DEFAULTS_INDEX(index) \
@@ -1971,7 +2097,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 486
+#define GENERATED_ATTRIBUTE_COUNT 490
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -2226,39 +2352,45 @@
{ 0x0003, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* parts list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
+ /* Endpoint: 1, Cluster: Bridged Actions (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 256, 0, ZAP_LONG_DEFAULTS_INDEX(3289) }, /* action list */ \
+ { 0x0001, ZAP_TYPE(ARRAY), 256, 0, ZAP_LONG_DEFAULTS_INDEX(3545) }, /* endpoint list */ \
+ { 0x0002, ZAP_TYPE(CHAR_STRING), 513, 0, ZAP_LONG_DEFAULTS_INDEX(3801) }, /* setup url */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: Power Source (server) */ \
{ 0x0000, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* Status */ \
{ 0x0001, ZAP_TYPE(INT8U), 1, 0, ZAP_EMPTY_DEFAULT() }, /* Order */ \
- { 0x0002, ZAP_TYPE(CHAR_STRING), 61, 0, ZAP_LONG_DEFAULTS_INDEX(3289) }, /* Description */ \
- { 0x000B, ZAP_TYPE(INT32U), 4, 0, ZAP_LONG_DEFAULTS_INDEX(3350) }, /* BatteryVoltage */ \
+ { 0x0002, ZAP_TYPE(CHAR_STRING), 61, 0, ZAP_LONG_DEFAULTS_INDEX(4314) }, /* Description */ \
+ { 0x000B, ZAP_TYPE(INT32U), 4, 0, ZAP_LONG_DEFAULTS_INDEX(4375) }, /* BatteryVoltage */ \
{ 0x000C, ZAP_TYPE(INT8U), 1, 0, ZAP_EMPTY_DEFAULT() }, /* BatteryPercentRemaining */ \
- { 0x000D, ZAP_TYPE(INT32U), 4, 0, ZAP_LONG_DEFAULTS_INDEX(3354) }, /* BatteryTimeRemaining */ \
+ { 0x000D, ZAP_TYPE(INT32U), 4, 0, ZAP_LONG_DEFAULTS_INDEX(4379) }, /* BatteryTimeRemaining */ \
{ 0x000E, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* BatteryChargeLevel */ \
- { 0x0012, ZAP_TYPE(ARRAY), 8, 0, ZAP_LONG_DEFAULTS_INDEX(3358) }, /* ActiveBatteryFaults */ \
+ { 0x0012, ZAP_TYPE(ARRAY), 8, 0, ZAP_LONG_DEFAULTS_INDEX(4383) }, /* ActiveBatteryFaults */ \
{ 0x001A, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* BatteryChargeState */ \
- { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(3366) }, /* FeatureMap */ \
+ { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(4391) }, /* FeatureMap */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Bridged Device Basic (server) */ \
- { 0x0001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(3370) }, /* VendorName */ \
+ { 0x0001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(4395) }, /* VendorName */ \
{ 0x0002, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_EMPTY_DEFAULT() }, /* VendorID */ \
- { 0x0003, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(3403) }, /* ProductName */ \
+ { 0x0003, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(4428) }, /* ProductName */ \
{ 0x0005, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE), \
- ZAP_LONG_DEFAULTS_INDEX(3436) }, /* UserLabel */ \
+ ZAP_LONG_DEFAULTS_INDEX(4461) }, /* UserLabel */ \
{ 0x0007, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(0x00) }, /* HardwareVersion */ \
{ 0x0008, ZAP_TYPE(CHAR_STRING), 65, ZAP_ATTRIBUTE_MASK(SINGLETON), \
- ZAP_LONG_DEFAULTS_INDEX(3469) }, /* HardwareVersionString */ \
- { 0x0009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(3534) }, /* SoftwareVersion */ \
+ ZAP_LONG_DEFAULTS_INDEX(4494) }, /* HardwareVersionString */ \
+ { 0x0009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(4559) }, /* SoftwareVersion */ \
{ 0x000A, ZAP_TYPE(CHAR_STRING), 65, ZAP_ATTRIBUTE_MASK(SINGLETON), \
- ZAP_LONG_DEFAULTS_INDEX(3538) }, /* SoftwareVersionString */ \
+ ZAP_LONG_DEFAULTS_INDEX(4563) }, /* SoftwareVersionString */ \
{ 0x000B, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(SINGLETON), \
- ZAP_LONG_DEFAULTS_INDEX(3603) }, /* ManufacturingDate */ \
- { 0x000C, ZAP_TYPE(CHAR_STRING), 255, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(3620) }, /* PartNumber */ \
- { 0x000D, ZAP_TYPE(CHAR_STRING), 255, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(3875) }, /* ProductURL */ \
+ ZAP_LONG_DEFAULTS_INDEX(4628) }, /* ManufacturingDate */ \
+ { 0x000C, ZAP_TYPE(CHAR_STRING), 255, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(4645) }, /* PartNumber */ \
+ { 0x000D, ZAP_TYPE(CHAR_STRING), 255, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(4900) }, /* ProductURL */ \
{ 0x000E, ZAP_TYPE(CHAR_STRING), 65, ZAP_ATTRIBUTE_MASK(SINGLETON), \
- ZAP_LONG_DEFAULTS_INDEX(4130) }, /* ProductLabel */ \
+ ZAP_LONG_DEFAULTS_INDEX(5155) }, /* ProductLabel */ \
{ 0x000F, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(SINGLETON), \
- ZAP_LONG_DEFAULTS_INDEX(4195) }, /* SerialNumber */ \
+ ZAP_LONG_DEFAULTS_INDEX(5220) }, /* SerialNumber */ \
{ 0x0011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(0x00) }, /* Reachable */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
@@ -2268,7 +2400,7 @@
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Fixed Label (server) */ \
- { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(4228) }, /* label list */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(5253) }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Boolean State (server) */ \
@@ -2300,7 +2432,7 @@
{ 0x0013, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xFFFF) }, /* InstalledClosedLimitTilt */ \
{ 0x0017, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x00) }, /* Mode */ \
{ 0x001A, ZAP_TYPE(BITMAP16), 2, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* SafetyStatus */ \
- { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(4482) }, /* FeatureMap */ \
+ { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(5507) }, /* FeatureMap */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Barrier Control (server) */ \
@@ -2329,11 +2461,11 @@
{ 0x0012, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* EffectiveControlMode */ \
{ 0x0013, ZAP_TYPE(INT16S), 2, 0, ZAP_EMPTY_DEFAULT() }, /* Capacity */ \
{ 0x0014, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* Speed */ \
- { 0x0017, ZAP_TYPE(INT32U), 4, 0, ZAP_LONG_DEFAULTS_INDEX(4486) }, /* LifetimeEnergyConsumed */ \
+ { 0x0017, ZAP_TYPE(INT32U), 4, 0, ZAP_LONG_DEFAULTS_INDEX(5511) }, /* LifetimeEnergyConsumed */ \
{ 0x0020, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x00) }, /* OperationMode */ \
{ 0x0021, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x00) }, /* ControlMode */ \
{ 0x0022, ZAP_TYPE(BITMAP16), 2, 0, ZAP_EMPTY_DEFAULT() }, /* AlarmMask */ \
- { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(4490) }, /* FeatureMap */ \
+ { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(5515) }, /* FeatureMap */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Thermostat (server) */ \
@@ -2361,7 +2493,7 @@
{ 0x0020, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0) }, /* start of week */ \
{ 0x0021, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(7) }, /* number of weekly transitions */ \
{ 0x0022, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(4) }, /* number of daily transitions */ \
- { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(4494) }, /* FeatureMap */ \
+ { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(5519) }, /* FeatureMap */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Thermostat User Interface Configuration (server) */ \
@@ -2378,7 +2510,7 @@
{ 0x0003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x616B) }, /* current x */ \
{ 0x0004, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x607D) }, /* current y */ \
{ 0x0005, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* drift compensation */ \
- { 0x0006, ZAP_TYPE(CHAR_STRING), 255, 0, ZAP_LONG_DEFAULTS_INDEX(4498) }, /* compensation text */ \
+ { 0x0006, ZAP_TYPE(CHAR_STRING), 255, 0, ZAP_LONG_DEFAULTS_INDEX(5523) }, /* compensation text */ \
{ 0x0007, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x00FA) }, /* color temperature */ \
{ 0x0008, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x01) }, /* color mode */ \
{ 0x000F, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x00) }, /* color control options */ \
@@ -2472,37 +2604,37 @@
{ 0x0000, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* zone state */ \
{ 0x0001, ZAP_TYPE(ENUM16), 2, 0, ZAP_EMPTY_DEFAULT() }, /* zone type */ \
{ 0x0002, ZAP_TYPE(BITMAP16), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* zone status */ \
- { 0x0010, ZAP_TYPE(NODE_ID), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(4753) }, /* IAS CIE address */ \
+ { 0x0010, ZAP_TYPE(NODE_ID), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(5778) }, /* IAS CIE address */ \
{ 0x0011, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0xff) }, /* Zone ID */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Wake on LAN (server) */ \
- { 0x0000, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(4761) }, /* wake on lan mac address */ \
+ { 0x0000, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(5786) }, /* wake on lan mac address */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: TV Channel (server) */ \
- { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(4794) }, /* tv channel list */ \
- { 0x0001, ZAP_TYPE(OCTET_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(5048) }, /* tv channel lineup */ \
- { 0x0002, ZAP_TYPE(OCTET_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(5081) }, /* current tv channel */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(5819) }, /* tv channel list */ \
+ { 0x0001, ZAP_TYPE(OCTET_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(6073) }, /* tv channel lineup */ \
+ { 0x0002, ZAP_TYPE(OCTET_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(6106) }, /* current tv channel */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Target Navigator (server) */ \
- { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(5114) }, /* target navigator list */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(6139) }, /* target navigator list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Media Playback (server) */ \
{ 0x0000, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* playback state */ \
- { 0x0001, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(5368) }, /* start time */ \
- { 0x0002, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(5376) }, /* duration */ \
- { 0x0003, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(5384) }, /* position updated at */ \
- { 0x0004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(5392) }, /* position */ \
- { 0x0005, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(5400) }, /* playback speed */ \
- { 0x0006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(5408) }, /* seek range end */ \
- { 0x0007, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(5416) }, /* seek range start */ \
+ { 0x0001, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(6393) }, /* start time */ \
+ { 0x0002, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(6401) }, /* duration */ \
+ { 0x0003, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(6409) }, /* position updated at */ \
+ { 0x0004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(6417) }, /* position */ \
+ { 0x0005, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(6425) }, /* playback speed */ \
+ { 0x0006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(6433) }, /* seek range end */ \
+ { 0x0007, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(6441) }, /* seek range start */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Media Input (server) */ \
- { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(5424) }, /* media input list */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(6449) }, /* media input list */ \
{ 0x0001, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* current media input */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
@@ -2513,27 +2645,27 @@
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Content Launcher (server) */ \
- { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(5678) }, /* accepts header list */ \
- { 0x0001, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(5932) }, /* supported streaming types */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(6703) }, /* accepts header list */ \
+ { 0x0001, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(6957) }, /* supported streaming types */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Audio Output (server) */ \
- { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(6186) }, /* audio output list */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(7211) }, /* audio output list */ \
{ 0x0001, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* current audio output */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Application Launcher (server) */ \
- { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(6440) }, /* application launcher list */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(7465) }, /* application launcher list */ \
{ 0x0001, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* catalog vendor id */ \
{ 0x0002, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* application id */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Application Basic (server) */ \
- { 0x0000, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(6694) }, /* vendor name */ \
+ { 0x0000, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(7719) }, /* vendor name */ \
{ 0x0001, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* vendor id */ \
- { 0x0002, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(6727) }, /* application name */ \
+ { 0x0002, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(7752) }, /* application name */ \
{ 0x0003, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* product id */ \
- { 0x0005, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(6760) }, /* application id */ \
+ { 0x0005, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(7785) }, /* application id */ \
{ 0x0006, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* catalog vendor id */ \
{ 0x0007, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x01) }, /* application status */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
@@ -2545,46 +2677,46 @@
{ 0x0000, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(false) }, /* boolean */ \
{ 0x0001, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* bitmap8 */ \
{ 0x0002, ZAP_TYPE(BITMAP16), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* bitmap16 */ \
- { 0x0003, ZAP_TYPE(BITMAP32), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(6793) }, /* bitmap32 */ \
- { 0x0004, ZAP_TYPE(BITMAP64), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(6797) }, /* bitmap64 */ \
+ { 0x0003, ZAP_TYPE(BITMAP32), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(7818) }, /* bitmap32 */ \
+ { 0x0004, ZAP_TYPE(BITMAP64), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(7822) }, /* bitmap64 */ \
{ 0x0005, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* int8u */ \
{ 0x0006, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* int16u */ \
- { 0x0008, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(6805) }, /* int32u */ \
- { 0x000C, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(6809) }, /* int64u */ \
+ { 0x0008, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(7830) }, /* int32u */ \
+ { 0x000C, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(7834) }, /* int64u */ \
{ 0x000D, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* int8s */ \
{ 0x000E, ZAP_TYPE(INT16S), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* int16s */ \
- { 0x0010, ZAP_TYPE(INT32S), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(6817) }, /* int32s */ \
- { 0x0014, ZAP_TYPE(INT64S), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(6821) }, /* int64s */ \
+ { 0x0010, ZAP_TYPE(INT32S), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(7842) }, /* int32s */ \
+ { 0x0014, ZAP_TYPE(INT64S), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(7846) }, /* int64s */ \
{ 0x0015, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* enum8 */ \
{ 0x0016, ZAP_TYPE(ENUM16), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* enum16 */ \
{ 0x0019, ZAP_TYPE(OCTET_STRING), 11, ZAP_ATTRIBUTE_MASK(WRITABLE), \
- ZAP_LONG_DEFAULTS_INDEX(6829) }, /* octet_string */ \
- { 0x001A, ZAP_TYPE(ARRAY), 10, 0, ZAP_LONG_DEFAULTS_INDEX(6840) }, /* list_int8u */ \
- { 0x001B, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(6850) }, /* list_octet_string */ \
- { 0x001C, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(7104) }, /* list_struct_octet_string */ \
+ ZAP_LONG_DEFAULTS_INDEX(7854) }, /* octet_string */ \
+ { 0x001A, ZAP_TYPE(ARRAY), 10, 0, ZAP_LONG_DEFAULTS_INDEX(7865) }, /* list_int8u */ \
+ { 0x001B, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(7875) }, /* list_octet_string */ \
+ { 0x001C, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(8129) }, /* list_struct_octet_string */ \
{ 0x001D, ZAP_TYPE(LONG_OCTET_STRING), 1002, ZAP_ATTRIBUTE_MASK(WRITABLE), \
- ZAP_LONG_DEFAULTS_INDEX(7358) }, /* long_octet_string */ \
- { 0x001E, ZAP_TYPE(CHAR_STRING), 11, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(8360) }, /* char_string */ \
+ ZAP_LONG_DEFAULTS_INDEX(8383) }, /* long_octet_string */ \
+ { 0x001E, ZAP_TYPE(CHAR_STRING), 11, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(9385) }, /* char_string */ \
{ 0x001F, ZAP_TYPE(LONG_CHAR_STRING), 1002, ZAP_ATTRIBUTE_MASK(WRITABLE), \
- ZAP_LONG_DEFAULTS_INDEX(8371) }, /* long_char_string */ \
- { 0x0020, ZAP_TYPE(EPOCH_US), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(9373) }, /* epoch_us */ \
- { 0x0021, ZAP_TYPE(EPOCH_S), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(9381) }, /* epoch_s */ \
- { 0x0022, ZAP_TYPE(VENDOR_ID), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_EMPTY_DEFAULT() }, /* vendor_id */ \
- { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
+ ZAP_LONG_DEFAULTS_INDEX(9396) }, /* long_char_string */ \
+ { 0x0020, ZAP_TYPE(EPOCH_US), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(10398) }, /* epoch_us */ \
+ { 0x0021, ZAP_TYPE(EPOCH_S), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(10406) }, /* epoch_s */ \
+ { 0x0022, ZAP_TYPE(VENDOR_ID), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_EMPTY_DEFAULT() }, /* vendor_id */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Electrical Measurement (server) */ \
- { 0x0000, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(9385) }, /* measurement type */ \
- { 0x0304, ZAP_TYPE(INT32S), 4, 0, ZAP_LONG_DEFAULTS_INDEX(9389) }, /* total active power */ \
- { 0x0505, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* rms voltage */ \
- { 0x0506, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x8000) }, /* rms voltage min */ \
- { 0x0507, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x8000) }, /* rms voltage max */ \
- { 0x0508, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* rms current */ \
- { 0x0509, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* rms current min */ \
- { 0x050A, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* rms current max */ \
- { 0x050B, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* active power */ \
- { 0x050C, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* active power min */ \
- { 0x050D, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* active power max */ \
- { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* ClusterRevision */ \
+ { 0x0000, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(10410) }, /* measurement type */ \
+ { 0x0304, ZAP_TYPE(INT32S), 4, 0, ZAP_LONG_DEFAULTS_INDEX(10414) }, /* total active power */ \
+ { 0x0505, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* rms voltage */ \
+ { 0x0506, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x8000) }, /* rms voltage min */ \
+ { 0x0507, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x8000) }, /* rms voltage max */ \
+ { 0x0508, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* rms current */ \
+ { 0x0509, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* rms current min */ \
+ { 0x050A, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* rms current max */ \
+ { 0x050B, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* active power */ \
+ { 0x050C, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* active power min */ \
+ { 0x050D, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0xffff) }, /* active power max */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* ClusterRevision */ \
\
/* Endpoint: 1, Cluster: Binding (server) */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
@@ -2595,7 +2727,7 @@
{ 0x4001, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* OnTime */ \
{ 0x4002, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) }, /* OffWaitTime */ \
{ 0x4003, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_EMPTY_DEFAULT() }, /* StartUpOnOff */ \
- { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(9393) }, /* FeatureMap */ \
+ { 0xFFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(10418) }, /* FeatureMap */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(4) }, /* ClusterRevision */ \
\
/* Endpoint: 2, Cluster: Descriptor (server) */ \
@@ -2671,7 +2803,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 63
+#define GENERATED_CLUSTER_COUNT 64
#define GENERATED_CLUSTERS \
{ \
{ 0x0003, \
@@ -2789,136 +2921,139 @@
0x001D, ZAP_ATTRIBUTE_INDEX(188), 5, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
- 0x002F, ZAP_ATTRIBUTE_INDEX(193), 11, 88, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0025, ZAP_ATTRIBUTE_INDEX(193), 4, 1027, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 1, Cluster: Bridged Actions (server) */ \
+ { \
+ 0x002F, ZAP_ATTRIBUTE_INDEX(197), 11, 88, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Power Source (server) */ \
{ \
- 0x0039, ZAP_ATTRIBUTE_INDEX(204), 15, 865, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0039, ZAP_ATTRIBUTE_INDEX(208), 15, 865, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Bridged Device Basic (server) */ \
{ \
- 0x003B, ZAP_ATTRIBUTE_INDEX(219), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x003B, ZAP_ATTRIBUTE_INDEX(223), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Switch (server) */ \
{ \
- 0x0040, ZAP_ATTRIBUTE_INDEX(222), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0040, ZAP_ATTRIBUTE_INDEX(226), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Fixed Label (server) */ \
{ \
- 0x0045, ZAP_ATTRIBUTE_INDEX(224), 2, 3, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0045, ZAP_ATTRIBUTE_INDEX(228), 2, 3, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Boolean State (server) */ \
{ 0x0101, \
- ZAP_ATTRIBUTE_INDEX(226), \
+ ZAP_ATTRIBUTE_INDEX(230), \
4, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayDoorLockServer }, /* Endpoint: 1, Cluster: Door Lock (server) */ \
{ \
- 0x0102, ZAP_ATTRIBUTE_INDEX(230), 20, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0102, ZAP_ATTRIBUTE_INDEX(234), 20, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Window Covering (server) */ \
{ \
- 0x0103, ZAP_ATTRIBUTE_INDEX(250), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0103, ZAP_ATTRIBUTE_INDEX(254), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Barrier Control (server) */ \
{ \
0x0200, \
- ZAP_ATTRIBUTE_INDEX(255), \
+ ZAP_ATTRIBUTE_INDEX(259), \
24, \
48, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayPumpConfigurationAndControlServer \
}, /* Endpoint: 1, Cluster: Pump Configuration and Control (server) */ \
{ \
- 0x0201, ZAP_ATTRIBUTE_INDEX(279), 19, 34, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0201, ZAP_ATTRIBUTE_INDEX(283), 19, 34, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Thermostat (server) */ \
{ \
- 0x0204, ZAP_ATTRIBUTE_INDEX(298), 4, 5, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0204, ZAP_ATTRIBUTE_INDEX(302), 4, 5, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Thermostat User Interface Configuration (server) */ \
{ 0x0300, \
- ZAP_ATTRIBUTE_INDEX(302), \
+ ZAP_ATTRIBUTE_INDEX(306), \
53, \
341, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayColorControlServer }, /* Endpoint: 1, Cluster: Color Control (server) */ \
{ \
- 0x0400, ZAP_ATTRIBUTE_INDEX(355), 6, 11, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0400, ZAP_ATTRIBUTE_INDEX(359), 6, 11, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Illuminance Measurement (server) */ \
{ \
- 0x0402, ZAP_ATTRIBUTE_INDEX(361), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(365), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \
{ \
- 0x0403, ZAP_ATTRIBUTE_INDEX(366), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0403, ZAP_ATTRIBUTE_INDEX(370), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Pressure Measurement (server) */ \
{ \
- 0x0404, ZAP_ATTRIBUTE_INDEX(370), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0404, ZAP_ATTRIBUTE_INDEX(374), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Flow Measurement (server) */ \
{ \
- 0x0405, ZAP_ATTRIBUTE_INDEX(375), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0405, ZAP_ATTRIBUTE_INDEX(379), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Relative Humidity Measurement (server) */ \
{ 0x0406, \
- ZAP_ATTRIBUTE_INDEX(380), \
+ ZAP_ATTRIBUTE_INDEX(384), \
4, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOccupancySensingServer }, /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \
{ 0x0500, \
- ZAP_ATTRIBUTE_INDEX(384), \
+ ZAP_ATTRIBUTE_INDEX(388), \
6, \
16, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION) | \
ZAP_CLUSTER_MASK(MESSAGE_SENT_FUNCTION), \
chipFuncArrayIasZoneServer }, /* Endpoint: 1, Cluster: IAS Zone (server) */ \
{ \
- 0x0503, ZAP_ATTRIBUTE_INDEX(390), 2, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0503, ZAP_ATTRIBUTE_INDEX(394), 2, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Wake on LAN (server) */ \
{ \
- 0x0504, ZAP_ATTRIBUTE_INDEX(392), 4, 322, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0504, ZAP_ATTRIBUTE_INDEX(396), 4, 322, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: TV Channel (server) */ \
{ \
- 0x0505, ZAP_ATTRIBUTE_INDEX(396), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0505, ZAP_ATTRIBUTE_INDEX(400), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Target Navigator (server) */ \
{ \
- 0x0506, ZAP_ATTRIBUTE_INDEX(398), 9, 59, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0506, ZAP_ATTRIBUTE_INDEX(402), 9, 59, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Media Playback (server) */ \
{ \
- 0x0507, ZAP_ATTRIBUTE_INDEX(407), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0507, ZAP_ATTRIBUTE_INDEX(411), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Media Input (server) */ \
{ \
- 0x0508, ZAP_ATTRIBUTE_INDEX(410), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0508, ZAP_ATTRIBUTE_INDEX(414), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Low Power (server) */ \
{ \
- 0x0509, ZAP_ATTRIBUTE_INDEX(411), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0509, ZAP_ATTRIBUTE_INDEX(415), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Keypad Input (server) */ \
{ \
- 0x050A, ZAP_ATTRIBUTE_INDEX(412), 3, 510, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050A, ZAP_ATTRIBUTE_INDEX(416), 3, 510, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Content Launcher (server) */ \
{ \
- 0x050B, ZAP_ATTRIBUTE_INDEX(415), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050B, ZAP_ATTRIBUTE_INDEX(419), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Audio Output (server) */ \
{ \
- 0x050C, ZAP_ATTRIBUTE_INDEX(418), 4, 258, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050C, ZAP_ATTRIBUTE_INDEX(422), 4, 258, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Application Launcher (server) */ \
{ \
- 0x050D, ZAP_ATTRIBUTE_INDEX(422), 8, 108, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050D, ZAP_ATTRIBUTE_INDEX(426), 8, 108, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Application Basic (server) */ \
{ \
- 0x050E, ZAP_ATTRIBUTE_INDEX(430), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050E, ZAP_ATTRIBUTE_INDEX(434), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Account Login (server) */ \
{ \
- 0x050F, ZAP_ATTRIBUTE_INDEX(431), 26, 2609, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050F, ZAP_ATTRIBUTE_INDEX(435), 26, 2609, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Test Cluster (server) */ \
{ \
- 0x0B04, ZAP_ATTRIBUTE_INDEX(457), 12, 28, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0B04, ZAP_ATTRIBUTE_INDEX(461), 12, 28, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Electrical Measurement (server) */ \
{ \
- 0xF000, ZAP_ATTRIBUTE_INDEX(469), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0xF000, ZAP_ATTRIBUTE_INDEX(473), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Binding (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(470), \
+ ZAP_ATTRIBUTE_INDEX(474), \
7, \
13, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 2, Cluster: On/Off (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(477), 5, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(481), 5, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 2, Cluster: Descriptor (server) */ \
{ 0x0406, \
- ZAP_ATTRIBUTE_INDEX(482), \
+ ZAP_ATTRIBUTE_INDEX(486), \
4, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
@@ -2930,7 +3065,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 18, 3376 }, { ZAP_CLUSTER_INDEX(18), 42, 6531 }, { ZAP_CLUSTER_INDEX(60), 3, 20 }, \
+ { ZAP_CLUSTER_INDEX(0), 18, 3376 }, { ZAP_CLUSTER_INDEX(18), 43, 7558 }, { ZAP_CLUSTER_INDEX(61), 3, 20 }, \
}
// Largest attribute size is needed for various buffers
@@ -2940,7 +3075,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (1518)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (9927)
+#define ATTRIBUTE_MAX_SIZE (10954)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (3)
diff --git a/zzz_generated/all-clusters-app/zap-generated/gen_config.h b/zzz_generated/all-clusters-app/zap-generated/gen_config.h
index 9f041cfc66ebb5..746bc965fbe3c6 100644
--- a/zzz_generated/all-clusters-app/zap-generated/gen_config.h
+++ b/zzz_generated/all-clusters-app/zap-generated/gen_config.h
@@ -39,6 +39,7 @@
#define EMBER_AF_BINARY_INPUT_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (2)
#define EMBER_AF_BOOLEAN_STATE_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BRIDGED_ACTIONS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_BRIDGED_DEVICE_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_COLOR_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_CONTENT_LAUNCH_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -138,6 +139,11 @@
#define EMBER_AF_PLUGIN_BOOLEAN_STATE_SERVER
#define EMBER_AF_PLUGIN_BOOLEAN_STATE
+// Use this macro to check if the server side of the Bridged Actions cluster is included
+#define ZCL_USING_BRIDGED_ACTIONS_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BRIDGED_ACTIONS_SERVER
+#define EMBER_AF_PLUGIN_BRIDGED_ACTIONS
+
// Use this macro to check if the server side of the Bridged Device Basic cluster is included
#define ZCL_USING_BRIDGED_DEVICE_BASIC_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_BRIDGED_DEVICE_BASIC_SERVER
diff --git a/zzz_generated/app-common/app-common/zap-generated/af-structs.h b/zzz_generated/app-common/app-common/zap-generated/af-structs.h
index 9f16baeb22134f..4cb40cad315e51 100644
--- a/zzz_generated/app-common/app-common/zap-generated/af-structs.h
+++ b/zzz_generated/app-common/app-common/zap-generated/af-structs.h
@@ -97,6 +97,17 @@ typedef struct _ContentLaunchParamater
/* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList;
} ContentLaunchParamater;
+// Struct for ActionStruct
+typedef struct _ActionStruct
+{
+ uint16_t ActionID;
+ chip::CharSpan Name;
+ uint8_t Type;
+ uint16_t EndpointListID;
+ uint16_t SupportedCommands;
+ uint8_t Status;
+} ActionStruct;
+
// Struct for ApplicationLauncherApp
typedef struct _ApplicationLauncherApp
{
@@ -166,6 +177,15 @@ typedef struct _DeviceType
uint16_t revision;
} DeviceType;
+// Struct for EndpointListStruct
+typedef struct _EndpointListStruct
+{
+ uint16_t EndpointListID;
+ chip::CharSpan Name;
+ uint8_t Type;
+ chip::ByteSpan Endpoints;
+} EndpointListStruct;
+
// Struct for FabricDescriptor
typedef struct _FabricDescriptor
{
diff --git a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h
index 46cd927b41bbec..35d99058096d69 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h
@@ -255,6 +255,15 @@
#define ZCL_LONG_POLL_INTERVAL_MIN_ATTRIBUTE_ID (0x0005)
#define ZCL_FAST_POLL_TIMEOUT_MAX_ATTRIBUTE_ID (0x0006)
+// Attribute ids for cluster: Bridged Actions
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ACTION_LIST_ATTRIBUTE_ID (0x0000)
+#define ZCL_ENDPOINT_LIST_ATTRIBUTE_ID (0x0001)
+#define ZCL_SETUP_URL_ATTRIBUTE_ID (0x0002)
+
// Attribute ids for cluster: Basic
// Client attributes
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
index 53e019b35b9ec5..9f3a43c7ff3769 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
@@ -1985,6 +1985,35 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
} // namespace Attributes
} // namespace PollControl
+namespace BridgedActions {
+namespace Attributes {
+
+namespace SetupUrl {
+
+EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
+{
+ VerifyOrReturnError(value.size() == 512, EMBER_ZCL_STATUS_INVALID_ARGUMENT);
+ uint8_t zclString[512 + 1];
+ EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BridgedActions::Id, Id, zclString, sizeof(zclString));
+ VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
+ memcpy(value.data(), &zclString[1], 512);
+ value.reduce_size(emberAfStringLength(zclString));
+ return status;
+}
+EmberAfStatus Set(chip::EndpointId endpoint, chip::CharSpan value)
+{
+ VerifyOrReturnError(value.size() <= 512, EMBER_ZCL_STATUS_INVALID_ARGUMENT);
+ uint8_t zclString[512 + 1];
+ emberAfCopyInt8u(zclString, 0, static_cast(value.size()));
+ memcpy(&zclString[1], value.data(), value.size());
+ return emberAfWriteServerAttribute(endpoint, Clusters::BridgedActions::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+}
+
+} // namespace SetupUrl
+
+} // namespace Attributes
+} // namespace BridgedActions
+
namespace Basic {
namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
index f6e9e2f7ad5284..dad7862640f4ad 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
@@ -786,6 +786,17 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value);
} // namespace Attributes
} // namespace PollControl
+namespace BridgedActions {
+namespace Attributes {
+
+namespace SetupUrl {
+EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value); // char_string
+EmberAfStatus Set(chip::EndpointId endpoint, chip::CharSpan value);
+} // namespace SetupUrl
+
+} // namespace Attributes
+} // namespace BridgedActions
+
namespace Basic {
namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h
index 165084b9c3b120..8555176f51251b 100644
--- a/zzz_generated/app-common/app-common/zap-generated/callback.h
+++ b/zzz_generated/app-common/app-common/zap-generated/callback.h
@@ -166,6 +166,14 @@ void emberAfDescriptorClusterInitCallback(chip::EndpointId endpoint);
*/
void emberAfPollControlClusterInitCallback(chip::EndpointId endpoint);
+/** @brief Bridged Actions Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBridgedActionsClusterInitCallback(chip::EndpointId endpoint);
+
/** @brief Basic Cluster Init
*
* Cluster Init
@@ -2462,6 +2470,112 @@ void emberAfPollControlClusterServerTickCallback(chip::EndpointId endpoint);
*/
void emberAfPollControlClusterClientTickCallback(chip::EndpointId endpoint);
+//
+// Bridged Actions Cluster
+//
+
+/** @brief Bridged Actions Cluster Server Init
+ *
+ * Server Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBridgedActionsClusterServerInitCallback(chip::EndpointId endpoint);
+
+/** @brief Bridged Actions Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBridgedActionsClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Bridged Actions Cluster Server Attribute Changed
+ *
+ * Server Attribute Changed
+ *
+ * @param attributePath Concrete attribute path that changed
+ */
+void MatterBridgedActionsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);
+
+/** @brief Bridged Actions Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param attributePath Concrete attribute path that changed
+ */
+void MatterBridgedActionsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);
+
+/** @brief Bridged Actions Cluster Server Message Sent
+ *
+ * Server Message Sent
+ *
+ * @param destination The destination to which the message was sent
+ * @param apsFrame The APS frame for the message
+ * @param msgLen The length of the message
+ * @param message The message that was sent
+ * @param status The status of the sent message
+ */
+void emberAfBridgedActionsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Bridged Actions Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param destination The destination to which the message was sent
+ * @param apsFrame The APS frame for the message
+ * @param msgLen The length of the message
+ * @param message The message that was sent
+ * @param status The status of the sent message
+ */
+void emberAfBridgedActionsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Bridged Actions Cluster Server Pre Attribute Changed
+ *
+ * Server Pre Attribute Changed
+ *
+ * @param attributePath Concrete attribute path to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+chip::Protocols::InteractionModel::Status
+MatterBridgedActionsClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
+ EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
+
+/** @brief Bridged Actions Cluster Client Pre Attribute Changed
+ *
+ * Client Pre Attribute Changed
+ *
+ * @param attributePath Concrete attribute path to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+chip::Protocols::InteractionModel::Status
+MatterBridgedActionsClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
+ EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
+
+/** @brief Bridged Actions Cluster Server Tick
+ *
+ * Server Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfBridgedActionsClusterServerTickCallback(chip::EndpointId endpoint);
+
+/** @brief Bridged Actions Cluster Client Tick
+ *
+ * Client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfBridgedActionsClusterClientTickCallback(chip::EndpointId endpoint);
+
//
// Basic Cluster
//
@@ -12553,6 +12667,78 @@ bool emberAfPollControlClusterSetLongPollIntervalCallback(
bool emberAfPollControlClusterSetShortPollIntervalCallback(
chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
const chip::app::Clusters::PollControl::Commands::SetShortPollInterval::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster InstantAction Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterInstantActionCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::InstantAction::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster InstantActionWithTransition Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterInstantActionWithTransitionCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::InstantActionWithTransition::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster StartAction Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterStartActionCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::StartAction::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster StartActionWithDuration Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterStartActionWithDurationCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::StartActionWithDuration::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster StopAction Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterStopActionCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::StopAction::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster PauseAction Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterPauseActionCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::PauseAction::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster PauseActionWithDuration Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterPauseActionWithDurationCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::PauseActionWithDuration::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster ResumeAction Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterResumeActionCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::ResumeAction::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster EnableAction Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterEnableActionCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::EnableAction::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster EnableActionWithDuration Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterEnableActionWithDurationCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::EnableActionWithDuration::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster DisableAction Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterDisableActionCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::DisableAction::DecodableType & commandData);
+/**
+ * @brief Bridged Actions Cluster DisableActionWithDuration Command callback (from client)
+ */
+bool emberAfBridgedActionsClusterDisableActionWithDurationCallback(
+ chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
+ const chip::app::Clusters::BridgedActions::Commands::DisableActionWithDuration::DecodableType & commandData);
/**
* @brief Basic Cluster StartUp Command callback (from server)
*/
diff --git a/zzz_generated/app-common/app-common/zap-generated/callbacks/PluginCallbacks.h b/zzz_generated/app-common/app-common/zap-generated/callbacks/PluginCallbacks.h
index 29f7d84332c1b8..c50da586139b02 100644
--- a/zzz_generated/app-common/app-common/zap-generated/callbacks/PluginCallbacks.h
+++ b/zzz_generated/app-common/app-common/zap-generated/callbacks/PluginCallbacks.h
@@ -64,6 +64,9 @@ void __attribute__((weak)) MatterDescriptorPluginServerInitCallback(){};
void __attribute__((weak)) MatterPollControlPluginClientInitCallback(){};
void __attribute__((weak)) MatterPollControlPluginServerInitCallback(){};
+void __attribute__((weak)) MatterBridgedActionsPluginClientInitCallback(){};
+void __attribute__((weak)) MatterBridgedActionsPluginServerInitCallback(){};
+
void __attribute__((weak)) MatterBasicPluginClientInitCallback(){};
void __attribute__((weak)) MatterBasicPluginServerInitCallback(){};
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-id.h b/zzz_generated/app-common/app-common/zap-generated/cluster-id.h
index c5bf185911543d..d6ef5d57cbb968 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-id.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-id.h
@@ -67,6 +67,9 @@ static constexpr chip::ClusterId ZCL_DESCRIPTOR_CLUSTER_ID = 0x001D;
// Definitions for cluster: Poll Control
static constexpr chip::ClusterId ZCL_POLL_CONTROL_CLUSTER_ID = 0x0020;
+// Definitions for cluster: Bridged Actions
+static constexpr chip::ClusterId ZCL_BRIDGED_ACTIONS_CLUSTER_ID = 0x0025;
+
// Definitions for cluster: Basic
static constexpr chip::ClusterId ZCL_BASIC_CLUSTER_ID = 0x0028;
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
index 3f262128adf0ae..c13c1d0bf235ad 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
@@ -3905,6 +3905,597 @@ namespace Events {
} // namespace Events
} // namespace PollControl
+namespace BridgedActions {
+namespace Structs {
+namespace ActionStruct {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kName)), name));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kType)), type));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kEndpointListID)), endpointListID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kSupportedCommands)), supportedCommands));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kStatus)), status));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ err = reader.EnterContainer(outer);
+ ReturnErrorOnFailure(err);
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kName):
+ ReturnErrorOnFailure(DataModel::Decode(reader, name));
+ break;
+ case to_underlying(Fields::kType):
+ ReturnErrorOnFailure(DataModel::Decode(reader, type));
+ break;
+ case to_underlying(Fields::kEndpointListID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, endpointListID));
+ break;
+ case to_underlying(Fields::kSupportedCommands):
+ ReturnErrorOnFailure(DataModel::Decode(reader, supportedCommands));
+ break;
+ case to_underlying(Fields::kStatus):
+ ReturnErrorOnFailure(DataModel::Decode(reader, status));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+} // namespace ActionStruct
+namespace EndpointListStruct {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kEndpointListID)), endpointListID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kName)), name));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kType)), type));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kEndpoints)), endpoints));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ err = reader.EnterContainer(outer);
+ ReturnErrorOnFailure(err);
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kEndpointListID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, endpointListID));
+ break;
+ case to_underlying(Fields::kName):
+ ReturnErrorOnFailure(DataModel::Decode(reader, name));
+ break;
+ case to_underlying(Fields::kType):
+ ReturnErrorOnFailure(DataModel::Decode(reader, type));
+ break;
+ case to_underlying(Fields::kEndpoints):
+ ReturnErrorOnFailure(DataModel::Decode(reader, endpoints));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+} // namespace EndpointListStruct
+} // namespace Structs
+
+namespace Commands {
+namespace InstantAction {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace InstantAction.
+namespace InstantActionWithTransition {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kTransitionTime)), transitionTime));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ case to_underlying(Fields::kTransitionTime):
+ ReturnErrorOnFailure(DataModel::Decode(reader, transitionTime));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace InstantActionWithTransition.
+namespace StartAction {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace StartAction.
+namespace StartActionWithDuration {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kDuration)), duration));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ case to_underlying(Fields::kDuration):
+ ReturnErrorOnFailure(DataModel::Decode(reader, duration));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace StartActionWithDuration.
+namespace StopAction {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace StopAction.
+namespace PauseAction {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace PauseAction.
+namespace PauseActionWithDuration {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kDuration)), duration));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ case to_underlying(Fields::kDuration):
+ ReturnErrorOnFailure(DataModel::Decode(reader, duration));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace PauseActionWithDuration.
+namespace ResumeAction {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace ResumeAction.
+namespace EnableAction {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace EnableAction.
+namespace EnableActionWithDuration {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kDuration)), duration));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ case to_underlying(Fields::kDuration):
+ ReturnErrorOnFailure(DataModel::Decode(reader, duration));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace EnableActionWithDuration.
+namespace DisableAction {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace DisableAction.
+namespace DisableActionWithDuration {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
+{
+ TLV::TLVType outer;
+ ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kActionID)), actionID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kInvokeID)), invokeID));
+ ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kDuration)), duration));
+ ReturnErrorOnFailure(writer.EndContainer(outer));
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVType outer;
+ VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
+ ReturnErrorOnFailure(reader.EnterContainer(outer));
+ while ((err = reader.Next()) == CHIP_NO_ERROR)
+ {
+ VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG);
+ switch (TLV::TagNumFromTag(reader.GetTag()))
+ {
+ case to_underlying(Fields::kActionID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, actionID));
+ break;
+ case to_underlying(Fields::kInvokeID):
+ ReturnErrorOnFailure(DataModel::Decode(reader, invokeID));
+ break;
+ case to_underlying(Fields::kDuration):
+ ReturnErrorOnFailure(DataModel::Decode(reader, duration));
+ break;
+ default:
+ break;
+ }
+ }
+
+ VerifyOrReturnError(err == CHIP_END_OF_TLV, err);
+ ReturnErrorOnFailure(reader.ExitContainer(outer));
+ return CHIP_NO_ERROR;
+}
+} // namespace DisableActionWithDuration.
+} // namespace Commands
+
+namespace Events {
+} // namespace Events
+
+} // namespace BridgedActions
namespace Basic {
namespace Commands {
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
index f4754dc19fce03..b1844504fa0728 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
@@ -4961,6 +4961,579 @@ struct TypeInfo
} // namespace ClusterRevision
} // namespace Attributes
} // namespace PollControl
+namespace BridgedActions {
+// Need to convert consumers to using the new enum classes, so we
+// don't just have casts all over.
+#ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
+// Enum for ActionErrorEnum
+enum class ActionErrorEnum : uint8_t
+{
+ kUnknown = 0x00,
+ kInterrupted = 0x01,
+};
+#else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
+using ActionErrorEnum = EmberAfActionErrorEnum;
+#endif
+// Need to convert consumers to using the new enum classes, so we
+// don't just have casts all over.
+#ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
+// Enum for ActionStatusEnum
+enum class ActionStatusEnum : uint8_t
+{
+ kInactive = 0x00,
+ kActive = 0x01,
+ kPaused = 0x02,
+ kDisabled = 0x03,
+};
+#else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
+using ActionStatusEnum = EmberAfActionStatusEnum;
+#endif
+// Need to convert consumers to using the new enum classes, so we
+// don't just have casts all over.
+#ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
+// Enum for ActionTypeEnum
+enum class ActionTypeEnum : uint8_t
+{
+ kOther = 0x00,
+ kScene = 0x01,
+ kSequence = 0x02,
+ kAutomation = 0x03,
+ kException = 0x04,
+ kNotification = 0x05,
+ kAlarm = 0x06,
+};
+#else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
+using ActionTypeEnum = EmberAfActionTypeEnum;
+#endif
+// Need to convert consumers to using the new enum classes, so we
+// don't just have casts all over.
+#ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
+// Enum for EndpointListTypeEnum
+enum class EndpointListTypeEnum : uint8_t
+{
+ kOther = 0x00,
+ kRoom = 0x01,
+ kZone = 0x02,
+};
+#else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
+using EndpointListTypeEnum = EmberAfEndpointListTypeEnum;
+#endif
+
+// Bitmap for CommandBits
+enum class CommandBits : uint16_t
+{
+ kInstantAction = 0,
+ kInstantActionWithTransition = 1,
+ kStartAction = 2,
+ kStartActionWithDuration = 3,
+ kStopAction = 4,
+ kPauseAction = 5,
+ kPauseActionWithDuration = 6,
+ kResumeAction = 7,
+ kEnableAction = 8,
+ kEnableActionWithDuration = 9,
+ kDisableAction = 10,
+ kDisableActionWithDuration = 11,
+};
+
+namespace Structs {
+namespace ActionStruct {
+enum class Fields
+{
+ kActionID = 0,
+ kName = 1,
+ kType = 2,
+ kEndpointListID = 3,
+ kSupportedCommands = 4,
+ kStatus = 5,
+};
+
+struct Type
+{
+public:
+ uint16_t actionID;
+ chip::CharSpan name;
+ ActionTypeEnum type;
+ uint16_t endpointListID;
+ uint16_t supportedCommands;
+ ActionStatusEnum status;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+
+using DecodableType = Type;
+
+} // namespace ActionStruct
+namespace EndpointListStruct {
+enum class Fields
+{
+ kEndpointListID = 0,
+ kName = 1,
+ kType = 2,
+ kEndpoints = 3,
+};
+
+struct Type
+{
+public:
+ uint16_t endpointListID;
+ chip::CharSpan name;
+ EndpointListTypeEnum type;
+ chip::ByteSpan endpoints;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+
+using DecodableType = Type;
+
+} // namespace EndpointListStruct
+} // namespace Structs
+
+namespace Commands {
+namespace InstantAction {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::InstantAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::InstantAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace InstantAction
+namespace InstantActionWithTransition {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+ kTransitionTime = 2,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::InstantActionWithTransition::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint16_t transitionTime;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::InstantActionWithTransition::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint16_t transitionTime;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace InstantActionWithTransition
+namespace StartAction {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::StartAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::StartAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace StartAction
+namespace StartActionWithDuration {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+ kDuration = 2,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::StartActionWithDuration::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint32_t duration;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::StartActionWithDuration::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint32_t duration;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace StartActionWithDuration
+namespace StopAction {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::StopAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::StopAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace StopAction
+namespace PauseAction {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::PauseAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::PauseAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace PauseAction
+namespace PauseActionWithDuration {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+ kDuration = 2,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::PauseActionWithDuration::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint32_t duration;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::PauseActionWithDuration::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint32_t duration;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace PauseActionWithDuration
+namespace ResumeAction {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::ResumeAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::ResumeAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace ResumeAction
+namespace EnableAction {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::EnableAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::EnableAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace EnableAction
+namespace EnableActionWithDuration {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+ kDuration = 2,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::EnableActionWithDuration::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint32_t duration;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::EnableActionWithDuration::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint32_t duration;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace EnableActionWithDuration
+namespace DisableAction {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::DisableAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::DisableAction::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace DisableAction
+namespace DisableActionWithDuration {
+enum class Fields
+{
+ kActionID = 0,
+ kInvokeID = 1,
+ kDuration = 2,
+};
+
+struct Type
+{
+public:
+ // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
+ static constexpr CommandId GetCommandId() { return Commands::DisableActionWithDuration::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint32_t duration;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
+};
+
+struct DecodableType
+{
+public:
+ static constexpr CommandId GetCommandId() { return Commands::DisableActionWithDuration::Id; }
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+
+ uint16_t actionID;
+ Optional invokeID;
+ uint32_t duration;
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+};
+}; // namespace DisableActionWithDuration
+} // namespace Commands
+
+namespace Attributes {
+namespace ActionList {
+struct TypeInfo
+{
+ using Type = DataModel::List;
+ using DecodableType = DataModel::DecodableList;
+
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+ static constexpr AttributeId GetAttributeId() { return Attributes::ActionList::Id; }
+};
+} // namespace ActionList
+namespace EndpointList {
+struct TypeInfo
+{
+ using Type = DataModel::List;
+ using DecodableType = DataModel::DecodableList;
+
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+ static constexpr AttributeId GetAttributeId() { return Attributes::EndpointList::Id; }
+};
+} // namespace EndpointList
+namespace SetupUrl {
+struct TypeInfo
+{
+ using Type = chip::CharSpan;
+ using DecodableType = chip::CharSpan;
+
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+ static constexpr AttributeId GetAttributeId() { return Attributes::SetupUrl::Id; }
+};
+} // namespace SetupUrl
+namespace FeatureMap {
+struct TypeInfo
+{
+ using Type = uint32_t;
+ using DecodableType = uint32_t;
+
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+ static constexpr AttributeId GetAttributeId() { return Attributes::FeatureMap::Id; }
+};
+} // namespace FeatureMap
+namespace ClusterRevision {
+struct TypeInfo
+{
+ using Type = uint16_t;
+ using DecodableType = uint16_t;
+
+ static constexpr ClusterId GetClusterId() { return Clusters::BridgedActions::Id; }
+ static constexpr AttributeId GetAttributeId() { return Attributes::ClusterRevision::Id; }
+};
+} // namespace ClusterRevision
+} // namespace Attributes
+} // namespace BridgedActions
namespace Basic {
namespace Commands {
diff --git a/zzz_generated/app-common/app-common/zap-generated/command-id.h b/zzz_generated/app-common/app-common/zap-generated/command-id.h
index c7ca035095d600..2c95666f8e25d9 100644
--- a/zzz_generated/app-common/app-common/zap-generated/command-id.h
+++ b/zzz_generated/app-common/app-common/zap-generated/command-id.h
@@ -142,6 +142,20 @@
#define ZCL_SET_LONG_POLL_INTERVAL_COMMAND_ID (0x02)
#define ZCL_SET_SHORT_POLL_INTERVAL_COMMAND_ID (0x03)
+// Commands for cluster: Bridged Actions
+#define ZCL_INSTANT_ACTION_COMMAND_ID (0x00)
+#define ZCL_INSTANT_ACTION_WITH_TRANSITION_COMMAND_ID (0x01)
+#define ZCL_START_ACTION_COMMAND_ID (0x02)
+#define ZCL_START_ACTION_WITH_DURATION_COMMAND_ID (0x03)
+#define ZCL_STOP_ACTION_COMMAND_ID (0x04)
+#define ZCL_PAUSE_ACTION_COMMAND_ID (0x05)
+#define ZCL_PAUSE_ACTION_WITH_DURATION_COMMAND_ID (0x06)
+#define ZCL_RESUME_ACTION_COMMAND_ID (0x07)
+#define ZCL_ENABLE_ACTION_COMMAND_ID (0x08)
+#define ZCL_ENABLE_ACTION_WITH_DURATION_COMMAND_ID (0x09)
+#define ZCL_DISABLE_ACTION_COMMAND_ID (0x0A)
+#define ZCL_DISABLE_ACTION_WITH_DURATION_COMMAND_ID (0x0B)
+
// Commands for cluster: Basic
#define ZCL_START_UP_COMMAND_ID (0x00)
#define ZCL_MFG_SPECIFIC_PING_COMMAND_ID (0x00)
diff --git a/zzz_generated/app-common/app-common/zap-generated/enums.h b/zzz_generated/app-common/app-common/zap-generated/enums.h
index d76af314956aca..98ebd58c65bebf 100644
--- a/zzz_generated/app-common/app-common/zap-generated/enums.h
+++ b/zzz_generated/app-common/app-common/zap-generated/enums.h
@@ -24,6 +24,34 @@
// ZCL enums
+// Enum for ActionErrorEnum
+enum EmberAfActionErrorEnum : uint8_t
+{
+ EMBER_ZCL_ACTION_ERROR_ENUM_UNKNOWN = 0,
+ EMBER_ZCL_ACTION_ERROR_ENUM_INTERRUPTED = 1,
+};
+
+// Enum for ActionStatusEnum
+enum EmberAfActionStatusEnum : uint8_t
+{
+ EMBER_ZCL_ACTION_STATUS_ENUM_INACTIVE = 0,
+ EMBER_ZCL_ACTION_STATUS_ENUM_ACTIVE = 1,
+ EMBER_ZCL_ACTION_STATUS_ENUM_PAUSED = 2,
+ EMBER_ZCL_ACTION_STATUS_ENUM_DISABLED = 3,
+};
+
+// Enum for ActionTypeEnum
+enum EmberAfActionTypeEnum : uint8_t
+{
+ EMBER_ZCL_ACTION_TYPE_ENUM_OTHER = 0,
+ EMBER_ZCL_ACTION_TYPE_ENUM_SCENE = 1,
+ EMBER_ZCL_ACTION_TYPE_ENUM_SEQUENCE = 2,
+ EMBER_ZCL_ACTION_TYPE_ENUM_AUTOMATION = 3,
+ EMBER_ZCL_ACTION_TYPE_ENUM_EXCEPTION = 4,
+ EMBER_ZCL_ACTION_TYPE_ENUM_NOTIFICATION = 5,
+ EMBER_ZCL_ACTION_TYPE_ENUM_ALARM = 6,
+};
+
// Enum for AlertCountType
enum EmberAfAlertCountType : uint8_t
{
@@ -465,6 +493,14 @@ enum EmberAfDoorState : uint8_t
EMBER_ZCL_DOOR_STATE_ERROR_UNSPECIFIED = 4,
};
+// Enum for EndpointListTypeEnum
+enum EmberAfEndpointListTypeEnum : uint8_t
+{
+ EMBER_ZCL_ENDPOINT_LIST_TYPE_ENUM_OTHER = 0,
+ EMBER_ZCL_ENDPOINT_LIST_TYPE_ENUM_ROOM = 1,
+ EMBER_ZCL_ENDPOINT_LIST_TYPE_ENUM_ZONE = 2,
+};
+
// Enum for EnhancedColorMode
enum EmberAfEnhancedColorMode : uint8_t
{
@@ -1694,6 +1730,30 @@ enum EmberAfWiredFaultType : uint8_t
#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_TIME_OFFSET (2)
#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_START_HUE (8)
#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_START_HUE_OFFSET (3)
+#define EMBER_AF_COMMAND_BITS_INSTANT_ACTION (1)
+#define EMBER_AF_COMMAND_BITS_INSTANT_ACTION_OFFSET (0)
+#define EMBER_AF_COMMAND_BITS_INSTANT_ACTION_WITH_TRANSITION (2)
+#define EMBER_AF_COMMAND_BITS_INSTANT_ACTION_WITH_TRANSITION_OFFSET (1)
+#define EMBER_AF_COMMAND_BITS_START_ACTION (4)
+#define EMBER_AF_COMMAND_BITS_START_ACTION_OFFSET (2)
+#define EMBER_AF_COMMAND_BITS_START_ACTION_WITH_DURATION (8)
+#define EMBER_AF_COMMAND_BITS_START_ACTION_WITH_DURATION_OFFSET (3)
+#define EMBER_AF_COMMAND_BITS_STOP_ACTION (16)
+#define EMBER_AF_COMMAND_BITS_STOP_ACTION_OFFSET (4)
+#define EMBER_AF_COMMAND_BITS_PAUSE_ACTION (32)
+#define EMBER_AF_COMMAND_BITS_PAUSE_ACTION_OFFSET (5)
+#define EMBER_AF_COMMAND_BITS_PAUSE_ACTION_WITH_DURATION (64)
+#define EMBER_AF_COMMAND_BITS_PAUSE_ACTION_WITH_DURATION_OFFSET (6)
+#define EMBER_AF_COMMAND_BITS_RESUME_ACTION (128)
+#define EMBER_AF_COMMAND_BITS_RESUME_ACTION_OFFSET (7)
+#define EMBER_AF_COMMAND_BITS_ENABLE_ACTION (256)
+#define EMBER_AF_COMMAND_BITS_ENABLE_ACTION_OFFSET (8)
+#define EMBER_AF_COMMAND_BITS_ENABLE_ACTION_WITH_DURATION (512)
+#define EMBER_AF_COMMAND_BITS_ENABLE_ACTION_WITH_DURATION_OFFSET (9)
+#define EMBER_AF_COMMAND_BITS_DISABLE_ACTION (1024)
+#define EMBER_AF_COMMAND_BITS_DISABLE_ACTION_OFFSET (10)
+#define EMBER_AF_COMMAND_BITS_DISABLE_ACTION_WITH_DURATION (2048)
+#define EMBER_AF_COMMAND_BITS_DISABLE_ACTION_WITH_DURATION_OFFSET (11)
#define EMBER_AF_DAY_OF_WEEK_SUNDAY (1)
#define EMBER_AF_DAY_OF_WEEK_SUNDAY_OFFSET (0)
#define EMBER_AF_DAY_OF_WEEK_MONDAY (2)
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
index 77baa6b1a2fb6a..d6caf97b4da906 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
@@ -805,6 +805,32 @@ static constexpr AttributeId Id = Globals::Attributes::ClusterRevision::Id;
} // namespace Attributes
} // namespace PollControl
+namespace BridgedActions {
+namespace Attributes {
+
+namespace ActionList {
+static constexpr AttributeId Id = 0x00000000;
+} // namespace ActionList
+
+namespace EndpointList {
+static constexpr AttributeId Id = 0x00000001;
+} // namespace EndpointList
+
+namespace SetupUrl {
+static constexpr AttributeId Id = 0x00000002;
+} // namespace SetupUrl
+
+namespace FeatureMap {
+static constexpr AttributeId Id = Globals::Attributes::FeatureMap::Id;
+} // namespace FeatureMap
+
+namespace ClusterRevision {
+static constexpr AttributeId Id = Globals::Attributes::ClusterRevision::Id;
+} // namespace ClusterRevision
+
+} // namespace Attributes
+} // namespace BridgedActions
+
namespace Basic {
namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h b/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h
index 9646729d0ec190..e24a0459275ea3 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h
@@ -70,6 +70,9 @@ static constexpr ClusterId Id = 0x0000001D;
namespace PollControl {
static constexpr ClusterId Id = 0x00000020;
} // namespace PollControl
+namespace BridgedActions {
+static constexpr ClusterId Id = 0x00000025;
+} // namespace BridgedActions
namespace Basic {
static constexpr ClusterId Id = 0x00000028;
} // namespace Basic
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
index faed693686ce08..1a410ef89662ce 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
@@ -449,6 +449,60 @@ static constexpr CommandId Id = 0x00000003;
} // namespace Commands
} // namespace PollControl
+namespace BridgedActions {
+namespace Commands {
+
+namespace InstantAction {
+static constexpr CommandId Id = 0x00000000;
+} // namespace InstantAction
+
+namespace InstantActionWithTransition {
+static constexpr CommandId Id = 0x00000001;
+} // namespace InstantActionWithTransition
+
+namespace StartAction {
+static constexpr CommandId Id = 0x00000002;
+} // namespace StartAction
+
+namespace StartActionWithDuration {
+static constexpr CommandId Id = 0x00000003;
+} // namespace StartActionWithDuration
+
+namespace StopAction {
+static constexpr CommandId Id = 0x00000004;
+} // namespace StopAction
+
+namespace PauseAction {
+static constexpr CommandId Id = 0x00000005;
+} // namespace PauseAction
+
+namespace PauseActionWithDuration {
+static constexpr CommandId Id = 0x00000006;
+} // namespace PauseActionWithDuration
+
+namespace ResumeAction {
+static constexpr CommandId Id = 0x00000007;
+} // namespace ResumeAction
+
+namespace EnableAction {
+static constexpr CommandId Id = 0x00000008;
+} // namespace EnableAction
+
+namespace EnableActionWithDuration {
+static constexpr CommandId Id = 0x00000009;
+} // namespace EnableActionWithDuration
+
+namespace DisableAction {
+static constexpr CommandId Id = 0x0000000A;
+} // namespace DisableAction
+
+namespace DisableActionWithDuration {
+static constexpr CommandId Id = 0x0000000B;
+} // namespace DisableActionWithDuration
+
+} // namespace Commands
+} // namespace BridgedActions
+
namespace Basic {
namespace Commands {
diff --git a/zzz_generated/app-common/app-common/zap-generated/print-cluster.h b/zzz_generated/app-common/app-common/zap-generated/print-cluster.h
index 1e20dcacddbe50..fdee6c771a5166 100644
--- a/zzz_generated/app-common/app-common/zap-generated/print-cluster.h
+++ b/zzz_generated/app-common/app-common/zap-generated/print-cluster.h
@@ -114,6 +114,12 @@
#define CHIP_PRINTCLUSTER_POLL_CONTROL_CLUSTER
#endif
+#if defined(ZCL_USING_BRIDGED_ACTIONS_CLUSTER_SERVER) || defined(ZCL_USING_BRIDGED_ACTIONS_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BRIDGED_ACTIONS_CLUSTER { ZCL_BRIDGED_ACTIONS_CLUSTER_ID, 37, "Bridged Actions" },
+#else
+#define CHIP_PRINTCLUSTER_BRIDGED_ACTIONS_CLUSTER
+#endif
+
#if defined(ZCL_USING_BASIC_CLUSTER_SERVER) || defined(ZCL_USING_BASIC_CLUSTER_CLIENT)
#define CHIP_PRINTCLUSTER_BASIC_CLUSTER { ZCL_BASIC_CLUSTER_ID, 40, "Basic" },
#else
@@ -748,6 +754,7 @@
CHIP_PRINTCLUSTER_APPLIANCE_CONTROL_CLUSTER \
CHIP_PRINTCLUSTER_DESCRIPTOR_CLUSTER \
CHIP_PRINTCLUSTER_POLL_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_BRIDGED_ACTIONS_CLUSTER \
CHIP_PRINTCLUSTER_BASIC_CLUSTER \
CHIP_PRINTCLUSTER_OTA_PROVIDER_CLUSTER \
CHIP_PRINTCLUSTER_OTA_REQUESTOR_CLUSTER \
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
index 6bf93c9e245575..894aa6f97f73ea 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
@@ -213,6 +213,75 @@ static void OnAudioOutputAudioOutputListListAttributeResponse(
command->SetCommandExitStatus(iter.GetStatus());
}
+static void OnBridgedActionsActionListListAttributeResponse(
+ void * context,
+ const chip::app::DataModel::DecodableList & list)
+{
+ ModelCommand * command = static_cast(context);
+
+ size_t count = 0;
+ CHIP_ERROR err = list.ComputeSize(&count);
+ if (err != CHIP_NO_ERROR)
+ {
+ command->SetCommandExitStatus(err);
+ return;
+ }
+
+ ChipLogProgress(chipTool, "OnBridgedActionsActionListListAttributeResponse: %zu entries", count);
+
+ auto iter = list.begin();
+ uint16_t i = 0;
+ while (iter.Next())
+ {
+#if CHIP_PROGRESS_LOGGING
+ auto & entry = iter.GetValue();
+#endif // CHIP_PROGRESS_LOGGING
+ ++i;
+ ChipLogProgress(chipTool, "ActionStruct[%" PRIu16 "]:", i);
+ ChipLogProgress(chipTool, " actionID: %" PRIu16 "", entry.actionID);
+ ChipLogProgress(Zcl, " Name: %.*s", static_cast(entry.name.size()), entry.name.data());
+ ChipLogProgress(chipTool, " type: %" PRIu8 "", entry.type);
+ ChipLogProgress(chipTool, " endpointListID: %" PRIu16 "", entry.endpointListID);
+ ChipLogProgress(chipTool, " supportedCommands: %" PRIu16 "", entry.supportedCommands);
+ ChipLogProgress(chipTool, " status: %" PRIu8 "", entry.status);
+ }
+ command->SetCommandExitStatus(iter.GetStatus());
+}
+
+static void OnBridgedActionsEndpointListListAttributeResponse(
+ void * context,
+ const chip::app::DataModel::DecodableList &
+ list)
+{
+ ModelCommand * command = static_cast(context);
+
+ size_t count = 0;
+ CHIP_ERROR err = list.ComputeSize(&count);
+ if (err != CHIP_NO_ERROR)
+ {
+ command->SetCommandExitStatus(err);
+ return;
+ }
+
+ ChipLogProgress(chipTool, "OnBridgedActionsEndpointListListAttributeResponse: %zu entries", count);
+
+ auto iter = list.begin();
+ uint16_t i = 0;
+ while (iter.Next())
+ {
+#if CHIP_PROGRESS_LOGGING
+ auto & entry = iter.GetValue();
+#endif // CHIP_PROGRESS_LOGGING
+ ++i;
+ ChipLogProgress(chipTool, "EndpointListStruct[%" PRIu16 "]:", i);
+ ChipLogProgress(chipTool, " endpointListID: %" PRIu16 "", entry.endpointListID);
+ ChipLogProgress(Zcl, " Name: %.*s", static_cast(entry.name.size()), entry.name.data());
+ ChipLogProgress(chipTool, " type: %" PRIu8 "", entry.type);
+ ChipLogProgress(Zcl, " Endpoints: %zu", entry.endpoints.size());
+ }
+ command->SetCommandExitStatus(iter.GetStatus());
+}
+
static void
OnContentLauncherAcceptsHeaderListListAttributeResponse(void * context,
const chip::app::DataModel::DecodableList & list)
@@ -1883,6 +1952,7 @@ static void OnTestClusterTestSpecificResponseSuccess(
| BinaryInputBasic | 0x000F |
| Binding | 0xF000 |
| BooleanState | 0x0045 |
+| BridgedActions | 0x0025 |
| BridgedDeviceBasic | 0x0039 |
| ColorControl | 0x0300 |
| ContentLauncher | 0x050A |
@@ -4363,6 +4433,485 @@ class ReadBooleanStateClusterRevision : public ModelCommand
new chip::Callback::Callback(OnDefaultFailureResponse, this);
};
+/*----------------------------------------------------------------------------*\
+| Cluster BridgedActions | 0x0025 |
+|------------------------------------------------------------------------------|
+| Commands: | |
+| * DisableAction | 0x0A |
+| * DisableActionWithDuration | 0x0B |
+| * EnableAction | 0x08 |
+| * EnableActionWithDuration | 0x09 |
+| * InstantAction | 0x00 |
+| * InstantActionWithTransition | 0x01 |
+| * PauseAction | 0x05 |
+| * PauseActionWithDuration | 0x06 |
+| * ResumeAction | 0x07 |
+| * StartAction | 0x02 |
+| * StartActionWithDuration | 0x03 |
+| * StopAction | 0x04 |
+|------------------------------------------------------------------------------|
+| Attributes: | |
+| * ActionList | 0x0000 |
+| * EndpointList | 0x0001 |
+| * SetupUrl | 0x0002 |
+| * ClusterRevision | 0xFFFD |
+\*----------------------------------------------------------------------------*/
+
+/*
+ * Command DisableAction
+ */
+class BridgedActionsDisableAction : public ModelCommand
+{
+public:
+ BridgedActionsDisableAction() : ModelCommand("disable-action")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x0000000A) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::DisableAction::Type mRequest;
+};
+
+/*
+ * Command DisableActionWithDuration
+ */
+class BridgedActionsDisableActionWithDuration : public ModelCommand
+{
+public:
+ BridgedActionsDisableActionWithDuration() : ModelCommand("disable-action-with-duration")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ AddArgument("Duration", 0, UINT32_MAX, &mRequest.duration);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x0000000B) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::DisableActionWithDuration::Type mRequest;
+};
+
+/*
+ * Command EnableAction
+ */
+class BridgedActionsEnableAction : public ModelCommand
+{
+public:
+ BridgedActionsEnableAction() : ModelCommand("enable-action")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000008) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::EnableAction::Type mRequest;
+};
+
+/*
+ * Command EnableActionWithDuration
+ */
+class BridgedActionsEnableActionWithDuration : public ModelCommand
+{
+public:
+ BridgedActionsEnableActionWithDuration() : ModelCommand("enable-action-with-duration")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ AddArgument("Duration", 0, UINT32_MAX, &mRequest.duration);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000009) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::EnableActionWithDuration::Type mRequest;
+};
+
+/*
+ * Command InstantAction
+ */
+class BridgedActionsInstantAction : public ModelCommand
+{
+public:
+ BridgedActionsInstantAction() : ModelCommand("instant-action")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000000) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::InstantAction::Type mRequest;
+};
+
+/*
+ * Command InstantActionWithTransition
+ */
+class BridgedActionsInstantActionWithTransition : public ModelCommand
+{
+public:
+ BridgedActionsInstantActionWithTransition() : ModelCommand("instant-action-with-transition")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ AddArgument("TransitionTime", 0, UINT16_MAX, &mRequest.transitionTime);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000001) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::InstantActionWithTransition::Type mRequest;
+};
+
+/*
+ * Command PauseAction
+ */
+class BridgedActionsPauseAction : public ModelCommand
+{
+public:
+ BridgedActionsPauseAction() : ModelCommand("pause-action")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000005) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::PauseAction::Type mRequest;
+};
+
+/*
+ * Command PauseActionWithDuration
+ */
+class BridgedActionsPauseActionWithDuration : public ModelCommand
+{
+public:
+ BridgedActionsPauseActionWithDuration() : ModelCommand("pause-action-with-duration")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ AddArgument("Duration", 0, UINT32_MAX, &mRequest.duration);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000006) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::PauseActionWithDuration::Type mRequest;
+};
+
+/*
+ * Command ResumeAction
+ */
+class BridgedActionsResumeAction : public ModelCommand
+{
+public:
+ BridgedActionsResumeAction() : ModelCommand("resume-action")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000007) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::ResumeAction::Type mRequest;
+};
+
+/*
+ * Command StartAction
+ */
+class BridgedActionsStartAction : public ModelCommand
+{
+public:
+ BridgedActionsStartAction() : ModelCommand("start-action")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000002) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::StartAction::Type mRequest;
+};
+
+/*
+ * Command StartActionWithDuration
+ */
+class BridgedActionsStartActionWithDuration : public ModelCommand
+{
+public:
+ BridgedActionsStartActionWithDuration() : ModelCommand("start-action-with-duration")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ AddArgument("Duration", 0, UINT32_MAX, &mRequest.duration);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000003) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::StartActionWithDuration::Type mRequest;
+};
+
+/*
+ * Command StopAction
+ */
+class BridgedActionsStopAction : public ModelCommand
+{
+public:
+ BridgedActionsStopAction() : ModelCommand("stop-action")
+ {
+ AddArgument("ActionID", 0, UINT16_MAX, &mRequest.actionID);
+ AddArgument("InvokeID", 0, UINT32_MAX, &mRequest.invokeID);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x00000025) command (0x00000004) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.InvokeCommand(mRequest, this, OnDefaultSuccess, OnDefaultFailure);
+ }
+
+private:
+ chip::app::Clusters::BridgedActions::Commands::StopAction::Type mRequest;
+};
+
+/*
+ * Attribute ActionList
+ */
+class ReadBridgedActionsActionList : public ModelCommand
+{
+public:
+ ReadBridgedActionsActionList() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "action-list");
+ ModelCommand::AddArguments();
+ }
+
+ ~ReadBridgedActionsActionList()
+ {
+ delete onSuccessCallback;
+ delete onFailureCallback;
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0025) command (0x00) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeActionList(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback * onSuccessCallback =
+ new chip::Callback::Callback(OnBridgedActionsActionListListAttributeResponse,
+ this);
+ chip::Callback::Callback * onFailureCallback =
+ new chip::Callback::Callback(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute EndpointList
+ */
+class ReadBridgedActionsEndpointList : public ModelCommand
+{
+public:
+ ReadBridgedActionsEndpointList() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "endpoint-list");
+ ModelCommand::AddArguments();
+ }
+
+ ~ReadBridgedActionsEndpointList()
+ {
+ delete onSuccessCallback;
+ delete onFailureCallback;
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0025) command (0x00) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeEndpointList(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback * onSuccessCallback =
+ new chip::Callback::Callback(
+ OnBridgedActionsEndpointListListAttributeResponse, this);
+ chip::Callback::Callback * onFailureCallback =
+ new chip::Callback::Callback(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute SetupUrl
+ */
+class ReadBridgedActionsSetupUrl : public ModelCommand
+{
+public:
+ ReadBridgedActionsSetupUrl() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "setup-url");
+ ModelCommand::AddArguments();
+ }
+
+ ~ReadBridgedActionsSetupUrl()
+ {
+ delete onSuccessCallback;
+ delete onFailureCallback;
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0025) command (0x00) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeSetupUrl(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback * onSuccessCallback =
+ new chip::Callback::Callback(OnCharStringAttributeResponse, this);
+ chip::Callback::Callback * onFailureCallback =
+ new chip::Callback::Callback(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadBridgedActionsClusterRevision : public ModelCommand
+{
+public:
+ ReadBridgedActionsClusterRevision() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
+ }
+
+ ~ReadBridgedActionsClusterRevision()
+ {
+ delete onSuccessCallback;
+ delete onFailureCallback;
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0025) command (0x00) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::BridgedActionsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback * onSuccessCallback =
+ new chip::Callback::Callback(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback * onFailureCallback =
+ new chip::Callback::Callback(OnDefaultFailureResponse, this);
+};
+
/*----------------------------------------------------------------------------*\
| Cluster BridgedDeviceBasic | 0x0039 |
|------------------------------------------------------------------------------|
@@ -26408,6 +26957,31 @@ void registerClusterBooleanState(Commands & commands)
commands.Register(clusterName, clusterCommands);
}
+void registerClusterBridgedActions(Commands & commands)
+{
+ const char * clusterName = "BridgedActions";
+
+ commands_list clusterCommands = {
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ make_unique(), //
+ };
+
+ commands.Register(clusterName, clusterCommands);
+}
void registerClusterBridgedDeviceBasic(Commands & commands)
{
const char * clusterName = "BridgedDeviceBasic";
@@ -27471,6 +28045,7 @@ void registerClusters(Commands & commands)
registerClusterBinaryInputBasic(commands);
registerClusterBinding(commands);
registerClusterBooleanState(commands);
+ registerClusterBridgedActions(commands);
registerClusterBridgedDeviceBasic(commands);
registerClusterColorControl(commands);
registerClusterContentLauncher(commands);
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp
index e683b5a2af32f9..680cb1cb9487ca 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp
@@ -185,6 +185,54 @@ void AudioOutputClusterAudioOutputListListAttributeFilter(TLV::TLVReader * tlvDa
#pragma GCC diagnostic pop
#endif // __clang__
+void BridgedActionsClusterActionListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ chip::app::DataModel::DecodableList list;
+ CHIP_ERROR err = Decode(*tlvData, list);
+ if (err != CHIP_NO_ERROR)
+ {
+ if (onFailureCallback != nullptr)
+ {
+ Callback::Callback * cb =
+ Callback::Callback::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ }
+ return;
+ }
+
+ Callback::Callback * cb =
+ Callback::Callback::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, list);
+}
+#if !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // __clang__
+
+void BridgedActionsClusterEndpointListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ chip::app::DataModel::DecodableList list;
+ CHIP_ERROR err = Decode(*tlvData, list);
+ if (err != CHIP_NO_ERROR)
+ {
+ if (onFailureCallback != nullptr)
+ {
+ Callback::Callback * cb =
+ Callback::Callback::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ }
+ return;
+ }
+
+ Callback::Callback * cb =
+ Callback::Callback::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, list);
+}
+#if !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif // __clang__
+
void ContentLauncherClusterAcceptsHeaderListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback,
Callback::Cancelable * onFailureCallback)
{
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
index e49b0d78b6591c..91189b79b90e4a 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
@@ -162,6 +162,18 @@ void AudioOutputClusterAudioOutputListListAttributeFilter(chip::TLV::TLVReader *
typedef void (*AudioOutputAudioOutputListListAttributeCallback)(
void * context,
const chip::app::DataModel::DecodableList & data);
+void BridgedActionsClusterActionListListAttributeFilter(chip::TLV::TLVReader * data, chip::Callback::Cancelable * onSuccessCallback,
+ chip::Callback::Cancelable * onFailureCallback);
+typedef void (*BridgedActionsActionListListAttributeCallback)(
+ void * context,
+ const chip::app::DataModel::DecodableList & data);
+void BridgedActionsClusterEndpointListListAttributeFilter(chip::TLV::TLVReader * data,
+ chip::Callback::Cancelable * onSuccessCallback,
+ chip::Callback::Cancelable * onFailureCallback);
+typedef void (*BridgedActionsEndpointListListAttributeCallback)(
+ void * context,
+ const chip::app::DataModel::DecodableList &
+ data);
void ContentLauncherClusterAcceptsHeaderListListAttributeFilter(chip::TLV::TLVReader * data,
chip::Callback::Cancelable * onSuccessCallback,
chip::Callback::Cancelable * onFailureCallback);
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.cpp b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.cpp
index 34d8865e490364..07a295687e76d5 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.cpp
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.cpp
@@ -1447,6 +1447,652 @@ CHIP_ERROR BooleanStateCluster::ReadAttributeClusterRevision(Callback::Cancelabl
BasicAttributeFilter);
}
+// BridgedActions Cluster Commands
+CHIP_ERROR BridgedActionsCluster::DisableAction(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t actionID, uint32_t invokeID)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, BridgedActions::Commands::DisableAction::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::DisableActionWithDuration(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t actionID,
+ uint32_t invokeID, uint32_t duration)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId,
+ BridgedActions::Commands::DisableActionWithDuration::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+ // duration: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), duration));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::EnableAction(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t actionID, uint32_t invokeID)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, BridgedActions::Commands::EnableAction::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::EnableActionWithDuration(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t actionID,
+ uint32_t invokeID, uint32_t duration)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId,
+ BridgedActions::Commands::EnableActionWithDuration::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+ // duration: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), duration));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::InstantAction(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t actionID, uint32_t invokeID)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, BridgedActions::Commands::InstantAction::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::InstantActionWithTransition(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t actionID,
+ uint32_t invokeID, uint16_t transitionTime)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId,
+ BridgedActions::Commands::InstantActionWithTransition::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+ // transitionTime: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), transitionTime));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::PauseAction(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t actionID, uint32_t invokeID)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, BridgedActions::Commands::PauseAction::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::PauseActionWithDuration(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t actionID,
+ uint32_t invokeID, uint32_t duration)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId,
+ BridgedActions::Commands::PauseActionWithDuration::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+ // duration: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), duration));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::ResumeAction(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t actionID, uint32_t invokeID)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, BridgedActions::Commands::ResumeAction::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::StartAction(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t actionID, uint32_t invokeID)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, BridgedActions::Commands::StartAction::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::StartActionWithDuration(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t actionID,
+ uint32_t invokeID, uint32_t duration)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId,
+ BridgedActions::Commands::StartActionWithDuration::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+ // duration: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), duration));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+CHIP_ERROR BridgedActionsCluster::StopAction(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t actionID, uint32_t invokeID)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ TLV::TLVWriter * writer = nullptr;
+ uint8_t argSeqNumber = 0;
+
+ // Used when encoding non-empty command. Suppress error message when encoding empty commands.
+ (void) writer;
+ (void) argSeqNumber;
+
+ VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
+
+ app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, BridgedActions::Commands::StopAction::Id,
+ (app::CommandPathFlags::kEndpointIdValid) };
+
+ CommandSenderHandle sender(
+ Platform::New(mDevice->GetInteractionModelDelegate(), mDevice->GetExchangeManager()));
+
+ VerifyOrReturnError(sender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ SuccessOrExit(err = sender->PrepareCommand(cmdParams));
+
+ VerifyOrExit((writer = sender->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+ // actionID: int16u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), actionID));
+ // invokeID: int32u
+ SuccessOrExit(err = writer->Put(TLV::ContextTag(argSeqNumber++), invokeID));
+
+ SuccessOrExit(err = sender->FinishCommand());
+
+ // #6308: This is a temporary solution before we fully support IM on application side and should be replaced by IMDelegate.
+ mDevice->AddIMResponseHandler(sender.get(), onSuccessCallback, onFailureCallback);
+
+ SuccessOrExit(err = mDevice->SendCommands(sender.get()));
+
+ // We have successfully sent the command, and the callback handler will be responsible to free the object, release the object
+ // now.
+ sender.release();
+exit:
+ return err;
+}
+
+// BridgedActions Cluster Attributes
+CHIP_ERROR BridgedActionsCluster::ReadAttributeActionList(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ app::AttributePathParams attributePath;
+ attributePath.mEndpointId = mEndpoint;
+ attributePath.mClusterId = mClusterId;
+ attributePath.mFieldId = 0x00000000;
+ attributePath.mFlags.Set(app::AttributePathParams::Flags::kFieldIdValid);
+ return mDevice->SendReadAttributeRequest(attributePath, onSuccessCallback, onFailureCallback,
+ BridgedActionsClusterActionListListAttributeFilter);
+}
+
+CHIP_ERROR BridgedActionsCluster::ReadAttributeEndpointList(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ app::AttributePathParams attributePath;
+ attributePath.mEndpointId = mEndpoint;
+ attributePath.mClusterId = mClusterId;
+ attributePath.mFieldId = 0x00000001;
+ attributePath.mFlags.Set(app::AttributePathParams::Flags::kFieldIdValid);
+ return mDevice->SendReadAttributeRequest(attributePath, onSuccessCallback, onFailureCallback,
+ BridgedActionsClusterEndpointListListAttributeFilter);
+}
+
+CHIP_ERROR BridgedActionsCluster::ReadAttributeSetupUrl(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ app::AttributePathParams attributePath;
+ attributePath.mEndpointId = mEndpoint;
+ attributePath.mClusterId = mClusterId;
+ attributePath.mFieldId = 0x00000002;
+ attributePath.mFlags.Set(app::AttributePathParams::Flags::kFieldIdValid);
+ return mDevice->SendReadAttributeRequest(attributePath, onSuccessCallback, onFailureCallback,
+ BasicAttributeFilter);
+}
+
+CHIP_ERROR BridgedActionsCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ app::AttributePathParams attributePath;
+ attributePath.mEndpointId = mEndpoint;
+ attributePath.mClusterId = mClusterId;
+ attributePath.mFieldId = 0x0000FFFD;
+ attributePath.mFlags.Set(app::AttributePathParams::Flags::kFieldIdValid);
+ return mDevice->SendReadAttributeRequest(attributePath, onSuccessCallback, onFailureCallback,
+ BasicAttributeFilter);
+}
+
+template CHIP_ERROR ClusterBase::InvokeCommand(
+ const chip::app::Clusters::BridgedActions::Commands::DisableAction::Type &, void *,
+ CommandResponseSuccessCallback, CommandResponseFailureCallback);
+
+template CHIP_ERROR ClusterBase::InvokeCommand