Allow client applications to parse command responses using the underlying ZCL stack (#4661)
* Update chip-tool to be a client application using ZAP
* Disable clients clusters from the all-clusters-app zap config
* Get src/darwin to push down command responses down into the ZCL stack.
The above changes introduce a new callback based API for command responses instead of hand crafted code inside the iOS ChipTool application.
* Map ZCL responses to command using sequence number identifier
* Add nlio path to the esp32 all-clusters-app
Co-authored-by: Justin Wood <woody@apple.com>
diff --git a/examples/all-clusters-app/all-clusters-common/BUILD.gn b/examples/all-clusters-app/all-clusters-common/BUILD.gn
index 8988b02..618c2fc 100644
--- a/examples/all-clusters-app/all-clusters-common/BUILD.gn
+++ b/examples/all-clusters-app/all-clusters-common/BUILD.gn
@@ -27,19 +27,15 @@
"${chip_root}/src/app/clusters/basic/basic.cpp",
"${chip_root}/src/app/clusters/bindings/bindings.cpp",
"${chip_root}/src/app/clusters/color-control-server/color-control-server.cpp",
- "${chip_root}/src/app/clusters/door-lock-client/door-lock-client.cpp",
"${chip_root}/src/app/clusters/door-lock-server/door-lock-server-core.cpp",
"${chip_root}/src/app/clusters/door-lock-server/door-lock-server-logging.cpp",
"${chip_root}/src/app/clusters/door-lock-server/door-lock-server-schedule.cpp",
"${chip_root}/src/app/clusters/door-lock-server/door-lock-server-user.cpp",
- "${chip_root}/src/app/clusters/groups-client/groups-client.cpp",
"${chip_root}/src/app/clusters/groups-server/groups-server.cpp",
"${chip_root}/src/app/clusters/ias-zone-server/ias-zone-server.cpp",
- "${chip_root}/src/app/clusters/identify-client/identify-client.cpp",
"${chip_root}/src/app/clusters/identify/identify.cpp",
"${chip_root}/src/app/clusters/level-control/level-control.cpp",
"${chip_root}/src/app/clusters/on-off-server/on-off.cpp",
- "${chip_root}/src/app/clusters/scenes-client/scenes-client.cpp",
"${chip_root}/src/app/clusters/scenes/scenes.cpp",
"${chip_root}/src/app/clusters/temperature-measurement-server/temperature-measurement-server.cpp",
"${chip_root}/src/app/reporting/reporting-default-configuration.cpp",
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 5854cbc..25ed573 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
@@ -2824,7 +2824,24 @@
"mfgCode": null,
"define": "BASIC_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ],
"commands": [
{
"name": "ResetToFactoryDefaults",
@@ -2923,7 +2940,7 @@
"mfgCode": null,
"define": "IDENTIFY_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
"commands": [
{
"name": "Identify",
@@ -3016,7 +3033,7 @@
"mfgCode": null,
"define": "GROUPS_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
"commands": [
{
"name": "AddGroup",
@@ -3165,7 +3182,7 @@
"mfgCode": null,
"define": "SCENES_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
"commands": [
{
"name": "AddScene",
@@ -3398,7 +3415,24 @@
"mfgCode": null,
"define": "ON_OFF_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ],
"commands": [
{
"name": "Off",
@@ -3490,7 +3524,7 @@
"mfgCode": null,
"define": "LEVEL_CONTROL_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
"commands": [
{
"name": "MoveToLevel",
@@ -3622,7 +3656,7 @@
"mfgCode": null,
"define": "DOOR_LOCK_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
"commands": [
{
"name": "LockDoor",
@@ -4296,7 +4330,7 @@
"mfgCode": null,
"define": "BARRIER_CONTROL_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
"commands": [
{
"name": "BarrierControlGoToPercent",
@@ -4425,7 +4459,7 @@
"mfgCode": null,
"define": "COLOR_CONTROL_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
"commands": [
{
"name": "MoveToHue",
@@ -5605,7 +5639,7 @@
"mfgCode": null,
"define": "BINDING_CLUSTER",
"side": "client",
- "enabled": 1,
+ "enabled": 0,
"commands": [
{
"name": "Bind",
@@ -5687,4 +5721,4 @@
"networkId": 0
}
]
-}
\ No newline at end of file
+}
diff --git a/examples/all-clusters-app/all-clusters-common/gen/CHIPClientCallbacks.cpp b/examples/all-clusters-app/all-clusters-common/gen/CHIPClientCallbacks.cpp
new file mode 100644
index 0000000..f5f88af
--- /dev/null
+++ b/examples/all-clusters-app/all-clusters-common/gen/CHIPClientCallbacks.cpp
@@ -0,0 +1,842 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include "gen/CHIPClientCallbacks.h"
+
+#include "gen/enums.h"
+#include <app/util/CHIPDeviceCallbacksMgr.h>
+#include <app/util/af-enums.h>
+#include <app/util/af.h>
+#include <app/util/basic-types.h>
+#include <core/CHIPEncoding.h>
+#include <support/SafeInt.h>
+#include <support/logging/CHIPLogging.h>
+
+using namespace ::chip;
+
+#define CHECK_MESSAGE_LENGTH(value) \
+ if (!chip::CanCastTo<uint16_t>(value)) \
+ { \
+ ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ if (messageLen < value) \
+ { \
+ ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
+
+#define GET_RESPONSE_CALLBACKS(name) \
+ Callback::Cancelable * onSuccessCallback = nullptr; \
+ Callback::Cancelable * onFailureCallback = nullptr; \
+ NodeId sourceId = emberAfCurrentCommand()->source; \
+ uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \
+ CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onSuccessCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing success callback", name); \
+ } \
+ \
+ if (onFailureCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing failure callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+#define GET_REPORT_CALLBACK(name) \
+ Callback::Cancelable * onReportCallback = nullptr; \
+ CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onReportCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing report callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+void LogStatus(uint8_t status)
+{
+ switch (status)
+ {
+ case EMBER_ZCL_STATUS_SUCCESS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_FIELD:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_VALUE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_READ_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_FOUND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_SELECTOR:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WRITE_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ACTION_DENIED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_TIMEOUT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ABORT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_LIMIT_REACHED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status);
+ break;
+ default:
+ ChipLogError(Zcl, "Unknow status: 0x%02x", status);
+ break;
+ }
+}
+
+// Singleton instance of the callbacks manager
+app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance();
+
+bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ ChipLogProgress(Zcl, "DefaultResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " CommandId: 0x%02x", commandId);
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback");
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, static_cast<uint8_t>(status));
+ }
+
+ return true;
+}
+
+bool emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadAttributesResponseCallback");
+
+ // struct readAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute read
+ // per read command. So if multiple attributes are read at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes read at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "WriteAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback");
+
+ // struct writeAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute written
+ // per write command. So if multiple attributes are written at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback");
+
+ // struct configureReportingResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute report
+ // per configure command. So if multiple attributes are configured at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback");
+
+ // struct readReportingConfigurationResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval);
+
+ // FIXME: unk is not supported yet.
+
+ Callback::Callback<ReadReportingConfigurationReportedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout);
+
+ Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ }
+ }
+
+ return true;
+}
+
+bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen,
+ bool extended)
+{
+ ChipLogProgress(Zcl, "DiscoverAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " extended: %d", extended);
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback");
+
+ // struct discoverAttributesResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+ }
+
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "emberAfReportAttributeCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ NodeId sourceId = emberAfCurrentCommand()->source;
+ ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId);
+
+ EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
+ ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId);
+
+ // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed.
+ Callback::Cancelable * onFailureCallback = nullptr;
+
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ GET_REPORT_CALLBACK("emberAfReportAttributesCallback");
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+
+ return true;
+}
diff --git a/examples/all-clusters-app/all-clusters-common/gen/CHIPClientCallbacks.h b/examples/all-clusters-app/all-clusters-common/gen/CHIPClientCallbacks.h
new file mode 100644
index 0000000..14a3742
--- /dev/null
+++ b/examples/all-clusters-app/all-clusters-common/gen/CHIPClientCallbacks.h
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#pragma once
+
+#include <inttypes.h>
+
+// Global Response Callbacks
+typedef void (*DefaultSuccessCallback)(void * context);
+typedef void (*DefaultFailureCallback)(void * context, uint8_t status);
+typedef void (*BooleanAttributeCallback)(void * context, bool value);
+typedef void (*Int8uAttributeCallback)(void * context, uint8_t value);
+typedef void (*Int8sAttributeCallback)(void * context, int8_t value);
+typedef void (*Int16uAttributeCallback)(void * context, uint16_t value);
+typedef void (*Int16sAttributeCallback)(void * context, int16_t value);
+typedef void (*Int32uAttributeCallback)(void * context, uint32_t value);
+typedef void (*Int32sAttributeCallback)(void * context, int32_t value);
+typedef void (*Int64uAttributeCallback)(void * context, uint64_t value);
+typedef void (*Int64sAttributeCallback)(void * context, int64_t value);
+typedef void (*ReadReportingConfigurationReportedCallback)(void * context, uint16_t minInterval, uint16_t maxInterval);
+typedef void (*ReadReportingConfigurationReceivedCallback)(void * context, uint16_t timeout);
+
+// Cluster Specific Response Callbacks
diff --git a/examples/all-clusters-app/all-clusters-common/gen/CHIPClustersObjc.h b/examples/all-clusters-app/all-clusters-common/gen/CHIPClustersObjc.h
new file mode 100644
index 0000000..033de92
--- /dev/null
+++ b/examples/all-clusters-app/all-clusters-common/gen/CHIPClustersObjc.h
@@ -0,0 +1,536 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#ifndef CHIP_CLUSTERS_H
+#define CHIP_CLUSTERS_H
+
+#import <Foundation/Foundation.h>
+
+typedef void (^ResponseHandler)(NSError * _Nullable error, NSDictionary * _Nullable values);
+
+@class CHIPDevice;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBarrierControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)barrierControlStop:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeBarrierMovingState:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeBarrierPosition:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBasic : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)mfgSpecificPing:(ResponseHandler)completionHandler;
+- (BOOL)resetToFactoryDefaults:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeZclVersion:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePowerSource:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBinding : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)bind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)unbind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPColorControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)moveColor:(int16_t)rateX
+ rateY:(int16_t)rateY
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveColorTemperature:(uint8_t)moveMode
+ rate:(uint16_t)rate
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveHue:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveSaturation:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToColor:(uint16_t)colorX
+ colorY:(uint16_t)colorY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToColorTemperature:(uint16_t)colorTemperature
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToHue:(uint8_t)hue
+ direction:(uint8_t)direction
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToHueAndSaturation:(uint8_t)hue
+ saturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToSaturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepColor:(int16_t)stepX
+ stepY:(int16_t)stepY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepColorTemperature:(uint8_t)stepMode
+ stepSize:(uint16_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepHue:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepSaturation:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stopMoveStep:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeCurrentHue:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentHue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentHue:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeCurrentSaturation:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentSaturation:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeRemainingTime:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCurrentX:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentX:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentX:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeCurrentY:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentY:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentY:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeDriftCompensation:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCompensationText:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorTemperature:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeColorTemperature:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeColorTemperature:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeColorMode:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorControlOptions:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary1X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary1Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary1Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary2X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary2Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary2Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary3X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary3Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary3Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary4X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary4Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary4Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary5X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary5Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary5Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary6X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary6Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary6Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeWhitePointX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeWhitePointY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointRX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointRY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointGX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointGY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointBX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointBY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorLoopActive:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorLoopDirection:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorLoopTime:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorCapabilities:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPDoorLock : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)clearAllPins:(ResponseHandler)completionHandler;
+- (BOOL)clearAllRfids:(ResponseHandler)completionHandler;
+- (BOOL)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)lockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setHolidaySchedule:(uint8_t)scheduleId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setPin:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ pin:(char *)pin
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setRfid:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ id:(char *)id
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setWeekdaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ daysMask:(uint8_t)daysMask
+ startHour:(uint8_t)startHour
+ startMinute:(uint8_t)startMinute
+ endHour:(uint8_t)endHour
+ endMinute:(uint8_t)endMinute
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setYeardaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)unlockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(char *)pin completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeLockState:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeLockState:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeLockState:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeLockType:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeActuatorEnabled:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPGroups : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)addGroup:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)addGroupIfIdentifying:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)removeAllGroups:(ResponseHandler)completionHandler;
+- (BOOL)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPIasZone : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+
+- (BOOL)readAttributeZoneState:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeZoneType:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeZoneStatus:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeIasCieAddress:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeIasCieAddress:(uint64_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeZoneId:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPIdentify : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)identifyQuery:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeIdentifyTime:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPLevelControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPOnOff : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)off:(ResponseHandler)completionHandler;
+- (BOOL)on:(ResponseHandler)completionHandler;
+- (BOOL)toggle:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPScenes : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)addScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ sceneName:(char *)sceneName
+ clusterId:(uint16_t)clusterId
+ length:(uint8_t)length
+ value:(uint8_t)value
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)recallScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeSceneCount:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCurrentScene:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCurrentGroup:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeSceneValid:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPTemperatureMeasurement : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+
+- (BOOL)readAttributeMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeMeasuredValue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(int16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeMeasuredValue:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeMinMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeMaxMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* CHIP_CLUSTERS_H */
diff --git a/examples/all-clusters-app/all-clusters-common/gen/CHIPClustersObjc.mm b/examples/all-clusters-app/all-clusters-common/gen/CHIPClustersObjc.mm
new file mode 100644
index 0000000..702aec4
--- /dev/null
+++ b/examples/all-clusters-app/all-clusters-common/gen/CHIPClustersObjc.mm
@@ -0,0 +1,4832 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#import <Foundation/Foundation.h>
+
+#import "CHIPDevice.h"
+#import "CHIPDevice_Internal.h"
+#import "gen/CHIPClientCallbacks.h"
+#import "gen/CHIPClustersObjc.h"
+
+#include <controller/CHIPClusters.h>
+
+using namespace ::chip;
+
+class CHIPDefaultSuccessCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPDefaultSuccessCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultSuccessCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDefaultSuccessCallbackBridge * callback = reinterpret_cast<CHIPDefaultSuccessCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDefaultFailureCallbackBridge : public Callback::Callback<DefaultFailureCallback> {
+public:
+ CHIPDefaultFailureCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultFailureCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultFailureCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t status)
+ {
+ CHIPDefaultFailureCallbackBridge * callback = reinterpret_cast<CHIPDefaultFailureCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL" code:status userInfo:@ { NSLocalizedDescriptionKey : @"" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPUnsupportedAttributeCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPUnsupportedAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ {
+ }
+
+ ~CHIPUnsupportedAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPUnsupportedAttributeCallbackBridge * callback = reinterpret_cast<CHIPUnsupportedAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL"
+ code:0
+ userInfo:@ { NSLocalizedDescriptionKey : @"Unsuported attribute type" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPBooleanAttributeCallbackBridge : public Callback::Callback<BooleanAttributeCallback> {
+public:
+ CHIPBooleanAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<BooleanAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPBooleanAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, bool value)
+ {
+ CHIPBooleanAttributeCallbackBridge * callback = reinterpret_cast<CHIPBooleanAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithBool:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8uAttributeCallbackBridge : public Callback::Callback<Int8uAttributeCallback> {
+public:
+ CHIPInt8uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t value)
+ {
+ CHIPInt8uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8sAttributeCallbackBridge : public Callback::Callback<Int8sAttributeCallback> {
+public:
+ CHIPInt8sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int8_t value)
+ {
+ CHIPInt8sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16uAttributeCallbackBridge : public Callback::Callback<Int16uAttributeCallback> {
+public:
+ CHIPInt16uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t value)
+ {
+ CHIPInt16uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16sAttributeCallbackBridge : public Callback::Callback<Int16sAttributeCallback> {
+public:
+ CHIPInt16sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int16_t value)
+ {
+ CHIPInt16sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+@interface CHIPBarrierControl ()
+
+@property (readonly) Controller::BarrierControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBarrierControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.BarrierControlGoToPercent(onSuccess->Cancel(), onFailure->Cancel(), percentOpen);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)barrierControlStop:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.BarrierControlStop(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierMovingState:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierMovingState(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierSafetyStatus(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierCapabilities(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierPosition:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierPosition(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPBasic ()
+
+@property (readonly) Controller::BasicCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBasic
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)mfgSpecificPing:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MfgSpecificPing(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)resetToFactoryDefaults:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ResetToFactoryDefaults(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeZclVersion:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeZclVersion(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePowerSource:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePowerSource(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPBinding ()
+
+@property (readonly) Controller::BindingCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBinding
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)bind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Bind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)unbind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Unbind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPColorControl ()
+
+@property (readonly) Controller::ColorControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPColorControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)moveColor:(int16_t)rateX
+ rateY:(int16_t)rateY
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveColor(onSuccess->Cancel(), onFailure->Cancel(), rateX, rateY, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveColorTemperature:(uint8_t)moveMode
+ rate:(uint16_t)rate
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate,
+ colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveHue:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveHue(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveSaturation:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveSaturation(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToColor:(uint16_t)colorX
+ colorY:(uint16_t)colorY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToColor(
+ onSuccess->Cancel(), onFailure->Cancel(), colorX, colorY, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToColorTemperature:(uint16_t)colorTemperature
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToColorTemperature(
+ onSuccess->Cancel(), onFailure->Cancel(), colorTemperature, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToHue:(uint8_t)hue
+ direction:(uint8_t)direction
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToHue(
+ onSuccess->Cancel(), onFailure->Cancel(), hue, direction, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToHueAndSaturation:(uint8_t)hue
+ saturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToHueAndSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), hue, saturation, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToSaturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), saturation, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepColor:(int16_t)stepX
+ stepY:(int16_t)stepY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepColor(
+ onSuccess->Cancel(), onFailure->Cancel(), stepX, stepY, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepColorTemperature:(uint8_t)stepMode
+ stepSize:(uint16_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize,
+ transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepHue:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepHue(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepSaturation:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stopMoveStep:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StopMoveStep(onSuccess->Cancel(), onFailure->Cancel(), optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentHue:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentHue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentHue:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentHue(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentSaturation:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentSaturation(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentSaturation:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentSaturation(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeRemainingTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeRemainingTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentX:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentX:(ResponseHandler)reportHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentX(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentY:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentY:(ResponseHandler)reportHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentY(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeDriftCompensation:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeDriftCompensation(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCompensationText:(ResponseHandler)completionHandler
+{
+ CHIPUnsupportedAttributeCallbackBridge * onSuccess
+ = new CHIPUnsupportedAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCompensationText(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorTemperature:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorTemperature(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeColorTemperature:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeColorTemperature(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeColorTemperature:(ResponseHandler)reportHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeColorTemperature(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeColorMode:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorMode(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorControlOptions:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPrimaries(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary1X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary1Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary1Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary2X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary2Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary2Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary3X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary3Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary3Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary4X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary4Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary4Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary5X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary5Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary5Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary6X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary6Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary6Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeWhitePointX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeWhitePointY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointRX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointRY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointGX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointGY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointBX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointBY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedCurrentHue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedColorMode(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorLoopActive:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopActive(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorLoopDirection:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopDirection(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorLoopTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorCapabilities:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorCapabilities(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMin(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMax(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPDoorLock ()
+
+@property (readonly) Controller::DoorLockCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPDoorLock
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)clearAllPins:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearAllPins(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearAllRfids:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearAllRfids(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearPin(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearRfid(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetLogRecord(onSuccess->Cancel(), onFailure->Cancel(), logIndex);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetPin(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)lockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterLockDoorResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterLockDoorResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.LockDoor(onSuccess->Cancel(), onFailure->Cancel(), pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setHolidaySchedule:(uint8_t)scheduleId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetHolidaySchedule(
+ onSuccess->Cancel(), onFailure->Cancel(), scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setPin:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ pin:(char *)pin
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetPin(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setRfid:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ id:(char *)id
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, id);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId, userType);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setWeekdaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ daysMask:(uint8_t)daysMask
+ startHour:(uint8_t)startHour
+ startMinute:(uint8_t)startMinute
+ endHour:(uint8_t)endHour
+ endMinute:(uint8_t)endMinute
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetWeekdaySchedule(
+ onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setYeardaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetYeardaySchedule(
+ onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, localStartTime, localEndTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)unlockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterUnlockDoorResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterUnlockDoorResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.UnlockDoor(onSuccess->Cancel(), onFailure->Cancel(), pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(char *)pin completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.UnlockWithTimeout(onSuccess->Cancel(), onFailure->Cancel(), timeoutInSeconds, pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeLockState:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeLockState(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeLockState:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeLockState(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeLockState:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeLockState(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeLockType:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeLockType(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeActuatorEnabled:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeActuatorEnabled(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPGroups ()
+
+@property (readonly) Controller::GroupsCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPGroups
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)addGroup:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterAddGroupResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterAddGroupResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.AddGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId, groupName);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)addGroupIfIdentifying:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.AddGroupIfIdentifying(onSuccess->Cancel(), onFailure->Cancel(), groupId, groupName);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetGroupMembership(onSuccess->Cancel(), onFailure->Cancel(), groupCount, groupList);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeAllGroups:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveAllGroups(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterRemoveGroupResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterRemoveGroupResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterViewGroupResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterViewGroupResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ViewGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPIasZone ()
+
+@property (readonly) Controller::IasZoneCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPIasZone
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)readAttributeZoneState:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeZoneState(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeZoneType:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeZoneType(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeZoneStatus:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeZoneStatus(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeIasCieAddress:(ResponseHandler)completionHandler
+{
+ CHIPInt64uAttributeCallbackBridge * onSuccess = new CHIPInt64uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeIasCieAddress(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeIasCieAddress:(uint64_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeIasCieAddress(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeZoneId:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeZoneId(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPIdentify ()
+
+@property (readonly) Controller::IdentifyCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPIdentify
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Identify(onSuccess->Cancel(), onFailure->Cancel(), identifyTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)identifyQuery:(ResponseHandler)completionHandler
+{
+ CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge * onSuccess
+ = new CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.IdentifyQuery(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeIdentifyTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPLevelControl ()
+
+@property (readonly) Controller::LevelControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPLevelControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Move(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveToLevel(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Step(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Stop(onSuccess->Cancel(), onFailure->Cancel(), optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StopWithOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentLevel(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentLevel(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPOnOff ()
+
+@property (readonly) Controller::OnOffCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPOnOff
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)off:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)on:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)toggle:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onReport = new CHIPBooleanAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPScenes ()
+
+@property (readonly) Controller::ScenesCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPScenes
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)addScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ sceneName:(char *)sceneName
+ clusterId:(uint16_t)clusterId
+ length:(uint8_t)length
+ value:(uint8_t)value
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterAddSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterAddSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.AddScene(
+ onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime, sceneName, clusterId, length, value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetSceneMembership(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)recallScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RecallScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveAllScenes(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterRemoveSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterRemoveSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterStoreSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterStoreSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StoreScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterViewSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterViewSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ViewScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeSceneCount:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeSceneCount(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentScene:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentScene(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentGroup:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentGroup(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeSceneValid:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeSceneValid(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPTemperatureMeasurement ()
+
+@property (readonly) Controller::TemperatureMeasurementCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPTemperatureMeasurement
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)readAttributeMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeMeasuredValue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(int16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeMeasuredValue(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeMeasuredValue:(ResponseHandler)reportHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onReport = new CHIPInt16sAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeMeasuredValue(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeMinMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMinMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeMaxMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMaxMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
diff --git a/examples/all-clusters-app/all-clusters-common/gen/call-command-handler.cpp b/examples/all-clusters-app/all-clusters-common/gen/call-command-handler.cpp
index f9f1aa8..8c7cd77 100644
--- a/examples/all-clusters-app/all-clusters-common/gen/call-command-handler.cpp
+++ b/examples/all-clusters-app/all-clusters-common/gen/call-command-handler.cpp
@@ -28,26 +28,16 @@
using namespace chip;
-EmberAfStatus emberAfBarrierControlClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfBarrierControlClusterServerCommandParse(EmberAfClusterCommand * cmd);
-EmberAfStatus emberAfBasicClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfBasicClusterServerCommandParse(EmberAfClusterCommand * cmd);
-EmberAfStatus emberAfBindingClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfBindingClusterServerCommandParse(EmberAfClusterCommand * cmd);
-EmberAfStatus emberAfColorControlClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfColorControlClusterServerCommandParse(EmberAfClusterCommand * cmd);
-EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfDoorLockClusterServerCommandParse(EmberAfClusterCommand * cmd);
-EmberAfStatus emberAfGroupsClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfGroupsClusterServerCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfIasZoneClusterServerCommandParse(EmberAfClusterCommand * cmd);
-EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfIdentifyClusterServerCommandParse(EmberAfClusterCommand * cmd);
-EmberAfStatus emberAfLevelControlClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfLevelControlClusterServerCommandParse(EmberAfClusterCommand * cmd);
-EmberAfStatus emberAfOnOffClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfOnOffClusterServerCommandParse(EmberAfClusterCommand * cmd);
-EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfScenesClusterServerCommandParse(EmberAfClusterCommand * cmd);
EmberAfStatus emberAfTemperatureMeasurementClusterServerCommandParse(EmberAfClusterCommand * cmd);
@@ -80,42 +70,6 @@
{
switch (cmd->apsFrame->clusterId)
{
- case ZCL_BARRIER_CONTROL_CLUSTER_ID:
- // No commands are enabled for cluster Barrier Control
- result = status(false, true, cmd->mfgSpecific);
- break;
- case ZCL_BASIC_CLUSTER_ID:
- // No commands are enabled for cluster Basic
- result = status(false, true, cmd->mfgSpecific);
- break;
- case ZCL_BINDING_CLUSTER_ID:
- // No commands are enabled for cluster Binding
- result = status(false, true, cmd->mfgSpecific);
- break;
- case ZCL_COLOR_CONTROL_CLUSTER_ID:
- // No commands are enabled for cluster Color Control
- result = status(false, true, cmd->mfgSpecific);
- break;
- case ZCL_DOOR_LOCK_CLUSTER_ID:
- result = emberAfDoorLockClusterClientCommandParse(cmd);
- break;
- case ZCL_GROUPS_CLUSTER_ID:
- result = emberAfGroupsClusterClientCommandParse(cmd);
- break;
- case ZCL_IDENTIFY_CLUSTER_ID:
- result = emberAfIdentifyClusterClientCommandParse(cmd);
- break;
- case ZCL_LEVEL_CONTROL_CLUSTER_ID:
- // No commands are enabled for cluster Level Control
- result = status(false, true, cmd->mfgSpecific);
- break;
- case ZCL_ON_OFF_CLUSTER_ID:
- // No commands are enabled for cluster On/off
- result = status(false, true, cmd->mfgSpecific);
- break;
- case ZCL_SCENES_CLUSTER_ID:
- result = emberAfScenesClusterClientCommandParse(cmd);
- break;
default:
// Unrecognized cluster ID, error status will apply.
break;
@@ -880,48 +834,6 @@
}
return status(wasHandled, true, cmd->mfgSpecific);
}
-EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd)
-{
- bool wasHandled = false;
-
- if (!cmd->mfgSpecific)
- {
- switch (cmd->commandId)
- {
- case ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfDoorLockClusterLockDoorResponseCallback(status);
- break;
- }
- case ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfDoorLockClusterUnlockDoorResponseCallback(status);
- break;
- }
- default: {
- // Unrecognized command ID, error status will apply.
- break;
- }
- }
- }
- return status(wasHandled, true, cmd->mfgSpecific);
-}
EmberAfStatus emberAfDoorLockClusterServerCommandParse(EmberAfClusterCommand * cmd)
{
bool wasHandled = false;
@@ -1389,112 +1301,6 @@
}
return status(wasHandled, true, cmd->mfgSpecific);
}
-EmberAfStatus emberAfGroupsClusterClientCommandParse(EmberAfClusterCommand * cmd)
-{
- bool wasHandled = false;
-
- if (!cmd->mfgSpecific)
- {
- switch (cmd->commandId)
- {
- case ZCL_ADD_GROUP_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
- uint16_t groupId;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfGroupsClusterAddGroupResponseCallback(status, groupId);
- break;
- }
- case ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t capacity;
- uint8_t groupCount;
- /* TYPE WARNING: array array defaults to */ uint8_t * groupList;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- capacity = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupCount = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- groupList = cmd->buffer + payloadOffset;
-
- wasHandled = emberAfGroupsClusterGetGroupMembershipResponseCallback(capacity, groupCount, groupList);
- break;
- }
- case ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
- uint16_t groupId;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfGroupsClusterRemoveGroupResponseCallback(status, groupId);
- break;
- }
- case ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
- uint16_t groupId;
- uint8_t * groupName;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
- if (cmd->bufLen < payloadOffset + 1u)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupName = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfGroupsClusterViewGroupResponseCallback(status, groupId, groupName);
- break;
- }
- default: {
- // Unrecognized command ID, error status will apply.
- break;
- }
- }
- }
- return status(wasHandled, true, cmd->mfgSpecific);
-}
EmberAfStatus emberAfGroupsClusterServerCommandParse(EmberAfClusterCommand * cmd)
{
bool wasHandled = false;
@@ -1633,35 +1439,6 @@
}
return status(wasHandled, true, cmd->mfgSpecific);
}
-EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * cmd)
-{
- bool wasHandled = false;
-
- if (!cmd->mfgSpecific)
- {
- switch (cmd->commandId)
- {
- case ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint16_t timeout;
-
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- timeout = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfIdentifyClusterIdentifyQueryResponseCallback(timeout);
- break;
- }
- default: {
- // Unrecognized command ID, error status will apply.
- break;
- }
- }
- }
- return status(wasHandled, true, cmd->mfgSpecific);
-}
EmberAfStatus emberAfIdentifyClusterServerCommandParse(EmberAfClusterCommand * cmd)
{
bool wasHandled = false;
@@ -1939,240 +1716,6 @@
}
return status(wasHandled, true, cmd->mfgSpecific);
}
-EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd)
-{
- bool wasHandled = false;
-
- if (!cmd->mfgSpecific)
- {
- switch (cmd->commandId)
- {
- case ZCL_ADD_SCENE_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
- uint16_t groupId;
- uint8_t sceneId;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfScenesClusterAddSceneResponseCallback(status, groupId, sceneId);
- break;
- }
- case ZCL_GET_SCENE_MEMBERSHIP_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
- uint8_t capacity;
- uint16_t groupId;
- uint8_t sceneCount;
- /* TYPE WARNING: array array defaults to */ uint8_t * sceneList;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- capacity = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
- if (status == 0)
- {
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- sceneCount = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- }
- else
- {
- sceneCount = UINT8_MAX;
- }
- if (status == 0)
- {
- sceneList = cmd->buffer + payloadOffset;
- }
- else
- {
- sceneList = NULL;
- }
-
- wasHandled = emberAfScenesClusterGetSceneMembershipResponseCallback(status, capacity, groupId, sceneCount, sceneList);
- break;
- }
- case ZCL_REMOVE_ALL_SCENES_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
- uint16_t groupId;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfScenesClusterRemoveAllScenesResponseCallback(status, groupId);
- break;
- }
- case ZCL_REMOVE_SCENE_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
- uint16_t groupId;
- uint8_t sceneId;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfScenesClusterRemoveSceneResponseCallback(status, groupId, sceneId);
- break;
- }
- case ZCL_STORE_SCENE_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
- uint16_t groupId;
- uint8_t sceneId;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
-
- wasHandled = emberAfScenesClusterStoreSceneResponseCallback(status, groupId, sceneId);
- break;
- }
- case ZCL_VIEW_SCENE_RESPONSE_COMMAND_ID: {
- uint16_t payloadOffset = cmd->payloadStartIndex;
- uint8_t status;
- uint16_t groupId;
- uint8_t sceneId;
- uint16_t transitionTime;
- uint8_t * sceneName;
- /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets;
-
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
- if (cmd->bufLen < payloadOffset + 1)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
- if (status == 0)
- {
- if (cmd->bufLen < payloadOffset + 2)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
- }
- else
- {
- transitionTime = UINT16_MAX;
- }
- if (status == 0)
- {
- if (cmd->bufLen < payloadOffset + 1u)
- {
- return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
- }
- sceneName = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
- payloadOffset = static_cast<uint16_t>(payloadOffset + emberAfStringLength(sceneName) + 1u);
- }
- else
- {
- sceneName = NULL;
- }
- if (status == 0)
- {
- extensionFieldSets = cmd->buffer + payloadOffset;
- }
- else
- {
- extensionFieldSets = NULL;
- }
-
- wasHandled = emberAfScenesClusterViewSceneResponseCallback(status, groupId, sceneId, transitionTime, sceneName,
- extensionFieldSets);
- break;
- }
- default: {
- // Unrecognized command ID, error status will apply.
- break;
- }
- }
- }
- return status(wasHandled, true, cmd->mfgSpecific);
-}
EmberAfStatus emberAfScenesClusterServerCommandParse(EmberAfClusterCommand * cmd)
{
bool wasHandled = false;
diff --git a/examples/all-clusters-app/all-clusters-common/gen/callback.h b/examples/all-clusters-app/all-clusters-common/gen/callback.h
index 1079909..1869dfe 100644
--- a/examples/all-clusters-app/all-clusters-common/gen/callback.h
+++ b/examples/all-clusters-app/all-clusters-common/gen/callback.h
@@ -136,77 +136,6 @@
// Cluster Server/Client Init Functions
//
-// Barrier Control Cluster client
-//
-
-/** @brief Barrier Control Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfBarrierControlClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief Barrier Control Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfBarrierControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief Barrier Control Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfBarrierControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
- chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief Barrier Control Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfBarrierControlClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
- EmberStatus status);
-
-/** @brief Barrier Control Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfBarrierControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
- chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief Barrier Control Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfBarrierControlClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// Barrier Control Cluster server
//
@@ -278,74 +207,6 @@
void emberAfBarrierControlClusterServerTickCallback(chip::EndpointId endpoint);
//
-// Basic Cluster client
-//
-
-/** @brief Basic Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfBasicClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief Basic Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfBasicClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief Basic Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfBasicClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief Basic Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfBasicClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, EmberStatus status);
-
-/** @brief Basic Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfBasicClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief Basic Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfBasicClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// Basic Cluster server
//
@@ -414,76 +275,6 @@
void emberAfBasicClusterServerTickCallback(chip::EndpointId endpoint);
//
-// Binding Cluster client
-//
-
-/** @brief Binding Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfBindingClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief Binding Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfBindingClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief Binding Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfBindingClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
- chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief Binding Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfBindingClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
- EmberStatus status);
-
-/** @brief Binding Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfBindingClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief Binding Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfBindingClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// Binding Cluster server
//
@@ -554,76 +345,6 @@
void emberAfBindingClusterServerTickCallback(chip::EndpointId endpoint);
//
-// Color Control Cluster client
-//
-
-/** @brief Color Control Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfColorControlClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief Color Control Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfColorControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief Color Control Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfColorControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
- chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief Color Control Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfColorControlClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
- EmberStatus status);
-
-/** @brief Color Control Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfColorControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief Color Control Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfColorControlClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// Color Control Cluster server
//
@@ -694,76 +415,6 @@
void emberAfColorControlClusterServerTickCallback(chip::EndpointId endpoint);
//
-// Door Lock Cluster client
-//
-
-/** @brief Door Lock Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfDoorLockClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief Door Lock Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfDoorLockClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief Door Lock Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfDoorLockClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
- chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief Door Lock Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfDoorLockClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
- EmberStatus status);
-
-/** @brief Door Lock Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfDoorLockClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief Door Lock Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfDoorLockClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// Door Lock Cluster server
//
@@ -834,76 +485,6 @@
void emberAfDoorLockClusterServerTickCallback(chip::EndpointId endpoint);
//
-// Groups Cluster client
-//
-
-/** @brief Groups Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfGroupsClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief Groups Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfGroupsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief Groups Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfGroupsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
- chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief Groups Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfGroupsClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
- EmberStatus status);
-
-/** @brief Groups Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfGroupsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief Groups Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfGroupsClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// Groups Cluster server
//
@@ -1044,76 +625,6 @@
void emberAfIasZoneClusterServerTickCallback(chip::EndpointId endpoint);
//
-// Identify Cluster client
-//
-
-/** @brief Identify Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfIdentifyClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief Identify Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfIdentifyClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief Identify Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfIdentifyClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
- chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief Identify Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfIdentifyClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
- EmberStatus status);
-
-/** @brief Identify Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfIdentifyClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief Identify Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfIdentifyClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// Identify Cluster server
//
@@ -1184,76 +695,6 @@
void emberAfIdentifyClusterServerTickCallback(chip::EndpointId endpoint);
//
-// Level Control Cluster client
-//
-
-/** @brief Level Control Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfLevelControlClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief Level Control Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfLevelControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief Level Control Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfLevelControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
- chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief Level Control Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfLevelControlClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
- EmberStatus status);
-
-/** @brief Level Control Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfLevelControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief Level Control Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfLevelControlClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// Level Control Cluster server
//
@@ -1324,74 +765,6 @@
void emberAfLevelControlClusterServerTickCallback(chip::EndpointId endpoint);
//
-// On/off Cluster client
-//
-
-/** @brief On/off Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfOnOffClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief On/off Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfOnOffClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief On/off Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfOnOffClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief On/off Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfOnOffClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, EmberStatus status);
-
-/** @brief On/off Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfOnOffClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief On/off Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfOnOffClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// On/off Cluster server
//
@@ -1460,76 +833,6 @@
void emberAfOnOffClusterServerTickCallback(chip::EndpointId endpoint);
//
-// Scenes Cluster client
-//
-
-/** @brief Scenes Cluster Client Init
- *
- * Client Init
- *
- * @param endpoint Endpoint that is being initialized
- */
-void emberAfScenesClusterClientInitCallback(chip::EndpointId endpoint);
-
-/** @brief Scenes Cluster Client Attribute Changed
- *
- * Client Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- */
-void emberAfScenesClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
-
-/** @brief Scenes Cluster Client Manufacturer Specific Attribute Changed
- *
- * Client Manufacturer Specific Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute that changed
- * @param manufacturerCode Manufacturer Code of the attribute that changed
- */
-void emberAfScenesClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
- chip::AttributeId attributeId,
- uint16_t manufacturerCode);
-
-/** @brief Scenes Cluster Client Message Sent
- *
- * Client Message Sent
- *
- * @param type The type of message sent
- * @param indexOrDestination The destination or address 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 emberAfScenesClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
- EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
- EmberStatus status);
-
-/** @brief Scenes Cluster Client Pre Attribute Changed
- *
- * client Pre Attribute Changed
- *
- * @param endpoint Endpoint that is being initialized
- * @param attributeId Attribute to be changed
- * @param attributeType Attribute type
- * @param size Attribute size
- * @param value Attribute value
- */
-EmberAfStatus emberAfScenesClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
- EmberAfAttributeType attributeType, uint8_t size,
- uint8_t * value);
-
-/** @brief Scenes Cluster Client Tick
- *
- * client Tick
- *
- * @param endpoint Endpoint that is being served
- */
-void emberAfScenesClusterClientTickCallback(chip::EndpointId endpoint);
-
-//
// Scenes Cluster server
//
@@ -1881,20 +1184,6 @@
bool emberAfColorControlClusterStopMoveStepCallback(uint8_t optionsMask, uint8_t optionsOverride);
/**
- * @brief Door Lock Cluster LockDoorResponse Command callback
- * @param status
- */
-
-bool emberAfDoorLockClusterLockDoorResponseCallback(uint8_t status);
-
-/**
- * @brief Door Lock Cluster UnlockDoorResponse Command callback
- * @param status
- */
-
-bool emberAfDoorLockClusterUnlockDoorResponseCallback(uint8_t status);
-
-/**
* @brief Door Lock Cluster ClearAllPins Command callback
*/
@@ -2081,41 +1370,6 @@
bool emberAfDoorLockClusterUnlockWithTimeoutCallback(uint16_t timeoutInSeconds, uint8_t * pin);
/**
- * @brief Groups Cluster AddGroupResponse Command callback
- * @param status
- * @param groupId
- */
-
-bool emberAfGroupsClusterAddGroupResponseCallback(uint8_t status, uint16_t groupId);
-
-/**
- * @brief Groups Cluster GetGroupMembershipResponse Command callback
- * @param capacity
- * @param groupCount
- * @param groupList
- */
-
-bool emberAfGroupsClusterGetGroupMembershipResponseCallback(uint8_t capacity, uint8_t groupCount,
- /* TYPE WARNING: array array defaults to */ uint8_t * groupList);
-
-/**
- * @brief Groups Cluster RemoveGroupResponse Command callback
- * @param status
- * @param groupId
- */
-
-bool emberAfGroupsClusterRemoveGroupResponseCallback(uint8_t status, uint16_t groupId);
-
-/**
- * @brief Groups Cluster ViewGroupResponse Command callback
- * @param status
- * @param groupId
- * @param groupName
- */
-
-bool emberAfGroupsClusterViewGroupResponseCallback(uint8_t status, uint16_t groupId, uint8_t * groupName);
-
-/**
* @brief Groups Cluster AddGroup Command callback
* @param groupId
* @param groupName
@@ -2169,13 +1423,6 @@
bool emberAfIasZoneClusterZoneEnrollResponseCallback(uint8_t enrollResponseCode, uint8_t zoneId);
/**
- * @brief Identify Cluster IdentifyQueryResponse Command callback
- * @param timeout
- */
-
-bool emberAfIdentifyClusterIdentifyQueryResponseCallback(uint16_t timeout);
-
-/**
* @brief Identify Cluster Identify Command callback
* @param identifyTime
*/
@@ -2279,67 +1526,6 @@
bool emberAfOnOffClusterToggleCallback();
/**
- * @brief Scenes Cluster AddSceneResponse Command callback
- * @param status
- * @param groupId
- * @param sceneId
- */
-
-bool emberAfScenesClusterAddSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId);
-
-/**
- * @brief Scenes Cluster GetSceneMembershipResponse Command callback
- * @param status
- * @param capacity
- * @param groupId
- * @param sceneCount
- * @param sceneList
- */
-
-bool emberAfScenesClusterGetSceneMembershipResponseCallback(uint8_t status, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
- /* TYPE WARNING: array array defaults to */ uint8_t * sceneList);
-
-/**
- * @brief Scenes Cluster RemoveAllScenesResponse Command callback
- * @param status
- * @param groupId
- */
-
-bool emberAfScenesClusterRemoveAllScenesResponseCallback(uint8_t status, uint16_t groupId);
-
-/**
- * @brief Scenes Cluster RemoveSceneResponse Command callback
- * @param status
- * @param groupId
- * @param sceneId
- */
-
-bool emberAfScenesClusterRemoveSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId);
-
-/**
- * @brief Scenes Cluster StoreSceneResponse Command callback
- * @param status
- * @param groupId
- * @param sceneId
- */
-
-bool emberAfScenesClusterStoreSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId);
-
-/**
- * @brief Scenes Cluster ViewSceneResponse Command callback
- * @param status
- * @param groupId
- * @param sceneId
- * @param transitionTime
- * @param sceneName
- * @param extensionFieldSets
- */
-
-bool emberAfScenesClusterViewSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
- uint8_t * sceneName,
- /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets);
-
-/**
* @brief Scenes Cluster AddScene Command callback
* @param groupId
* @param sceneId
diff --git a/examples/all-clusters-app/all-clusters-common/gen/endpoint_config.h b/examples/all-clusters-app/all-clusters-common/gen/endpoint_config.h
index 1197299..d4a423f 100644
--- a/examples/all-clusters-app/all-clusters-common/gen/endpoint_config.h
+++ b/examples/all-clusters-app/all-clusters-common/gen/endpoint_config.h
@@ -89,62 +89,37 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 103
+#define GENERATED_ATTRIBUTE_COUNT 93
#define GENERATED_ATTRIBUTES \
{ \
- { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } }, /* Basic (client): cluster revision */ \
- { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Basic (server): cluster revision */ \
- { 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x08 } }, /* Basic (server): ZCL version */ \
- { 0x0007, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0x00 } }, /* Basic (server): power source */ \
- { \
- 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 2 } \
- }, /* Identify (client): cluster revision */ \
- { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 2 } }, /* Identify (server): cluster revision */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Basic (server): cluster revision */ \
+ { 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x08 } }, /* Basic (server): ZCL version */ \
+ { 0x0007, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0x00 } }, /* Basic (server): power source */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 2 } }, /* Identify (server): cluster revision */ \
{ \
0x0000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0x0000 } \
- }, /* Identify (server): identify time */ \
- { \
- 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
- }, /* Groups (client): cluster revision */ \
- { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Groups (server): cluster revision */ \
- { 0x0000, ZAP_TYPE(BITMAP8), 1, 0, { (uint8_t *) 0 } }, /* Groups (server): name support */ \
- { \
- 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
- }, /* Scenes (client): cluster revision */ \
+ }, /* Identify (server): identify time */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Groups (server): cluster revision */ \
+ { 0x0000, ZAP_TYPE(BITMAP8), 1, 0, { (uint8_t *) 0 } }, /* Groups (server): name support */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Scenes (server): cluster revision */ \
{ 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } }, /* Scenes (server): scene count */ \
{ 0x0001, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } }, /* Scenes (server): current scene */ \
{ 0x0002, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0000 } }, /* Scenes (server): current group */ \
{ 0x0003, ZAP_TYPE(BOOLEAN), 1, 0, { (uint8_t *) 0x00 } }, /* Scenes (server): scene valid */ \
{ 0x0004, ZAP_TYPE(BITMAP8), 1, 0, { (uint8_t *) 0 } }, /* Scenes (server): name support */ \
- { \
- 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 2 } \
- }, /* On/off (client): cluster revision */ \
- { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 2 } }, /* On/off (server): cluster revision */ \
- { 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, { (uint8_t *) 0x00 } }, /* On/off (server): on/off */ \
- { \
- 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
- }, /* Level Control (client): cluster revision */ \
- { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Level Control (server): cluster revision */ \
- { 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } }, /* Level Control (server): current level */ \
- { \
- 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
- }, /* Door Lock (client): cluster revision */ \
- { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Door Lock (server): cluster revision */ \
- { 0x0000, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0 } }, /* Door Lock (server): lock state */ \
- { 0x0001, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0 } }, /* Door Lock (server): lock type */ \
- { 0x0002, ZAP_TYPE(BOOLEAN), 1, 0, { (uint8_t *) 0 } }, /* Door Lock (server): actuator enabled */ \
- { \
- 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 } \
- }, /* Barrier Control (client): cluster revision */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 2 } }, /* On/off (server): cluster revision */ \
+ { 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, { (uint8_t *) 0x00 } }, /* On/off (server): on/off */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Level Control (server): cluster revision */ \
+ { 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } }, /* Level Control (server): current level */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Door Lock (server): cluster revision */ \
+ { 0x0000, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0 } }, /* Door Lock (server): lock state */ \
+ { 0x0001, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0 } }, /* Door Lock (server): lock type */ \
+ { 0x0002, ZAP_TYPE(BOOLEAN), 1, 0, { (uint8_t *) 0 } }, /* Door Lock (server): actuator enabled */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0001 } }, /* Barrier Control (server): cluster revision */ \
{ 0x0001, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0 } }, /* Barrier Control (server): barrier moving state */ \
{ 0x0002, ZAP_TYPE(BITMAP16), 2, 0, { (uint8_t *) 0 } }, /* Barrier Control (server): barrier safety status */ \
{ 0x0003, ZAP_TYPE(BITMAP8), 1, 0, { (uint8_t *) 0 } }, /* Barrier Control (server): barrier capabilities */ \
{ 0x000A, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0 } }, /* Barrier Control (server): barrier position */ \
- { \
- 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
- }, /* Color Control (client): cluster revision */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Color Control (server): cluster revision */ \
{ 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } }, /* Color Control (server): current hue */ \
{ 0x0001, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } }, /* Color Control (server): current saturation */ \
@@ -236,11 +211,8 @@
{ 0x0002, ZAP_TYPE(BITMAP16), 2, 0, { (uint8_t *) 0x0000 } }, /* IAS Zone (server): zone status */ \
{ \
0x0010, ZAP_TYPE(IEEE_ADDRESS), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(254) } \
- }, /* IAS Zone (server): IAS CIE address */ \
- { 0x0011, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0xff } }, /* IAS Zone (server): Zone ID */ \
- { \
- 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 } \
- }, /* Binding (client): cluster revision */ \
+ }, /* IAS Zone (server): IAS CIE address */ \
+ { 0x0011, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0xff } }, /* IAS Zone (server): Zone ID */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0001 } }, /* Binding (server): cluster revision */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } }, /* Basic (server): cluster revision */ \
{ 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x08 } }, /* Basic (server): ZCL version */ \
@@ -283,93 +255,71 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 24
+#define GENERATED_CLUSTER_COUNT 14
#define GENERATED_CLUSTERS \
{ \
- { 0x0000, ZAP_ATTRIBUTE_INDEX(0), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Basic (client) */ \
- { 0x0000, ZAP_ATTRIBUTE_INDEX(1), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 1, Cluster: Basic (server) */ \
- { \
- 0x0003, ZAP_ATTRIBUTE_INDEX(4), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
- }, /* Endpoint: 1, Cluster: Identify (client) */ \
+ { 0x0000, ZAP_ATTRIBUTE_INDEX(0), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 1, Cluster: Basic (server) */ \
{ 0x0003, \
- ZAP_ATTRIBUTE_INDEX(5), \
+ ZAP_ATTRIBUTE_INDEX(3), \
2, \
4, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayIdentifyServer }, /* Endpoint: 1, Cluster: Identify (server) */ \
- { 0x0004, ZAP_ATTRIBUTE_INDEX(7), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Groups (client) */ \
{ 0x0004, \
- ZAP_ATTRIBUTE_INDEX(8), \
+ ZAP_ATTRIBUTE_INDEX(5), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
- chipFuncArrayGroupsServer }, /* Endpoint: 1, Cluster: Groups (server) */ \
- { 0x0005, ZAP_ATTRIBUTE_INDEX(10), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Scenes (client) */ \
+ chipFuncArrayGroupsServer }, /* Endpoint: 1, Cluster: Groups (server) */ \
{ 0x0005, \
- ZAP_ATTRIBUTE_INDEX(11), \
+ ZAP_ATTRIBUTE_INDEX(7), \
6, \
8, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
- chipFuncArrayScenesServer }, /* Endpoint: 1, Cluster: Scenes (server) */ \
- { 0x0006, ZAP_ATTRIBUTE_INDEX(17), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: On/off (client) */ \
+ chipFuncArrayScenesServer }, /* Endpoint: 1, Cluster: Scenes (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(18), \
+ ZAP_ATTRIBUTE_INDEX(13), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/off (server) */ \
- { \
- 0x0008, ZAP_ATTRIBUTE_INDEX(20), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
- }, /* Endpoint: 1, Cluster: Level Control (client) */ \
{ 0x0008, \
- ZAP_ATTRIBUTE_INDEX(21), \
+ ZAP_ATTRIBUTE_INDEX(15), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayLevelControlServer }, /* Endpoint: 1, Cluster: Level Control (server) */ \
- { \
- 0x0101, ZAP_ATTRIBUTE_INDEX(23), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
- }, /* Endpoint: 1, Cluster: Door Lock (client) */ \
{ 0x0101, \
- ZAP_ATTRIBUTE_INDEX(24), \
+ ZAP_ATTRIBUTE_INDEX(17), \
4, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayDoorLockServer }, /* Endpoint: 1, Cluster: Door Lock (server) */ \
{ \
- 0x0103, ZAP_ATTRIBUTE_INDEX(28), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
- }, /* Endpoint: 1, Cluster: Barrier Control (client) */ \
- { \
- 0x0103, ZAP_ATTRIBUTE_INDEX(29), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0103, ZAP_ATTRIBUTE_INDEX(21), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Barrier Control (server) */ \
- { \
- 0x0300, ZAP_ATTRIBUTE_INDEX(34), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
- }, /* Endpoint: 1, Cluster: Color Control (client) */ \
{ 0x0300, \
- ZAP_ATTRIBUTE_INDEX(35), \
+ ZAP_ATTRIBUTE_INDEX(26), \
51, \
336, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayColorControlServer }, /* Endpoint: 1, Cluster: Color Control (server) */ \
{ \
- 0x0402, ZAP_ATTRIBUTE_INDEX(86), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(77), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \
{ 0x0500, \
- ZAP_ATTRIBUTE_INDEX(90), \
+ ZAP_ATTRIBUTE_INDEX(81), \
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) */ \
{ \
- 0xF000, ZAP_ATTRIBUTE_INDEX(96), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
- }, /* Endpoint: 1, Cluster: Binding (client) */ \
- { \
- 0xF000, ZAP_ATTRIBUTE_INDEX(97), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0xF000, ZAP_ATTRIBUTE_INDEX(87), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Binding (server) */ \
- { 0x0000, ZAP_ATTRIBUTE_INDEX(98), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 2, Cluster: Basic (server) */ \
+ { 0x0000, ZAP_ATTRIBUTE_INDEX(88), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 2, Cluster: Basic (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(101), \
+ ZAP_ATTRIBUTE_INDEX(91), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
@@ -381,7 +331,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 22, 419 }, { ZAP_CLUSTER_INDEX(22), 2, 7 }, \
+ { ZAP_CLUSTER_INDEX(0), 12, 399 }, { ZAP_CLUSTER_INDEX(12), 2, 7 }, \
}
// Largest attribute size is needed for various buffers
@@ -391,7 +341,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (0)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (426)
+#define ATTRIBUTE_MAX_SIZE (406)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (2)
@@ -435,291 +385,158 @@
// Array of EmberAfCommandMetadata structs.
#define ZAP_COMMAND_MASK(mask) COMMAND_MASK_##mask
-#define EMBER_AF_GENERATED_COMMAND_COUNT (171)
+#define EMBER_AF_GENERATED_COMMAND_COUNT (89)
#define GENERATED_COMMANDS \
{ \
{ 0x0000, 0x00, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Basic (client): MfgSpecificPing */ \
- { \
- 0x0000, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Basic (client): ResetToFactoryDefaults */ \
- { 0x0000, 0x00, \
- ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Basic (server): MfgSpecificPing */ \
+ ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Basic (server): MfgSpecificPing */ \
{ \
0x0000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Basic (server): ResetToFactoryDefaults */ \
{ \
0x0000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Basic (server): ResetToFactoryDefaults */ \
- { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (client): Identify */ \
- { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Identify (client): IdentifyQueryResponse */ \
{ 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (server): Identify */ \
{ 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Identify (server): IdentifyQueryResponse */ \
- { 0x0003, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (client): IdentifyQuery */ \
{ 0x0003, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (server): IdentifyQuery */ \
- { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): AddGroup */ \
- { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): AddGroupResponse */ \
{ 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): AddGroup */ \
{ 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (server): AddGroupResponse */ \
- { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): ViewGroup */ \
- { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): ViewGroupResponse */ \
{ 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): ViewGroup */ \
{ 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (server): ViewGroupResponse */ \
- { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): GetGroupMembership */ \
- { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): GetGroupMembershipResponse */ \
{ 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): GetGroupMembership */ \
{ 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (server): GetGroupMembershipResponse */ \
- { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): RemoveGroup */ \
- { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): RemoveGroupResponse */ \
{ 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): RemoveGroup */ \
{ 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (server): RemoveGroupResponse */ \
- { 0x0004, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): RemoveAllGroups */ \
{ 0x0004, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): RemoveAllGroups */ \
- { 0x0004, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): AddGroupIfIdentifying */ \
{ 0x0004, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): AddGroupIfIdentifying */ \
- { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): AddScene */ \
- { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): AddSceneResponse */ \
{ 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): AddScene */ \
{ 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): AddSceneResponse */ \
- { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): ViewScene */ \
- { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): ViewSceneResponse */ \
{ 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): ViewScene */ \
{ 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): ViewSceneResponse */ \
- { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RemoveScene */ \
- { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): RemoveSceneResponse */ \
{ 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): RemoveScene */ \
{ 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): RemoveSceneResponse */ \
- { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RemoveAllScenes */ \
- { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): RemoveAllScenesResponse */ \
{ 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): RemoveAllScenes */ \
{ 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): RemoveAllScenesResponse */ \
- { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): StoreScene */ \
- { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): StoreSceneResponse */ \
{ 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): StoreScene */ \
{ 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): StoreSceneResponse */ \
- { 0x0005, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RecallScene */ \
{ 0x0005, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): RecallScene */ \
- { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): GetSceneMembership */ \
- { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): GetSceneMembershipResponse */ \
{ 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): GetSceneMembership */ \
{ 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): GetSceneMembershipResponse */ \
- { 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): Off */ \
{ 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (server): Off */ \
{ 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (server): Off */ \
- { 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): On */ \
{ 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (server): On */ \
{ 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (server): On */ \
- { 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): Toggle */ \
{ 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (server): Toggle */ \
{ 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (server): Toggle */ \
- { 0x0008, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveToLevel */ \
{ 0x0008, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): MoveToLevel */ \
- { 0x0008, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Move */ \
{ 0x0008, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): Move */ \
- { 0x0008, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Step */ \
{ 0x0008, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): Step */ \
- { 0x0008, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Stop */ \
{ 0x0008, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): Stop */ \
- { 0x0008, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveToLevelWithOnOff */ \
{ 0x0008, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): MoveToLevelWithOnOff */ \
- { 0x0008, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveWithOnOff */ \
{ 0x0008, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): MoveWithOnOff */ \
- { 0x0008, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): StepWithOnOff */ \
{ 0x0008, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): StepWithOnOff */ \
- { 0x0008, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): StopWithOnOff */ \
{ 0x0008, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): StopWithOnOff */ \
- { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): LockDoor */ \
- { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): LockDoorResponse */ \
{ 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (server): LockDoor */ \
{ 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (server): LockDoorResponse */ \
- { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): UnlockDoor */ \
- { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): UnlockDoorResponse */ \
{ 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (server): UnlockDoor */ \
{ 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (server): UnlockDoorResponse */ \
{ 0x0101, 0x03, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): UnlockWithTimeout */ \
- { 0x0101, 0x03, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): UnlockWithTimeout */ \
{ 0x0101, 0x04, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetLogRecord */ \
- { 0x0101, 0x04, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): GetLogRecord */ \
{ 0x0101, 0x05, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetPin */ \
- { 0x0101, 0x05, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): SetPin */ \
{ 0x0101, 0x06, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetPin */ \
- { 0x0101, 0x06, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): GetPin */ \
{ 0x0101, 0x07, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearPin */ \
- { 0x0101, 0x07, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): ClearPin */ \
{ 0x0101, 0x08, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllPins */ \
- { 0x0101, 0x08, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): ClearAllPins */ \
{ \
- 0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Door Lock (client): SetWeekdaySchedule */ \
- { \
0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Door Lock (server): SetWeekdaySchedule */ \
{ \
- 0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Door Lock (client): GetWeekdaySchedule */ \
- { \
0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Door Lock (server): GetWeekdaySchedule */ \
{ \
- 0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Door Lock (client): ClearWeekdaySchedule */ \
- { \
0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Door Lock (server): ClearWeekdaySchedule */ \
{ \
- 0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Door Lock (client): SetYeardaySchedule */ \
- { \
0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Door Lock (server): SetYeardaySchedule */ \
{ \
- 0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Door Lock (client): GetYeardaySchedule */ \
- { \
0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Door Lock (server): GetYeardaySchedule */ \
{ \
- 0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Door Lock (client): ClearYeardaySchedule */ \
- { \
0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Door Lock (server): ClearYeardaySchedule */ \
{ \
- 0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Door Lock (client): SetHolidaySchedule */ \
- { \
0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Door Lock (server): SetHolidaySchedule */ \
{ \
- 0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Door Lock (client): GetHolidaySchedule */ \
- { \
0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Door Lock (server): GetHolidaySchedule */ \
{ \
- 0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Door Lock (client): ClearHolidaySchedule */ \
- { \
0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Door Lock (server): ClearHolidaySchedule */ \
{ 0x0101, 0x14, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetUserType */ \
- { 0x0101, 0x14, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): SetUserType */ \
{ 0x0101, 0x15, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetUserType */ \
- { 0x0101, 0x15, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): GetUserType */ \
{ 0x0101, 0x16, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetRfid */ \
- { 0x0101, 0x16, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): SetRfid */ \
{ 0x0101, 0x17, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetRfid */ \
- { 0x0101, 0x17, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): GetRfid */ \
{ 0x0101, 0x18, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearRfid */ \
- { 0x0101, 0x18, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): ClearRfid */ \
{ 0x0101, 0x19, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllRfids */ \
- { 0x0101, 0x19, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): ClearAllRfids */ \
- { 0x0103, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlGoToPercent */ \
{ 0x0103, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (server): BarrierControlGoToPercent */ \
- { 0x0103, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlStop */ \
{ 0x0103, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (server): BarrierControlStop */ \
{ 0x0300, 0x00, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveToHue */ \
- { 0x0300, 0x00, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Color Control (server): MoveToHue */ \
{ 0x0300, 0x01, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveHue */ \
- { 0x0300, 0x01, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Color Control (server): MoveHue */ \
{ 0x0300, 0x02, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StepHue */ \
- { 0x0300, 0x02, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Color Control (server): StepHue */ \
{ \
- 0x0300, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Color Control (client): MoveToSaturation */ \
- { \
0x0300, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Color Control (server): MoveToSaturation */ \
{ \
- 0x0300, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Color Control (client): MoveSaturation */ \
- { \
0x0300, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Color Control (server): MoveSaturation */ \
{ \
- 0x0300, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Color Control (client): StepSaturation */ \
- { \
0x0300, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Color Control (server): StepSaturation */ \
{ \
- 0x0300, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Color Control (client): MoveToHueAndSaturation */ \
- { \
0x0300, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Color Control (server): MoveToHueAndSaturation */ \
- { 0x0300, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveToColor */ \
{ 0x0300, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (server): MoveToColor */ \
- { 0x0300, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveColor */ \
{ 0x0300, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (server): MoveColor */ \
- { 0x0300, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): StepColor */ \
{ 0x0300, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (server): StepColor */ \
{ \
- 0x0300, 0x0A, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Color Control (client): MoveToColorTemperature */ \
- { \
0x0300, 0x0A, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Color Control (server): MoveToColorTemperature */ \
{ 0x0300, 0x47, \
- ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StopMoveStep */ \
- { 0x0300, 0x47, \
ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Color Control (server): StopMoveStep */ \
{ \
- 0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Color Control (client): MoveColorTemperature */ \
- { \
0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Color Control (server): MoveColorTemperature */ \
{ \
- 0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
- }, /* Color Control (client): StepColorTemperature */ \
- { \
0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) \
}, /* Color Control (server): StepColorTemperature */ \
{ 0x0500, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* IAS Zone (server): ZoneEnrollResponse */ \
{ 0x0500, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* IAS Zone (server): ZoneStatusChangeNotification */ \
{ 0x0500, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* IAS Zone (server): ZoneEnrollRequest */ \
- { 0xF000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (client): Bind */ \
{ 0xF000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (server): Bind */ \
- { 0xF000, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (client): Unbind */ \
{ 0xF000, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (server): Unbind */ \
}
// Array of EmberAfManufacturerCodeEntry structures for commands.
-#define GENERATED_COMMAND_MANUFACTURER_CODE_COUNT (2)
+#define GENERATED_COMMAND_MANUFACTURER_CODE_COUNT (1)
#define GENERATED_COMMAND_MANUFACTURER_CODES \
{ \
- { 0, 0x1002 }, { 2, 0x1002 }, \
+ { 0, 0x1002 }, \
}
// This is an array of EmberAfManufacturerCodeEntry structures for clusters.
diff --git a/examples/all-clusters-app/all-clusters-common/gen/gen_config.h b/examples/all-clusters-app/all-clusters-common/gen/gen_config.h
index bd18c97..bc8f8fc 100644
--- a/examples/all-clusters-app/all-clusters-common/gen/gen_config.h
+++ b/examples/all-clusters-app/all-clusters-common/gen/gen_config.h
@@ -29,62 +29,36 @@
#define EMBER_APS_UNICAST_MESSAGE_COUNT 10
/**** Cluster endpoint counts ****/
-#define EMBER_AF_BARRIER_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_BARRIER_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (2)
-#define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_COLOR_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_COLOR_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_DOOR_LOCK_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_DOOR_LOCK_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_GROUPS_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_GROUPS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_IAS_ZONE_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_IDENTIFY_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_LEVEL_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_ON_OFF_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT (2)
-#define EMBER_AF_SCENES_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_SCENES_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
-// Use this macro to check if the client side of the Barrier Control cluster is included
-#define ZCL_USING_BARRIER_CONTROL_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_BARRIER_CONTROL_CLIENT
-
// Use this macro to check if the server side of the Barrier Control cluster is included
#define ZCL_USING_BARRIER_CONTROL_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_BARRIER_CONTROL_SERVER
#define EMBER_AF_PLUGIN_BARRIER_CONTROL
-// Use this macro to check if the client side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_BASIC_CLIENT
-
// Use this macro to check if the server side of the Basic cluster is included
#define ZCL_USING_BASIC_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_BASIC_SERVER
#define EMBER_AF_PLUGIN_BASIC
-// Use this macro to check if the client side of the Binding cluster is included
-#define ZCL_USING_BINDING_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_BINDING_CLIENT
-
// Use this macro to check if the server side of the Binding cluster is included
#define ZCL_USING_BINDING_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_BINDING_SERVER
#define EMBER_AF_PLUGIN_BINDING
-// Use this macro to check if the client side of the Color Control cluster is included
-#define ZCL_USING_COLOR_CONTROL_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_COLOR_CONTROL_CLIENT
-
// Use this macro to check if the server side of the Color Control cluster is included
#define ZCL_USING_COLOR_CONTROL_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_COLOR_CONTROL_SERVER
@@ -94,19 +68,11 @@
#define EMBER_AF_PLUGIN_COLOR_CONTROL_SERVER_TEMP
#define EMBER_AF_PLUGIN_COLOR_CONTROL_SERVER_HSV
-// Use this macro to check if the client side of the Door Lock cluster is included
-#define ZCL_USING_DOOR_LOCK_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_DOOR_LOCK_CLIENT
-
// Use this macro to check if the server side of the Door Lock cluster is included
#define ZCL_USING_DOOR_LOCK_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_DOOR_LOCK_SERVER
#define EMBER_AF_PLUGIN_DOOR_LOCK
-// Use this macro to check if the client side of the Groups cluster is included
-#define ZCL_USING_GROUPS_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_GROUPS_CLIENT
-
// Use this macro to check if the server side of the Groups cluster is included
#define ZCL_USING_GROUPS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_GROUPS_SERVER
@@ -119,19 +85,11 @@
// User options for server plugin IAS Zone
#define EMBER_AF_PLUGIN_IAS_ZONE_SERVER_ZONE_TYPE 541
-// Use this macro to check if the client side of the Identify cluster is included
-#define ZCL_USING_IDENTIFY_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_IDENTIFY_CLIENT
-
// Use this macro to check if the server side of the Identify cluster is included
#define ZCL_USING_IDENTIFY_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_IDENTIFY_SERVER
#define EMBER_AF_PLUGIN_IDENTIFY
-// Use this macro to check if the client side of the Level Control cluster is included
-#define ZCL_USING_LEVEL_CONTROL_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_LEVEL_CONTROL_CLIENT
-
// Use this macro to check if the server side of the Level Control cluster is included
#define ZCL_USING_LEVEL_CONTROL_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_LEVEL_CONTROL_SERVER
@@ -141,19 +99,11 @@
#define EMBER_AF_PLUGIN_LEVEL_CONTROL_MINIMUM_LEVEL 0
#define EMBER_AF_PLUGIN_LEVEL_CONTROL_RATE 0
-// Use this macro to check if the client side of the On/off cluster is included
-#define ZCL_USING_ON_OFF_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_ON_OFF_CLIENT
-
// Use this macro to check if the server side of the On/off cluster is included
#define ZCL_USING_ON_OFF_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_ON_OFF_SERVER
#define EMBER_AF_PLUGIN_ON_OFF
-// Use this macro to check if the client side of the Scenes cluster is included
-#define ZCL_USING_SCENES_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_SCENES_CLIENT
-
// Use this macro to check if the server side of the Scenes cluster is included
#define ZCL_USING_SCENES_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_SCENES_SERVER
diff --git a/examples/all-clusters-app/esp32/main/component.mk b/examples/all-clusters-app/esp32/main/component.mk
index dcb0d49..d18376b 100644
--- a/examples/all-clusters-app/esp32/main/component.mk
+++ b/examples/all-clusters-app/esp32/main/component.mk
@@ -28,11 +28,8 @@
../third_party/connectedhomeip/src/app/util \
../third_party/connectedhomeip/src/app/clusters/on-off-server \
../third_party/connectedhomeip/src/app/clusters/level-control \
- ../third_party/connectedhomeip/src/app/clusters/identify-client \
../third_party/connectedhomeip/src/app/clusters/identify \
../third_party/connectedhomeip/src/app/clusters/barrier-control-server \
- ../third_party/connectedhomeip/src/app/clusters/scenes-client \
- ../third_party/connectedhomeip/src/app/clusters/groups-client \
../third_party/connectedhomeip/src/app/clusters/groups-server \
../third_party/connectedhomeip/src/app/clusters/color-control-server \
../third_party/connectedhomeip/src/app/clusters/temperature-measurement-server \
@@ -40,7 +37,6 @@
../third_party/connectedhomeip/src/app/clusters/basic \
../third_party/connectedhomeip/src/app/clusters/bindings \
../third_party/connectedhomeip/src/app/reporting \
- ../third_party/connectedhomeip/src/app/clusters/door-lock-client \
../third_party/connectedhomeip/src/app/clusters/door-lock-server \
../third_party/connectedhomeip/src/app/clusters/ias-zone-server \
# ../third_party/connectedhomeip/src/app/clusters/ias-zone-client \
@@ -49,6 +45,7 @@
COMPONENT_EXTRA_INCLUDES := $(PROJECT_PATH)/third_party/connectedhomeip/src/app/util \
$(PROJECT_PATH)/third_party/connectedhomeip/src/app/server \
$(PROJECT_PATH)/third_party/connectedhomeip/examples/all-clusters-app/all-clusters-common \
+ $(PROJECT_PATH)/third_party/connectedhomeip/third_party/nlio/repo/include \
$(PROJECT_PATH)/third_party/connectedhomeip/src
# So "gen/*" files are found by the src/app bits.
diff --git a/examples/bridge-app/bridge-common/gen/CHIPClientCallbacks.cpp b/examples/bridge-app/bridge-common/gen/CHIPClientCallbacks.cpp
new file mode 100644
index 0000000..f5f88af
--- /dev/null
+++ b/examples/bridge-app/bridge-common/gen/CHIPClientCallbacks.cpp
@@ -0,0 +1,842 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include "gen/CHIPClientCallbacks.h"
+
+#include "gen/enums.h"
+#include <app/util/CHIPDeviceCallbacksMgr.h>
+#include <app/util/af-enums.h>
+#include <app/util/af.h>
+#include <app/util/basic-types.h>
+#include <core/CHIPEncoding.h>
+#include <support/SafeInt.h>
+#include <support/logging/CHIPLogging.h>
+
+using namespace ::chip;
+
+#define CHECK_MESSAGE_LENGTH(value) \
+ if (!chip::CanCastTo<uint16_t>(value)) \
+ { \
+ ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ if (messageLen < value) \
+ { \
+ ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
+
+#define GET_RESPONSE_CALLBACKS(name) \
+ Callback::Cancelable * onSuccessCallback = nullptr; \
+ Callback::Cancelable * onFailureCallback = nullptr; \
+ NodeId sourceId = emberAfCurrentCommand()->source; \
+ uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \
+ CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onSuccessCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing success callback", name); \
+ } \
+ \
+ if (onFailureCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing failure callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+#define GET_REPORT_CALLBACK(name) \
+ Callback::Cancelable * onReportCallback = nullptr; \
+ CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onReportCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing report callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+void LogStatus(uint8_t status)
+{
+ switch (status)
+ {
+ case EMBER_ZCL_STATUS_SUCCESS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_FIELD:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_VALUE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_READ_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_FOUND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_SELECTOR:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WRITE_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ACTION_DENIED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_TIMEOUT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ABORT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_LIMIT_REACHED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status);
+ break;
+ default:
+ ChipLogError(Zcl, "Unknow status: 0x%02x", status);
+ break;
+ }
+}
+
+// Singleton instance of the callbacks manager
+app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance();
+
+bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ ChipLogProgress(Zcl, "DefaultResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " CommandId: 0x%02x", commandId);
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback");
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, static_cast<uint8_t>(status));
+ }
+
+ return true;
+}
+
+bool emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadAttributesResponseCallback");
+
+ // struct readAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute read
+ // per read command. So if multiple attributes are read at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes read at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "WriteAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback");
+
+ // struct writeAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute written
+ // per write command. So if multiple attributes are written at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback");
+
+ // struct configureReportingResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute report
+ // per configure command. So if multiple attributes are configured at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback");
+
+ // struct readReportingConfigurationResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval);
+
+ // FIXME: unk is not supported yet.
+
+ Callback::Callback<ReadReportingConfigurationReportedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout);
+
+ Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ }
+ }
+
+ return true;
+}
+
+bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen,
+ bool extended)
+{
+ ChipLogProgress(Zcl, "DiscoverAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " extended: %d", extended);
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback");
+
+ // struct discoverAttributesResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+ }
+
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "emberAfReportAttributeCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ NodeId sourceId = emberAfCurrentCommand()->source;
+ ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId);
+
+ EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
+ ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId);
+
+ // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed.
+ Callback::Cancelable * onFailureCallback = nullptr;
+
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ GET_REPORT_CALLBACK("emberAfReportAttributesCallback");
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+
+ return true;
+}
diff --git a/examples/bridge-app/bridge-common/gen/CHIPClientCallbacks.h b/examples/bridge-app/bridge-common/gen/CHIPClientCallbacks.h
new file mode 100644
index 0000000..14a3742
--- /dev/null
+++ b/examples/bridge-app/bridge-common/gen/CHIPClientCallbacks.h
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#pragma once
+
+#include <inttypes.h>
+
+// Global Response Callbacks
+typedef void (*DefaultSuccessCallback)(void * context);
+typedef void (*DefaultFailureCallback)(void * context, uint8_t status);
+typedef void (*BooleanAttributeCallback)(void * context, bool value);
+typedef void (*Int8uAttributeCallback)(void * context, uint8_t value);
+typedef void (*Int8sAttributeCallback)(void * context, int8_t value);
+typedef void (*Int16uAttributeCallback)(void * context, uint16_t value);
+typedef void (*Int16sAttributeCallback)(void * context, int16_t value);
+typedef void (*Int32uAttributeCallback)(void * context, uint32_t value);
+typedef void (*Int32sAttributeCallback)(void * context, int32_t value);
+typedef void (*Int64uAttributeCallback)(void * context, uint64_t value);
+typedef void (*Int64sAttributeCallback)(void * context, int64_t value);
+typedef void (*ReadReportingConfigurationReportedCallback)(void * context, uint16_t minInterval, uint16_t maxInterval);
+typedef void (*ReadReportingConfigurationReceivedCallback)(void * context, uint16_t timeout);
+
+// Cluster Specific Response Callbacks
diff --git a/examples/bridge-app/bridge-common/gen/CHIPClustersObjc.h b/examples/bridge-app/bridge-common/gen/CHIPClustersObjc.h
new file mode 100644
index 0000000..f7af3f1
--- /dev/null
+++ b/examples/bridge-app/bridge-common/gen/CHIPClustersObjc.h
@@ -0,0 +1,117 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#ifndef CHIP_CLUSTERS_H
+#define CHIP_CLUSTERS_H
+
+#import <Foundation/Foundation.h>
+
+typedef void (^ResponseHandler)(NSError * _Nullable error, NSDictionary * _Nullable values);
+
+@class CHIPDevice;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPLevelControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeRemainingTime:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeOptions:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeStartUpCurrentLevel:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeStartUpCurrentLevel:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPOnOff : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)off:(ResponseHandler)completionHandler;
+- (BOOL)offWithEffect:(uint8_t)effectId effectVariant:(uint8_t)effectVariant completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)on:(ResponseHandler)completionHandler;
+- (BOOL)onWithRecallGlobalScene:(ResponseHandler)completionHandler;
+- (BOOL)onWithTimedOff:(uint8_t)onOffControl
+ onTime:(uint16_t)onTime
+ offWaitTime:(uint16_t)offWaitTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)toggle:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeGlobalSceneControl:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeOnTime:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeOnTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeOffWaitTime:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeOffWaitTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeStartUpOnOff:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeStartUpOnOff:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* CHIP_CLUSTERS_H */
diff --git a/examples/bridge-app/bridge-common/gen/CHIPClustersObjc.mm b/examples/bridge-app/bridge-common/gen/CHIPClustersObjc.mm
new file mode 100644
index 0000000..48d3fce
--- /dev/null
+++ b/examples/bridge-app/bridge-common/gen/CHIPClustersObjc.mm
@@ -0,0 +1,1078 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#import <Foundation/Foundation.h>
+
+#import "CHIPDevice.h"
+#import "CHIPDevice_Internal.h"
+#import "gen/CHIPClientCallbacks.h"
+#import "gen/CHIPClustersObjc.h"
+
+#include <controller/CHIPClusters.h>
+
+using namespace ::chip;
+
+class CHIPDefaultSuccessCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPDefaultSuccessCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultSuccessCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDefaultSuccessCallbackBridge * callback = reinterpret_cast<CHIPDefaultSuccessCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDefaultFailureCallbackBridge : public Callback::Callback<DefaultFailureCallback> {
+public:
+ CHIPDefaultFailureCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultFailureCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultFailureCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t status)
+ {
+ CHIPDefaultFailureCallbackBridge * callback = reinterpret_cast<CHIPDefaultFailureCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL" code:status userInfo:@ { NSLocalizedDescriptionKey : @"" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPUnsupportedAttributeCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPUnsupportedAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ {
+ }
+
+ ~CHIPUnsupportedAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPUnsupportedAttributeCallbackBridge * callback = reinterpret_cast<CHIPUnsupportedAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL"
+ code:0
+ userInfo:@ { NSLocalizedDescriptionKey : @"Unsuported attribute type" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPBooleanAttributeCallbackBridge : public Callback::Callback<BooleanAttributeCallback> {
+public:
+ CHIPBooleanAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<BooleanAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPBooleanAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, bool value)
+ {
+ CHIPBooleanAttributeCallbackBridge * callback = reinterpret_cast<CHIPBooleanAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithBool:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8uAttributeCallbackBridge : public Callback::Callback<Int8uAttributeCallback> {
+public:
+ CHIPInt8uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t value)
+ {
+ CHIPInt8uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8sAttributeCallbackBridge : public Callback::Callback<Int8sAttributeCallback> {
+public:
+ CHIPInt8sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int8_t value)
+ {
+ CHIPInt8sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16uAttributeCallbackBridge : public Callback::Callback<Int16uAttributeCallback> {
+public:
+ CHIPInt16uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t value)
+ {
+ CHIPInt16uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16sAttributeCallbackBridge : public Callback::Callback<Int16sAttributeCallback> {
+public:
+ CHIPInt16sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int16_t value)
+ {
+ CHIPInt16sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+@interface CHIPLevelControl ()
+
+@property (readonly) Controller::LevelControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPLevelControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Move(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveToLevel(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Step(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Stop(onSuccess->Cancel(), onFailure->Cancel(), optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StopWithOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentLevel(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentLevel(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeRemainingTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeRemainingTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeOptions:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeOptions(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeOptions(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeStartUpCurrentLevel:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpCurrentLevel(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeStartUpCurrentLevel:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpCurrentLevel(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPOnOff ()
+
+@property (readonly) Controller::OnOffCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPOnOff
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)off:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)offWithEffect:(uint8_t)effectId effectVariant:(uint8_t)effectVariant completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.OffWithEffect(onSuccess->Cancel(), onFailure->Cancel(), effectId, effectVariant);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)on:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)onWithRecallGlobalScene:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.OnWithRecallGlobalScene(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)onWithTimedOff:(uint8_t)onOffControl
+ onTime:(uint16_t)onTime
+ offWaitTime:(uint16_t)offWaitTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.OnWithTimedOff(onSuccess->Cancel(), onFailure->Cancel(), onOffControl, onTime, offWaitTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)toggle:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onReport = new CHIPBooleanAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeGlobalSceneControl:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeGlobalSceneControl(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeOnTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeOnTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeOnTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeOnTime(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeOffWaitTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeOffWaitTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeOffWaitTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeOffWaitTime(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeStartUpOnOff:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeStartUpOnOff:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpOnOff(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
diff --git a/examples/chip-tool/BUILD.gn b/examples/chip-tool/BUILD.gn
index 8b9acee..aeae07d 100644
--- a/examples/chip-tool/BUILD.gn
+++ b/examples/chip-tool/BUILD.gn
@@ -19,15 +19,39 @@
assert(chip_build_tools)
+config("includes") {
+ include_dirs = [ "." ]
+}
+
executable("chip-tool") {
sources = [
+ "${chip_root}/src/app/reporting/reporting-default-configuration.cpp",
+ "${chip_root}/src/app/reporting/reporting.cpp",
+ "${chip_root}/src/app/server/DataModelHandler.cpp",
+ "${chip_root}/src/app/util/af-event.cpp",
+ "${chip_root}/src/app/util/af-main-common.cpp",
+ "${chip_root}/src/app/util/attribute-size.cpp",
+ "${chip_root}/src/app/util/attribute-storage.cpp",
+ "${chip_root}/src/app/util/attribute-table.cpp",
+ "${chip_root}/src/app/util/binding-table.cpp",
+ "${chip_root}/src/app/util/chip-message-send.cpp",
+ "${chip_root}/src/app/util/client-api.cpp",
+ "${chip_root}/src/app/util/ember-print.cpp",
+ "${chip_root}/src/app/util/message.cpp",
+ "${chip_root}/src/app/util/process-cluster-message.cpp",
+ "${chip_root}/src/app/util/process-global-message.cpp",
+ "${chip_root}/src/app/util/util.cpp",
"commands/clusters/ModelCommand.cpp",
"commands/common/Command.cpp",
"commands/common/Commands.cpp",
"commands/pairing/PairingCommand.cpp",
"commands/payload/AdditionalDataParseCommand.cpp",
"commands/payload/SetupPayloadParseCommand.cpp",
+ "commands/reporting/ReportingCommand.cpp",
"config/PersistentStorage.cpp",
+ "gen/CHIPClientCallbacks.cpp",
+ "gen/call-command-handler.cpp",
+ "gen/callback-stub.cpp",
"main.cpp",
]
@@ -40,9 +64,12 @@
cflags = [ "-Wconversion" ]
public_deps = [
+ "${chip_root}/src/app/server",
"${chip_root}/src/lib",
"${chip_root}/third_party/inipp",
]
+ public_configs = [ ":includes" ]
+
output_dir = root_out_dir
}
diff --git a/examples/chip-tool/chip-tool.zap b/examples/chip-tool/chip-tool.zap
new file mode 100644
index 0000000..55f4d7e
--- /dev/null
+++ b/examples/chip-tool/chip-tool.zap
@@ -0,0 +1,3087 @@
+{
+ "writeTime": "Wed Feb 03 2021 16:25:50 GMT+0100 (Central European Standard Time)",
+ "featureLevel": 6,
+ "creator": "zap",
+ "keyValuePairs": [
+ {
+ "key": "commandDiscovery",
+ "value": "1"
+ },
+ {
+ "key": "defaultResponsePolicy",
+ "value": "always"
+ },
+ {
+ "key": "manufacturerCodes",
+ "value": "0x1002"
+ }
+ ],
+ "package": [
+ {
+ "pathRelativity": "relativeToZap",
+ "path": "../../../src/app/zap-templates/zcl/zcl.json",
+ "version": "ZCL Test Data",
+ "type": "zcl-properties"
+ },
+ {
+ "pathRelativity": "relativeToZap",
+ "path": "../../../src/app/zap-templates/app-templates.json",
+ "version": "chip-v1",
+ "type": "gen-templates-json"
+ }
+ ],
+ "endpointTypes": [
+ {
+ "name": "Anonymous Endpoint Type",
+ "deviceTypeName": "CHIP-All-Clusters-Server",
+ "deviceTypeCode": 0,
+ "deviceTypeProfileId": 259,
+ "clusters": [
+ {
+ "name": "Basic",
+ "code": 0,
+ "mfgCode": null,
+ "define": "BASIC_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "ResetToFactoryDefaults",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MfgSpecificPing",
+ "code": 0,
+ "mfgCode": "0x1002",
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Basic",
+ "code": 0,
+ "mfgCode": null,
+ "define": "BASIC_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "ZCL version",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x08",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "power source",
+ "code": 7,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Identify",
+ "code": 3,
+ "mfgCode": null,
+ "define": "IDENTIFY_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "Identify",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "IdentifyQuery",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Identify",
+ "code": 3,
+ "mfgCode": null,
+ "define": "IDENTIFY_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "identify time",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ],
+ "commands": [
+ {
+ "name": "IdentifyQueryResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ]
+ },
+ {
+ "name": "Groups",
+ "code": 4,
+ "mfgCode": null,
+ "define": "GROUPS_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "AddGroup",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ViewGroup",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetGroupMembership",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveGroup",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveAllGroups",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "AddGroupIfIdentifying",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Groups",
+ "code": 4,
+ "mfgCode": null,
+ "define": "GROUPS_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "AddGroupResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ViewGroupResponse",
+ "code": 1,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetGroupMembershipResponse",
+ "code": 2,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveGroupResponse",
+ "code": 3,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "name support",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Scenes",
+ "code": 5,
+ "mfgCode": null,
+ "define": "SCENES_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "AddScene",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ViewScene",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveScene",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveAllScenes",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StoreScene",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RecallScene",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetSceneMembership",
+ "code": 6,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Scenes",
+ "code": 5,
+ "mfgCode": null,
+ "define": "SCENES_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "AddSceneResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ViewSceneResponse",
+ "code": 1,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveSceneResponse",
+ "code": 2,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveAllScenesResponse",
+ "code": 3,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StoreSceneResponse",
+ "code": 4,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetSceneMembershipResponse",
+ "code": 6,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "scene count",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current scene",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current group",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "scene valid",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "name support",
+ "code": 4,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "On/off",
+ "code": 6,
+ "mfgCode": null,
+ "define": "ON_OFF_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "Off",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "On",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Toggle",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "On/off",
+ "code": 6,
+ "mfgCode": null,
+ "define": "ON_OFF_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "on/off",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Level Control",
+ "code": 8,
+ "mfgCode": null,
+ "define": "LEVEL_CONTROL_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "MoveToLevel",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Move",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Step",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Stop",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToLevelWithOnOff",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveWithOnOff",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepWithOnOff",
+ "code": 6,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StopWithOnOff",
+ "code": 7,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Level Control",
+ "code": 8,
+ "mfgCode": null,
+ "define": "LEVEL_CONTROL_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current level",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Door Lock",
+ "code": 257,
+ "mfgCode": null,
+ "define": "DOOR_LOCK_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "LockDoor",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "UnlockDoor",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "UnlockWithTimeout",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetLogRecord",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetPin",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetPin",
+ "code": 6,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearPin",
+ "code": 7,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearAllPins",
+ "code": 8,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetWeekdaySchedule",
+ "code": 11,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetWeekdaySchedule",
+ "code": 12,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearWeekdaySchedule",
+ "code": 13,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetYeardaySchedule",
+ "code": 14,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetYeardaySchedule",
+ "code": 15,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearYeardaySchedule",
+ "code": 16,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetHolidaySchedule",
+ "code": 17,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetHolidaySchedule",
+ "code": 18,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearHolidaySchedule",
+ "code": 19,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetUserType",
+ "code": 20,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetUserType",
+ "code": 21,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetRfid",
+ "code": 22,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetRfid",
+ "code": 23,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearRfid",
+ "code": 24,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearAllRfids",
+ "code": 25,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Door Lock",
+ "code": 257,
+ "mfgCode": null,
+ "define": "DOOR_LOCK_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "LockDoorResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "UnlockDoorResponse",
+ "code": 1,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "UnlockWithTimeoutResponse",
+ "code": 3,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetLogRecordResponse",
+ "code": 4,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetPinResponse",
+ "code": 5,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetPinResponse",
+ "code": 6,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearPinResponse",
+ "code": 7,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearAllPinsResponse",
+ "code": 8,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetUserStatusResponse",
+ "code": 9,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 0,
+ "outgoing": 0
+ },
+ {
+ "name": "GetUserStatusResponse",
+ "code": 10,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 0,
+ "outgoing": 0
+ },
+ {
+ "name": "SetWeekdayScheduleResponse",
+ "code": 11,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetWeekdayScheduleResponse",
+ "code": 12,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearWeekdayScheduleResponse",
+ "code": 13,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetYeardayScheduleResponse",
+ "code": 14,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetYeardayScheduleResponse",
+ "code": 15,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearYeardayScheduleResponse",
+ "code": 16,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetHolidayScheduleResponse",
+ "code": 17,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetHolidayScheduleResponse",
+ "code": 18,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearHolidayScheduleResponse",
+ "code": 19,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetUserTypeResponse",
+ "code": 20,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetUserTypeResponse",
+ "code": 21,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetRfidResponse",
+ "code": 22,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetRfidResponse",
+ "code": 23,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearRfidResponse",
+ "code": 24,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearAllRfidsResponse",
+ "code": 25,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "lock state",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "lock type",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "actuator enabled",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "door state",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable logging",
+ "code": 32,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "language",
+ "code": 33,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "led settings",
+ "code": 34,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "auto relock time",
+ "code": 35,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "sound volume",
+ "code": 36,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "operating mode",
+ "code": 37,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "default configuration register",
+ "code": 39,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable local programming",
+ "code": 40,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x01",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable one touch locking",
+ "code": 41,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable inside status led",
+ "code": 42,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable privacy mode button",
+ "code": 43,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "wrong code entry limit",
+ "code": 48,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "user code temporary disable time",
+ "code": 49,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "send pin over the air",
+ "code": 50,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "require pin for rf operation",
+ "code": 51,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "zigbee security level",
+ "code": 52,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "alarm mask",
+ "code": 64,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "keypad operation event mask",
+ "code": 65,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "RF operation event mask",
+ "code": 66,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "manual operation event mask",
+ "code": 67,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "rfid operation event mask",
+ "code": 68,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "keypad programming event mask",
+ "code": 69,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "rf programming event mask",
+ "code": 70,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "rfid programming event mask",
+ "code": 71,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Barrier Control",
+ "code": 259,
+ "mfgCode": null,
+ "define": "BARRIER_CONTROL_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "BarrierControlGoToPercent",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "BarrierControlStop",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Barrier Control",
+ "code": 259,
+ "mfgCode": null,
+ "define": "BARRIER_CONTROL_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "barrier moving state",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "barrier safety status",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "barrier capabilities",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "barrier position",
+ "code": 10,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Color Control",
+ "code": 768,
+ "mfgCode": null,
+ "define": "COLOR_CONTROL_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "MoveToHue",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveHue",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepHue",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToSaturation",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveSaturation",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepSaturation",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToHueAndSaturation",
+ "code": 6,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToColor",
+ "code": 7,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveColor",
+ "code": 8,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepColor",
+ "code": 9,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToColorTemperature",
+ "code": 10,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StopMoveStep",
+ "code": 71,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveColorTemperature",
+ "code": 75,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepColorTemperature",
+ "code": 76,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Color Control",
+ "code": 768,
+ "mfgCode": null,
+ "define": "COLOR_CONTROL_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current hue",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current saturation",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "remaining time",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current x",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x616B",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current y",
+ "code": 4,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x607D",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "drift compensation",
+ "code": 5,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "compensation text",
+ "code": 6,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color temperature",
+ "code": 7,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00FA",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color mode",
+ "code": 8,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x01",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color control options",
+ "code": 15,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "number of primaries",
+ "code": 16,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 1 x",
+ "code": 17,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 1 y",
+ "code": 18,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 1 intensity",
+ "code": 19,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 2 x",
+ "code": 21,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 2 y",
+ "code": 22,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 2 intensity",
+ "code": 23,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 3 x",
+ "code": 25,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 3 y",
+ "code": 26,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 3 intensity",
+ "code": 27,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 4 x",
+ "code": 32,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 4 y",
+ "code": 33,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 4 intensity",
+ "code": 34,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 5 x",
+ "code": 36,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 5 y",
+ "code": 37,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 5 intensity",
+ "code": 38,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 6 x",
+ "code": 40,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 6 y",
+ "code": 41,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 6 intensity",
+ "code": 42,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "white point x",
+ "code": 48,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "white point y",
+ "code": 49,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point r x",
+ "code": 50,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point r y",
+ "code": 51,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point r intensity",
+ "code": 52,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point g x",
+ "code": 54,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point g y",
+ "code": 55,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point g intensity",
+ "code": 56,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point b x",
+ "code": 58,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point b y",
+ "code": 59,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point b intensity",
+ "code": 60,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "couple color temp to level min-mireds",
+ "code": 16397,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "start up color temperature mireds",
+ "code": 16400,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enhanced current hue",
+ "code": 16384,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enhanced color mode",
+ "code": 16385,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x01",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color loop active",
+ "code": 16386,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color loop direction",
+ "code": 16387,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color loop time",
+ "code": 16388,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0019",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color capabilities",
+ "code": 16394,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color temp physical min",
+ "code": 16395,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color temp physical max",
+ "code": 16396,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0xFEFF",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Temperature Measurement",
+ "code": 1026,
+ "mfgCode": null,
+ "define": "TEMP_MEASUREMENT_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Temperature Measurement",
+ "code": 1026,
+ "mfgCode": null,
+ "define": "TEMP_MEASUREMENT_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "measured value",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x8000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "min measured value",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x8000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "max measured value",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x8000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "tolerance",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "IAS Zone",
+ "code": 1280,
+ "mfgCode": null,
+ "define": "IAS_ZONE_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "ZoneEnrollResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "IAS Zone",
+ "code": 1280,
+ "mfgCode": null,
+ "define": "IAS_ZONE_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "ZoneStatusChangeNotification",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ZoneEnrollRequest",
+ "code": 1,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "zone state",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "zone type",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "zone status",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "IAS CIE address",
+ "code": 16,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "Zone ID",
+ "code": 17,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0xff",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Binding",
+ "code": 61440,
+ "mfgCode": null,
+ "define": "BINDING_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "Bind",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Unbind",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Binding",
+ "code": 61440,
+ "mfgCode": null,
+ "define": "BINDING_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "endpoints": [
+ {
+ "endpointTypeName": "Anonymous Endpoint Type",
+ "endpointTypeIndex": 0,
+ "endpointTypeRef": 1,
+ "profileId": "0x0103",
+ "endpointId": 1,
+ "networkId": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/chip-tool/commands/clusters/Commands.h b/examples/chip-tool/commands/clusters/Commands.h
index 23ae83c..7cf785f 100644
--- a/examples/chip-tool/commands/clusters/Commands.h
+++ b/examples/chip-tool/commands/clusters/Commands.h
@@ -1,6 +1,6 @@
-/**
+/*
*
- * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2021 Project CHIP Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,1055 +14,551 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-// This file is generated by ZAP. Please do not edit manually.
-//
-//
+
+// THIS FILE IS GENERATED BY ZAP
#pragma once
#include "ModelCommand.h"
-#include "ModelCommandResponse.h"
+#include "gen/CHIPClientCallbacks.h"
+#include <controller/CHIPClusters.h>
-#include <limits>
-
-#include <app/util/basic-types.h>
-#include <support/SafeInt.h>
-
-#define CHECK_MESSAGE_LENGTH(value) \
- if (!chip::CanCastTo<uint16_t>(value)) \
- { \
- ChipLogError(chipTool, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
- return false; \
- } \
- \
- if (messageLen < value) \
- { \
- ChipLogError(chipTool, "Unexpected response length: %d", messageLen); \
- return false; \
- } \
- \
- messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
-
-typedef enum
+static void OnDefaultSuccessResponse(void * context)
{
- EMBER_ZCL_STATUS_SUCCESS = 0x00,
- EMBER_ZCL_STATUS_FAILURE = 0x01,
- EMBER_ZCL_STATUS_REQUEST_DENIED = 0x70,
- EMBER_ZCL_STATUS_MULTIPLE_REQUEST_NOT_ALLOWED = 0x71,
- EMBER_ZCL_STATUS_INDICATION_REDIRECTION_TO_AP = 0x72,
- EMBER_ZCL_STATUS_PREFERENCE_DENIED = 0x73,
- EMBER_ZCL_STATUS_PREFERENCE_IGNORED = 0x74,
- EMBER_ZCL_STATUS_NOT_AUTHORIZED = 0x7E,
- EMBER_ZCL_STATUS_RESERVED_FIELD_NOT_ZERO = 0x7F,
- EMBER_ZCL_STATUS_MALFORMED_COMMAND = 0x80,
- EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND = 0x81,
- EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND = 0x82,
- EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND = 0x83,
- EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND = 0x84,
- EMBER_ZCL_STATUS_INVALID_FIELD = 0x85,
- EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE = 0x86,
- EMBER_ZCL_STATUS_INVALID_VALUE = 0x87,
- EMBER_ZCL_STATUS_READ_ONLY = 0x88,
- EMBER_ZCL_STATUS_INSUFFICIENT_SPACE = 0x89,
- EMBER_ZCL_STATUS_DUPLICATE_EXISTS = 0x8A,
- EMBER_ZCL_STATUS_NOT_FOUND = 0x8B,
- EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE = 0x8C,
- EMBER_ZCL_STATUS_INVALID_DATA_TYPE = 0x8D,
- EMBER_ZCL_STATUS_INVALID_SELECTOR = 0x8E,
- EMBER_ZCL_STATUS_WRITE_ONLY = 0x8F,
- EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE = 0x90,
- EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND = 0x91,
- EMBER_ZCL_STATUS_INCONSISTENT = 0x92,
- EMBER_ZCL_STATUS_ACTION_DENIED = 0x93,
- EMBER_ZCL_STATUS_TIMEOUT = 0x94,
- EMBER_ZCL_STATUS_ABORT = 0x95,
- EMBER_ZCL_STATUS_INVALID_IMAGE = 0x96,
- EMBER_ZCL_STATUS_WAIT_FOR_DATA = 0x97,
- EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE = 0x98,
- EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE = 0x99,
- EMBER_ZCL_STATUS_HARDWARE_FAILURE = 0xC0,
- EMBER_ZCL_STATUS_SOFTWARE_FAILURE = 0xC1,
- EMBER_ZCL_STATUS_CALIBRATION_ERROR = 0xC2,
- EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER = 0xC3,
-} EmberAfStatus;
+ ChipLogProgress(chipTool, "Default Success Response");
-bool CheckStatus(uint8_t status)
-{
- bool success = false;
-
- switch (status)
- {
- case EMBER_ZCL_STATUS_SUCCESS:
- success = true;
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_FAILURE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_REQUEST_DENIED:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_REQUEST_DENIED (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_MULTIPLE_REQUEST_NOT_ALLOWED:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_REQUEST_NOT_ALLOWED (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_INDICATION_REDIRECTION_TO_AP:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_INDICATION_REDIRECTION_TO_AP (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_PREFERENCE_DENIED:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_PREFERENCE_DENIED (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_PREFERENCE_IGNORED:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_PREFERENCE_IGNORED (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_RESERVED_FIELD_NOT_ZERO:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_RESERVED_FIELD_NOT_ZERO (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_INVALID_FIELD:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_INVALID_VALUE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_READ_ONLY:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_NOT_FOUND:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_INVALID_SELECTOR:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_WRITE_ONLY:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_INCONSISTENT:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_INCONSISTENT (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_ACTION_DENIED:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_TIMEOUT:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_ABORT:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_INVALID_IMAGE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_CALIBRATION_ERROR:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_CALIBRATION_ERROR (0x%02x)", status);
- break;
- case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
- ChipLogProgress(chipTool, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
- break;
- default:
- ChipLogError(chipTool, "Unknow status: 0x%02x", status);
- break;
- }
-
- return success;
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
}
-bool ReadAttributeValue(uint8_t *& message, uint16_t & messageLen)
+static void OnDefaultFailureResponse(void * context, uint8_t status)
{
- CHECK_MESSAGE_LENGTH(1);
- uint8_t type = chip::Encoding::Read8(message);
- ChipLogProgress(chipTool, " type: 0x%02x", type);
+ ChipLogProgress(chipTool, "Default Failure Response: 0x%02x", status);
- // FIXME: Should we have a mapping of type ids to types, based on
- // table 2.6.2.2 in Rev 8 of the ZCL spec?
- switch (type)
- {
- case 0x00: // nodata / No data
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0x08: // data8 / 8-bit data
- CHECK_MESSAGE_LENGTH(1);
- ChipLogProgress(chipTool, " value: 0x%02x", chip::Encoding::Read8(message));
- return true;
- break;
- case 0x09: // data16 / 16-bit data
- CHECK_MESSAGE_LENGTH(2);
- ChipLogProgress(chipTool, " value: 0x%04x", chip::Encoding::LittleEndian::Read16(message));
- return true;
- break;
- case 0x0A: // data24 / 24-bit data
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 3;
- break;
- case 0x0B: // data32 / 32-bit data
- CHECK_MESSAGE_LENGTH(4);
- ChipLogProgress(chipTool, " value: 0x%08x", chip::Encoding::LittleEndian::Read32(message));
- return true;
- break;
- case 0x0C: // data40 / 40-bit data
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 5;
- break;
- case 0x0D: // data48 / 48-bit data
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 6;
- break;
- case 0x0E: // data56 / 56-bit data
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 7;
- break;
- case 0x0F: // data64 / 64-bit data
- CHECK_MESSAGE_LENGTH(8);
- ChipLogProgress(chipTool, " value: 0x%16x", chip::Encoding::LittleEndian::Read64(message));
- return true;
- break;
- case 0x10: // bool / Boolean
- CHECK_MESSAGE_LENGTH(1);
- ChipLogProgress(chipTool, " value: 0x%02x", chip::Encoding::Read8(message));
- return true;
- break;
- case 0x18: // map8 / 8-bit bitmap
- CHECK_MESSAGE_LENGTH(1);
- ChipLogProgress(chipTool, " value: 0x%02x", chip::Encoding::Read8(message));
- return true;
- break;
- case 0x19: // map16 / 16-bit bitmap
- CHECK_MESSAGE_LENGTH(2);
- ChipLogProgress(chipTool, " value: 0x%04x", chip::Encoding::LittleEndian::Read16(message));
- return true;
- break;
- case 0x1A: // map24 / 24-bit bitmap
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 3;
- break;
- case 0x1B: // map32 / 32-bit bitmap
- CHECK_MESSAGE_LENGTH(4);
- ChipLogProgress(chipTool, " value: 0x%08x", chip::Encoding::LittleEndian::Read32(message));
- return true;
- break;
- case 0x1C: // map40 / 40-bit bitmap
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 5;
- break;
- case 0x1D: // map48 / 48-bit bitmap
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 6;
- break;
- case 0x1E: // map56 / 56-bit bitmap
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 7;
- break;
- case 0x1F: // map64 / 64-bit bitmap
- CHECK_MESSAGE_LENGTH(8);
- ChipLogProgress(chipTool, " value: 0x%16x", chip::Encoding::LittleEndian::Read64(message));
- return true;
- break;
- case 0x20: // uint8 / Unsigned 8-bit integer
- CHECK_MESSAGE_LENGTH(1);
- ChipLogProgress(chipTool, " value: 0x%02x", chip::Encoding::Read8(message));
- return true;
- break;
- case 0x21: // uint16 / Unsigned 16-bit integer
- CHECK_MESSAGE_LENGTH(2);
- ChipLogProgress(chipTool, " value: 0x%04x", chip::Encoding::LittleEndian::Read16(message));
- return true;
- break;
- case 0x22: // uint24 / Unsigned 24-bit integer
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 3;
- break;
- case 0x23: // uint32 / Unsigned 32-bit integer
- CHECK_MESSAGE_LENGTH(4);
- ChipLogProgress(chipTool, " value: 0x%08x", chip::Encoding::LittleEndian::Read32(message));
- return true;
- break;
- case 0x24: // uint40 / Unsigned 40-bit integer
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 5;
- break;
- case 0x25: // uint48 / Unsigned 48-bit integer
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 6;
- break;
- case 0x26: // uint56 / Unsigned 56-bit integer
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 7;
- break;
- case 0x27: // uint64 / Unsigned 64-bit integer
- CHECK_MESSAGE_LENGTH(8);
- ChipLogProgress(chipTool, " value: 0x%16x", chip::Encoding::LittleEndian::Read64(message));
- return true;
- break;
- case 0x28: // int8 / Signed 8-bit integer
- CHECK_MESSAGE_LENGTH(1);
- ChipLogProgress(chipTool, " value: %d", chip::CastToSigned(chip::Encoding::Read8(message)));
- return true;
- break;
- case 0x29: // int16 / Signed 16-bit integer
- CHECK_MESSAGE_LENGTH(2);
- ChipLogProgress(chipTool, " value: %d", chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message)));
- return true;
- break;
- case 0x2A: // int24 / Signed 24-bit integer
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 3;
- break;
- case 0x2B: // int32 / Signed 32-bit integer
- CHECK_MESSAGE_LENGTH(4);
- ChipLogProgress(chipTool, " value: %d", chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message)));
- return true;
- break;
- case 0x2C: // int40 / Signed 40-bit integer
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 5;
- break;
- case 0x2D: // int48 / Signed 48-bit integer
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 6;
- break;
- case 0x2E: // int56 / Signed 56-bit integer
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 7;
- break;
- case 0x2F: // int64 / Signed 64-bit integer
- CHECK_MESSAGE_LENGTH(8);
- ChipLogProgress(chipTool, " value: %d", chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message)));
- return true;
- break;
- case 0x30: // enum8 / 8-bit enumeration
- CHECK_MESSAGE_LENGTH(1);
- ChipLogProgress(chipTool, " value: 0x%02x", chip::Encoding::Read8(message));
- return true;
- break;
- case 0x31: // enum16 / 16-bit enumeration
- CHECK_MESSAGE_LENGTH(2);
- ChipLogProgress(chipTool, " value: 0x%04x", chip::Encoding::LittleEndian::Read16(message));
- return true;
- break;
- case 0x38: // semi / Semi-precision
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0x39: // single / Single precision
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0x3A: // double / Double precision
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0x41: // octstr / Octet string
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0x42: // string / Character string
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0x43: // octstr16 / Long octet string
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 2;
- break;
- case 0x44: // string16 / Long character string
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 2;
- break;
- case 0x48: // array / Array
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0x49: // struct / Structure
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0x50: // set / Set
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0x51: // bag / Bag
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0xE0: // ToD / Time of day
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0xE1: // date / Date
- CHECK_MESSAGE_LENGTH(4);
- ChipLogProgress(chipTool, " value: 0x%08x", chip::Encoding::LittleEndian::Read32(message));
- return true;
- break;
- case 0xE2: // UTC / UTCTime
- CHECK_MESSAGE_LENGTH(4);
- ChipLogProgress(chipTool, " value: 0x%08x", chip::Encoding::LittleEndian::Read32(message));
- return true;
- break;
- case 0xE8: // clusterId / Cluster ID
- CHECK_MESSAGE_LENGTH(2);
- ChipLogProgress(chipTool, " value: 0x%04x", chip::Encoding::LittleEndian::Read16(message));
- return true;
- break;
- case 0xE9: // attribId / Attribute ID
- CHECK_MESSAGE_LENGTH(2);
- ChipLogProgress(chipTool, " value: 0x%04x", chip::Encoding::LittleEndian::Read16(message));
- return true;
- break;
- case 0xEA: // bacOID / BACnet OID
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- case 0xF0: // EUI64 / IEEE address
- CHECK_MESSAGE_LENGTH(8);
- ChipLogProgress(chipTool, " value: 0x%16x", chip::Encoding::LittleEndian::Read64(message));
- return true;
- break;
- case 0xF1: // key128 / 128-bit security key
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 16;
- break;
- case 0xFF: // unk / Unknown
- ChipLogError(chipTool, "Type 0x%02x is not supported", type);
- message += 0;
- break;
- }
-
- return false;
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(false);
}
-/*----------------------------------------------------------------------------*\
-| Global Command Responses | ID |
-|------------------------------------------------------------------------------|
-| * ReadAttributesResponse | 0x01 |
-| * WriteAttributesResponse | 0x04 |
-| * WriteAttributesNoResponse | 0x05 |
-| * ConfigureReportingResponse | 0x07 |
-| * ReadReportingConfigurationResponse | 0x09 |
-| * DefaultResponse | 0x0B |
-| * DiscoverAttributesResponse | 0x0D |
-| * WriteAttributesStructuredResponse | 0x10 |
-| * DiscoverCommandsReceivedResponse | 0x12 |
-| * DiscoverCommandsGeneratedResponse | 0x14 |
-| * DiscoverAttributesExtendedResponse | 0x16 |
-\*----------------------------------------------------------------------------*/
-
-/*
- * Command ReadAttributesResponse
- */
-class ReadAttributesResponse : public ModelCommandResponse
+typedef void (*UnsupportedAttributeCallback)(void * context);
+static void OnUnsupportedAttributeResponse(void * context)
{
-public:
- ReadAttributesResponse() : ModelCommandResponse(0x01) {}
+ ChipLogError(chipTool, "Unsupported attribute Response. This should never happen !");
+}
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ReadAttributesResponse (0x01):");
-
- // struct readAttributeResponseRecord[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
- ChipLogProgress(chipTool, " %s: 0x%04x", "attributeId", attributeId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- if (status == 0)
- {
- if (!ReadAttributeValue(message, messageLen))
- {
- return false;
- }
- }
- }
- return success;
- }
-};
-
-/*
- * Command WriteAttributesResponse
- */
-class WriteAttributesResponse : public ModelCommandResponse
+static void OnBooleanAttributeResponse(void * context, bool value)
{
-public:
- WriteAttributesResponse() : ModelCommandResponse(0x04) {}
+ ChipLogProgress(chipTool, "Boolean attribute Response: %d", value);
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "WriteAttributesResponse (0x04):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- // struct writeAttributeResponseRecord[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- if (status != 0)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
- ChipLogProgress(chipTool, " %s: 0x%04x", "attributeId", attributeId);
- }
- }
- return success;
- }
-};
-
-/*
- * Command WriteAttributesNoResponse
- */
-class WriteAttributesNoResponse : public ModelCommandResponse
+static void OnInt8uAttributeResponse(void * context, uint8_t value)
{
-public:
- WriteAttributesNoResponse() : ModelCommandResponse(0x05) {}
+ ChipLogProgress(chipTool, "Int8u attribute Response: %" PRIu8, value);
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "WriteAttributesNoResponse (0x05):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- // struct writeAttributeRecord[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
- ChipLogProgress(chipTool, " %s: 0x%04x", "attributeId", attributeId);
-
- if (!ReadAttributeValue(message, messageLen))
- {
- return false;
- }
- }
- return success;
- }
-};
-
-/*
- * Command ConfigureReportingResponse
- */
-class ConfigureReportingResponse : public ModelCommandResponse
+static void OnInt16uAttributeResponse(void * context, uint16_t value)
{
-public:
- ConfigureReportingResponse() : ModelCommandResponse(0x07) {}
+ ChipLogProgress(chipTool, "Int16u attribute Response: %" PRIu16, value);
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ConfigureReportingResponse (0x07):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- // struct configureReportingResponseRecord[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- if (status != 0)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t direction = chip::Encoding::Read8(message); // reportingRole
- ChipLogProgress(chipTool, " %s: 0x%02x", "direction", direction);
- }
-
- if (status != 0)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
- ChipLogProgress(chipTool, " %s: 0x%04x", "attributeId", attributeId);
- }
- }
- return success;
- }
-};
-
-/*
- * Command ReadReportingConfigurationResponse
- */
-class ReadReportingConfigurationResponse : public ModelCommandResponse
+static void OnInt16sAttributeResponse(void * context, int16_t value)
{
-public:
- ReadReportingConfigurationResponse() : ModelCommandResponse(0x09) {}
+ ChipLogProgress(chipTool, "Int16s attribute Response: %" PRId16, value);
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ReadReportingConfigurationResponse (0x09):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- // struct readReportingConfigurationResponseRecord[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t direction = chip::Encoding::Read8(message); // reportingRole
- ChipLogProgress(chipTool, " %s: 0x%02x", "direction", direction);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
- ChipLogProgress(chipTool, " %s: 0x%04x", "attributeId", attributeId);
-
- if (direction == 0)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t attributeType = chip::Encoding::Read8(message); // zclType
- ChipLogProgress(chipTool, " %s: 0x%02x", "attributeType", attributeType);
- }
-
- if (direction == 0)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "minimumReportingInterval", minimumReportingInterval);
- }
-
- if (direction == 0)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "maximumReportingInterval", maximumReportingInterval);
- }
-
- if (direction == 0)
- {
- // FIXME: unk is not supported yet.
- }
-
- if (direction == 1)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "timeout", timeout);
- }
- }
- return success;
- }
-};
-
-/*
- * Command DefaultResponse
- */
-class DefaultResponse : public ModelCommandResponse
+static void OnDoorLockClusterClearAllPinsResponse(void * context)
{
-public:
- DefaultResponse() : ModelCommandResponse(0x0B) {}
+ ChipLogProgress(chipTool, "DoorLockClusterClearAllPinsResponse");
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "DefaultResponse (0x0B):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- CHECK_MESSAGE_LENGTH(1);
- uint8_t commandId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "commandId", commandId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- return success;
- }
-};
-
-/*
- * Command DiscoverAttributesResponse
- */
-class DiscoverAttributesResponse : public ModelCommandResponse
+static void OnDoorLockClusterClearAllRfidsResponse(void * context)
{
-public:
- DiscoverAttributesResponse() : ModelCommandResponse(0x0D) {}
+ ChipLogProgress(chipTool, "DoorLockClusterClearAllRfidsResponse");
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "DiscoverAttributesResponse (0x0D):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- CHECK_MESSAGE_LENGTH(1);
- bool discoveryComplete = chip::Encoding::Read8(message); // bool
- ChipLogProgress(chipTool, " %s: 0x%02x", "discoveryComplete", discoveryComplete);
-
- // struct discoverAttributesResponseRecord[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
- ChipLogProgress(chipTool, " %s: 0x%04x", "attributeId", attributeId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t attributeType = chip::Encoding::Read8(message); // zclType
- ChipLogProgress(chipTool, " %s: 0x%02x", "attributeType", attributeType);
- }
- return success;
- }
-};
-
-/*
- * Command WriteAttributesStructuredResponse
- */
-class WriteAttributesStructuredResponse : public ModelCommandResponse
+static void OnDoorLockClusterClearHolidayScheduleResponse(void * context)
{
-public:
- WriteAttributesStructuredResponse() : ModelCommandResponse(0x10) {}
+ ChipLogProgress(chipTool, "DoorLockClusterClearHolidayScheduleResponse");
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "WriteAttributesStructuredResponse (0x10):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- // struct writeStructuredResponseRecord[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- if (status != 0)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
- ChipLogProgress(chipTool, " %s: 0x%04x", "attributeId", attributeId);
- }
-
- if (status != 0)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t selector = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "selector", selector);
- }
- }
- return success;
- }
-};
-
-/*
- * Command DiscoverCommandsReceivedResponse
- */
-class DiscoverCommandsReceivedResponse : public ModelCommandResponse
+static void OnDoorLockClusterClearPinResponse(void * context)
{
-public:
- DiscoverCommandsReceivedResponse() : ModelCommandResponse(0x12) {}
+ ChipLogProgress(chipTool, "DoorLockClusterClearPinResponse");
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "DiscoverCommandsReceivedResponse (0x12):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- CHECK_MESSAGE_LENGTH(1);
- bool discoveryComplete = chip::Encoding::Read8(message); // bool
- ChipLogProgress(chipTool, " %s: 0x%02x", "discoveryComplete", discoveryComplete);
-
- // uint8_t uint8[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t commandId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "commandId", commandId);
- }
- return success;
- }
-};
-
-/*
- * Command DiscoverCommandsGeneratedResponse
- */
-class DiscoverCommandsGeneratedResponse : public ModelCommandResponse
+static void OnDoorLockClusterClearRfidResponse(void * context)
{
-public:
- DiscoverCommandsGeneratedResponse() : ModelCommandResponse(0x14) {}
+ ChipLogProgress(chipTool, "DoorLockClusterClearRfidResponse");
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "DiscoverCommandsGeneratedResponse (0x14):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- CHECK_MESSAGE_LENGTH(1);
- bool discoveryComplete = chip::Encoding::Read8(message); // bool
- ChipLogProgress(chipTool, " %s: 0x%02x", "discoveryComplete", discoveryComplete);
-
- // uint8_t uint8[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t commandId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "commandId", commandId);
- }
- return success;
- }
-};
-
-/*
- * Command DiscoverAttributesExtendedResponse
- */
-class DiscoverAttributesExtendedResponse : public ModelCommandResponse
+static void OnDoorLockClusterClearWeekdayScheduleResponse(void * context)
{
-public:
- DiscoverAttributesExtendedResponse() : ModelCommandResponse(0x16) {}
+ ChipLogProgress(chipTool, "DoorLockClusterClearWeekdayScheduleResponse");
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "DiscoverAttributesExtendedResponse (0x16):");
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- CHECK_MESSAGE_LENGTH(1);
- bool discoveryComplete = chip::Encoding::Read8(message); // bool
- ChipLogProgress(chipTool, " %s: 0x%02x", "discoveryComplete", discoveryComplete);
+static void OnDoorLockClusterClearYeardayScheduleResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterClearYeardayScheduleResponse");
- // struct discoverAttributesExtendedResponseRecord[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
- ChipLogProgress(chipTool, " %s: 0x%04x", "attributeId", attributeId);
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
- CHECK_MESSAGE_LENGTH(1);
- uint8_t accessControl = chip::Encoding::Read8(message); // bitmap8
- ChipLogProgress(chipTool, " %s: 0x%02x", "accessControl", accessControl);
- }
- return success;
- }
-};
+static void OnDoorLockClusterGetHolidayScheduleResponse(void * context, uint8_t scheduleId, uint32_t localStartTime,
+ uint32_t localEndTime, uint8_t operatingModeDuringHoliday)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterGetHolidayScheduleResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterGetLogRecordResponse(void * context, uint16_t logEntryId, uint32_t timestamp, uint8_t eventType,
+ uint8_t source, uint8_t eventIdOrAlarmCode, uint16_t userId, uint8_t * pin)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterGetLogRecordResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterGetPinResponse(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * pin)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterGetPinResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterGetRfidResponse(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterGetRfidResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterGetUserTypeResponse(void * context, uint16_t userId, uint8_t userType)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterGetUserTypeResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterGetWeekdayScheduleResponse(void * context, uint8_t scheduleId, uint16_t userId, uint8_t daysMask,
+ uint8_t startHour, uint8_t startMinute, uint8_t endHour, uint8_t endMinute)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterGetWeekdayScheduleResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterGetYeardayScheduleResponse(void * context, uint8_t scheduleId, uint16_t userId,
+ uint32_t localStartTime, uint32_t localEndTime)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterGetYeardayScheduleResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterLockDoorResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterLockDoorResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterSetHolidayScheduleResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterSetHolidayScheduleResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterSetPinResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterSetPinResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterSetRfidResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterSetRfidResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterSetUserTypeResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterSetUserTypeResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterSetWeekdayScheduleResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterSetWeekdayScheduleResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterSetYeardayScheduleResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterSetYeardayScheduleResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterUnlockDoorResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterUnlockDoorResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDoorLockClusterUnlockWithTimeoutResponse(void * context)
+{
+ ChipLogProgress(chipTool, "DoorLockClusterUnlockWithTimeoutResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnGroupsClusterAddGroupResponse(void * context, uint16_t groupId)
+{
+ ChipLogProgress(chipTool, "GroupsClusterAddGroupResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnGroupsClusterGetGroupMembershipResponse(void * context, uint8_t capacity, uint8_t groupCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * groupList)
+{
+ ChipLogProgress(chipTool, "GroupsClusterGetGroupMembershipResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnGroupsClusterRemoveGroupResponse(void * context, uint16_t groupId)
+{
+ ChipLogProgress(chipTool, "GroupsClusterRemoveGroupResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnGroupsClusterViewGroupResponse(void * context, uint16_t groupId, uint8_t * groupName)
+{
+ ChipLogProgress(chipTool, "GroupsClusterViewGroupResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnIdentifyClusterIdentifyQueryResponse(void * context, uint16_t timeout)
+{
+ ChipLogProgress(chipTool, "IdentifyClusterIdentifyQueryResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnScenesClusterAddSceneResponse(void * context, uint16_t groupId, uint8_t sceneId)
+{
+ ChipLogProgress(chipTool, "ScenesClusterAddSceneResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnScenesClusterGetSceneMembershipResponse(void * context, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList)
+{
+ ChipLogProgress(chipTool, "ScenesClusterGetSceneMembershipResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnScenesClusterRemoveAllScenesResponse(void * context, uint16_t groupId)
+{
+ ChipLogProgress(chipTool, "ScenesClusterRemoveAllScenesResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnScenesClusterRemoveSceneResponse(void * context, uint16_t groupId, uint8_t sceneId)
+{
+ ChipLogProgress(chipTool, "ScenesClusterRemoveSceneResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnScenesClusterStoreSceneResponse(void * context, uint16_t groupId, uint8_t sceneId)
+{
+ ChipLogProgress(chipTool, "ScenesClusterStoreSceneResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnScenesClusterViewSceneResponse(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
+ uint8_t * sceneName,
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets)
+{
+ ChipLogProgress(chipTool, "ScenesClusterViewSceneResponse");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
/*----------------------------------------------------------------------------*\
| Cluster Name | ID |
|---------------------------------------------------------------------+--------|
| BarrierControl | 0x0103 |
| Basic | 0x0000 |
+| Binding | 0xF000 |
| ColorControl | 0x0300 |
| DoorLock | 0x0101 |
| Groups | 0x0004 |
-| IasZone | 0x0500 |
| Identify | 0x0003 |
-| Level | 0x0008 |
+| LevelControl | 0x0008 |
| OnOff | 0x0006 |
| Scenes | 0x0005 |
| TemperatureMeasurement | 0x0402 |
\*----------------------------------------------------------------------------*/
-constexpr uint16_t kBarrierControlClusterId = 0x0103;
-constexpr uint16_t kBasicClusterId = 0x0000;
-constexpr uint16_t kColorControlClusterId = 0x0300;
-constexpr uint16_t kDoorLockClusterId = 0x0101;
-constexpr uint16_t kGroupsClusterId = 0x0004;
-constexpr uint16_t kIasZoneClusterId = 0x0500;
-constexpr uint16_t kIdentifyClusterId = 0x0003;
-constexpr uint16_t kLevelClusterId = 0x0008;
-constexpr uint16_t kOnOffClusterId = 0x0006;
-constexpr uint16_t kScenesClusterId = 0x0005;
-constexpr uint16_t kTempMeasurementClusterId = 0x0402;
+constexpr chip::ClusterId kBarrierControlClusterId = 0x0103;
+constexpr chip::ClusterId kBasicClusterId = 0x0000;
+constexpr chip::ClusterId kBindingClusterId = 0xF000;
+constexpr chip::ClusterId kColorControlClusterId = 0x0300;
+constexpr chip::ClusterId kDoorLockClusterId = 0x0101;
+constexpr chip::ClusterId kGroupsClusterId = 0x0004;
+constexpr chip::ClusterId kIdentifyClusterId = 0x0003;
+constexpr chip::ClusterId kLevelControlClusterId = 0x0008;
+constexpr chip::ClusterId kOnOffClusterId = 0x0006;
+constexpr chip::ClusterId kScenesClusterId = 0x0005;
+constexpr chip::ClusterId kTemperatureMeasurementClusterId = 0x0402;
/*----------------------------------------------------------------------------*\
| Cluster BarrierControl | 0x0103 |
|------------------------------------------------------------------------------|
-| Responses: | |
-| | |
-|------------------------------------------------------------------------------|
| Commands: | |
-| * GoToPercent | 0x00 |
-| * Stop | 0x01 |
+| * BarrierControlGoToPercent | 0x00 |
+| * BarrierControlStop | 0x01 |
|------------------------------------------------------------------------------|
| Attributes: | |
-| * MovingState | 0x0001 |
-| * SafetyStatus | 0x0002 |
-| * Capabilities | 0x0003 |
+| * BarrierMovingState | 0x0001 |
+| * BarrierSafetyStatus | 0x0002 |
+| * BarrierCapabilities | 0x0003 |
| * BarrierPosition | 0x000A |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
- * Command GoToPercent
+ * Command BarrierControlGoToPercent
*/
-class BarrierControlGoToPercent : public ModelCommand
+class BarrierControlBarrierControlGoToPercent : public ModelCommand
{
public:
- BarrierControlGoToPercent() : ModelCommand("barrier-control-go-to-percent", kBarrierControlClusterId, 0x00)
+ BarrierControlBarrierControlGoToPercent() : ModelCommand("barrier-control-go-to-percent")
{
AddArgument("percentOpen", 0, UINT8_MAX, &mPercentOpen);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeBarrierControlClusterBarrierControlGoToPercentCommand(endPointId, mPercentOpen);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::BarrierControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.BarrierControlGoToPercent(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mPercentOpen);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mPercentOpen;
};
/*
- * Command Stop
+ * Command BarrierControlStop
*/
-class BarrierControlStop : public ModelCommand
+class BarrierControlBarrierControlStop : public ModelCommand
{
public:
- BarrierControlStop() : ModelCommand("barrier-control-stop", kBarrierControlClusterId, 0x01) { ModelCommand::AddArguments(); }
+ BarrierControlBarrierControlStop() : ModelCommand("barrier-control-stop") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeBarrierControlClusterBarrierControlStopCommand(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BarrierControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.BarrierControlStop(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
- * Discover attributes
+ * Discover Attributes
*/
class DiscoverBarrierControlAttributes : public ModelCommand
{
public:
- DiscoverBarrierControlAttributes() : ModelCommand("discover", kBarrierControlClusterId, 0x0c) { ModelCommand::AddArguments(); }
+ DiscoverBarrierControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeBarrierControlClusterDiscoverAttributes(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BarrierControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
- * Attribute MovingState
+ * Attribute BarrierMovingState
*/
-class ReadBarrierControlMovingState : public ModelCommand
+class ReadBarrierControlBarrierMovingState : public ModelCommand
{
public:
- ReadBarrierControlMovingState() : ModelCommand("read", kBarrierControlClusterId, 0x00)
+ ReadBarrierControlBarrierMovingState() : ModelCommand("read")
{
AddArgument("attr-name", "barrier-moving-state");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeBarrierControlClusterReadBarrierMovingStateAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BarrierControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeBarrierMovingState(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
- * Attribute SafetyStatus
+ * Attribute BarrierSafetyStatus
*/
-class ReadBarrierControlSafetyStatus : public ModelCommand
+class ReadBarrierControlBarrierSafetyStatus : public ModelCommand
{
public:
- ReadBarrierControlSafetyStatus() : ModelCommand("read", kBarrierControlClusterId, 0x00)
+ ReadBarrierControlBarrierSafetyStatus() : ModelCommand("read")
{
AddArgument("attr-name", "barrier-safety-status");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeBarrierControlClusterReadBarrierSafetyStatusAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BarrierControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeBarrierSafetyStatus(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
- * Attribute Capabilities
+ * Attribute BarrierCapabilities
*/
-class ReadBarrierControlCapabilities : public ModelCommand
+class ReadBarrierControlBarrierCapabilities : public ModelCommand
{
public:
- ReadBarrierControlCapabilities() : ModelCommand("read", kBarrierControlClusterId, 0x00)
+ ReadBarrierControlBarrierCapabilities() : ModelCommand("read")
{
AddArgument("attr-name", "barrier-capabilities");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeBarrierControlClusterReadBarrierCapabilitiesAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BarrierControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeBarrierCapabilities(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -1071,98 +567,139 @@
class ReadBarrierControlBarrierPosition : public ModelCommand
{
public:
- ReadBarrierControlBarrierPosition() : ModelCommand("read", kBarrierControlClusterId, 0x00)
+ ReadBarrierControlBarrierPosition() : ModelCommand("read")
{
AddArgument("attr-name", "barrier-position");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeBarrierControlClusterReadBarrierPositionAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BarrierControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeBarrierPosition(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadBarrierControlClusterRevision : public ModelCommand
+{
+public:
+ ReadBarrierControlClusterRevision() : ModelCommand("read")
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BarrierControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*----------------------------------------------------------------------------*\
| Cluster Basic | 0x0000 |
|------------------------------------------------------------------------------|
-| Responses: | |
-| | |
-|------------------------------------------------------------------------------|
| Commands: | |
-| * ResetToFactoryDefaults | 0x00 |
| * MfgSpecificPing | 0x00 |
+| * ResetToFactoryDefaults | 0x00 |
|------------------------------------------------------------------------------|
| Attributes: | |
| * ZclVersion | 0x0000 |
| * PowerSource | 0x0007 |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
- * Command ResetToFactoryDefaults
- */
-class BasicResetToFactoryDefaults : public ModelCommand
-{
-public:
- BasicResetToFactoryDefaults() : ModelCommand("reset-to-factory-defaults", kBasicClusterId, 0x00)
- {
- ModelCommand::AddArguments();
- }
-
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
- {
- return encodeBasicClusterResetToFactoryDefaultsCommand(endPointId);
- }
-
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-};
-
-/*
* Command MfgSpecificPing
*/
class BasicMfgSpecificPing : public ModelCommand
{
public:
- BasicMfgSpecificPing() : ModelCommand("ping", kBasicClusterId, 0x00) { ModelCommand::AddArguments(); }
+ BasicMfgSpecificPing() : ModelCommand("mfg-specific-ping") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeBasicClusterMfgSpecificPingCommand(endPointId); }
-
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BasicCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MfgSpecificPing(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
- * Discover attributes
+ * Command ResetToFactoryDefaults
+ */
+class BasicResetToFactoryDefaults : public ModelCommand
+{
+public:
+ BasicResetToFactoryDefaults() : ModelCommand("reset-to-factory-defaults") { ModelCommand::AddArguments(); }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BasicCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ResetToFactoryDefaults(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Discover Attributes
*/
class DiscoverBasicAttributes : public ModelCommand
{
public:
- DiscoverBasicAttributes() : ModelCommand("discover", kBasicClusterId, 0x0c) { ModelCommand::AddArguments(); }
+ DiscoverBasicAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeBasicClusterDiscoverAttributes(endPointId); }
-
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BasicCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -1171,20 +708,26 @@
class ReadBasicZclVersion : public ModelCommand
{
public:
- ReadBasicZclVersion() : ModelCommand("read", kBasicClusterId, 0x00)
+ ReadBasicZclVersion() : ModelCommand("read")
{
AddArgument("attr-name", "zcl-version");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeBasicClusterReadZclVersionAttribute(endPointId); }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BasicCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeZclVersion(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -1193,28 +736,192 @@
class ReadBasicPowerSource : public ModelCommand
{
public:
- ReadBasicPowerSource() : ModelCommand("read", kBasicClusterId, 0x00)
+ ReadBasicPowerSource() : ModelCommand("read")
{
AddArgument("attr-name", "power-source");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeBasicClusterReadPowerSourceAttribute(endPointId); }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BasicCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePowerSource(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadBasicClusterRevision : public ModelCommand
+{
+public:
+ ReadBasicClusterRevision() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BasicCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*----------------------------------------------------------------------------*\
+| Cluster Binding | 0xF000 |
+|------------------------------------------------------------------------------|
+| Commands: | |
+| * Bind | 0x00 |
+| * Unbind | 0x01 |
+|------------------------------------------------------------------------------|
+| Attributes: | |
+| * ClusterRevision | 0xFFFD |
+\*----------------------------------------------------------------------------*/
+
+/*
+ * Command Bind
+ */
+class BindingBind : public ModelCommand
+{
+public:
+ BindingBind() : ModelCommand("bind")
+ {
+ AddArgument("nodeId", 0, UINT64_MAX, &mNodeId);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
+ AddArgument("endpointId", 0, UINT8_MAX, &mEndpointId);
+ AddArgument("clusterId", 0, UINT16_MAX, &mClusterId);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0xF000) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BindingCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.Bind(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mNodeId, mGroupId, mEndpointId, mClusterId);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::NodeId mNodeId;
+ chip::GroupId mGroupId;
+ chip::EndpointId mEndpointId;
+ chip::ClusterId mClusterId;
+};
+
+/*
+ * Command Unbind
+ */
+class BindingUnbind : public ModelCommand
+{
+public:
+ BindingUnbind() : ModelCommand("unbind")
+ {
+ AddArgument("nodeId", 0, UINT64_MAX, &mNodeId);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
+ AddArgument("endpointId", 0, UINT8_MAX, &mEndpointId);
+ AddArgument("clusterId", 0, UINT16_MAX, &mClusterId);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0xF000) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BindingCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.Unbind(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mNodeId, mGroupId, mEndpointId, mClusterId);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::NodeId mNodeId;
+ chip::GroupId mGroupId;
+ chip::EndpointId mEndpointId;
+ chip::ClusterId mClusterId;
+};
+
+/*
+ * Discover Attributes
+ */
+class DiscoverBindingAttributes : public ModelCommand
+{
+public:
+ DiscoverBindingAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BindingCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadBindingClusterRevision : public ModelCommand
+{
+public:
+ ReadBindingClusterRevision() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0xF000) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::BindingCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*----------------------------------------------------------------------------*\
| Cluster ColorControl | 0x0300 |
|------------------------------------------------------------------------------|
-| Responses: | |
-| | |
-|------------------------------------------------------------------------------|
| Commands: | |
| * MoveColor | 0x08 |
| * MoveColorTemperature | 0x4B |
@@ -1237,8 +944,11 @@
| * RemainingTime | 0x0002 |
| * CurrentX | 0x0003 |
| * CurrentY | 0x0004 |
+| * DriftCompensation | 0x0005 |
+| * CompensationText | 0x0006 |
| * ColorTemperature | 0x0007 |
| * ColorMode | 0x0008 |
+| * ColorControlOptions | 0x000F |
| * NumberOfPrimaries | 0x0010 |
| * Primary1X | 0x0011 |
| * Primary1Y | 0x0012 |
@@ -1258,6 +968,17 @@
| * Primary6X | 0x0028 |
| * Primary6Y | 0x0029 |
| * Primary6Intensity | 0x002A |
+| * WhitePointX | 0x0030 |
+| * WhitePointY | 0x0031 |
+| * ColorPointRX | 0x0032 |
+| * ColorPointRY | 0x0033 |
+| * ColorPointRIntensity | 0x0034 |
+| * ColorPointGX | 0x0036 |
+| * ColorPointGY | 0x0037 |
+| * ColorPointGIntensity | 0x0038 |
+| * ColorPointBX | 0x003A |
+| * ColorPointBY | 0x003B |
+| * ColorPointBIntensity | 0x003C |
| * EnhancedCurrentHue | 0x4000 |
| * EnhancedColorMode | 0x4001 |
| * ColorLoopActive | 0x4002 |
@@ -1268,6 +989,7 @@
| * ColorTempPhysicalMax | 0x400C |
| * CoupleColorTempToLevelMinMireds | 0x400D |
| * StartUpColorTemperatureMireds | 0x4010 |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
@@ -1276,7 +998,7 @@
class ColorControlMoveColor : public ModelCommand
{
public:
- ColorControlMoveColor() : ModelCommand("move-color", kColorControlClusterId, 0x08)
+ ColorControlMoveColor() : ModelCommand("move-color")
{
AddArgument("rateX", INT16_MIN, INT16_MAX, &mRateX);
AddArgument("rateY", INT16_MIN, INT16_MAX, &mRateY);
@@ -1285,19 +1007,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterMoveColorCommand(endPointId, mRateX, mRateY, mOptionsMask, mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x08) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveColor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mRateX, mRateY, mOptionsMask,
+ mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
int16_t mRateX;
int16_t mRateY;
uint8_t mOptionsMask;
@@ -1310,7 +1034,7 @@
class ColorControlMoveColorTemperature : public ModelCommand
{
public:
- ColorControlMoveColorTemperature() : ModelCommand("move-color-temperature", kColorControlClusterId, 0x4B)
+ ColorControlMoveColorTemperature() : ModelCommand("move-color-temperature")
{
AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode);
AddArgument("rate", 0, UINT16_MAX, &mRate);
@@ -1321,20 +1045,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterMoveColorTemperatureCommand(endPointId, mMoveMode, mRate, mColorTemperatureMinimum,
- mColorTemperatureMaximum, mOptionsMask, mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x4B) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate,
+ mColorTemperatureMinimum, mColorTemperatureMaximum, mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mMoveMode;
uint16_t mRate;
uint16_t mColorTemperatureMinimum;
@@ -1349,7 +1074,7 @@
class ColorControlMoveHue : public ModelCommand
{
public:
- ColorControlMoveHue() : ModelCommand("move-hue", kColorControlClusterId, 0x01)
+ ColorControlMoveHue() : ModelCommand("move-hue")
{
AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode);
AddArgument("rate", 0, UINT8_MAX, &mRate);
@@ -1358,19 +1083,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterMoveHueCommand(endPointId, mMoveMode, mRate, mOptionsMask, mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, mOptionsMask,
+ mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mMoveMode;
uint8_t mRate;
uint8_t mOptionsMask;
@@ -1383,7 +1110,7 @@
class ColorControlMoveSaturation : public ModelCommand
{
public:
- ColorControlMoveSaturation() : ModelCommand("move-saturation", kColorControlClusterId, 0x04)
+ ColorControlMoveSaturation() : ModelCommand("move-saturation")
{
AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode);
AddArgument("rate", 0, UINT8_MAX, &mRate);
@@ -1392,19 +1119,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterMoveSaturationCommand(endPointId, mMoveMode, mRate, mOptionsMask, mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x04) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, mOptionsMask,
+ mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mMoveMode;
uint8_t mRate;
uint8_t mOptionsMask;
@@ -1417,7 +1146,7 @@
class ColorControlMoveToColor : public ModelCommand
{
public:
- ColorControlMoveToColor() : ModelCommand("move-to-color", kColorControlClusterId, 0x07)
+ ColorControlMoveToColor() : ModelCommand("move-to-color")
{
AddArgument("colorX", 0, UINT16_MAX, &mColorX);
AddArgument("colorY", 0, UINT16_MAX, &mColorY);
@@ -1427,20 +1156,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterMoveToColorCommand(endPointId, mColorX, mColorY, mTransitionTime, mOptionsMask,
- mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x07) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveToColor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mColorX, mColorY, mTransitionTime,
+ mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint16_t mColorX;
uint16_t mColorY;
uint16_t mTransitionTime;
@@ -1454,7 +1184,7 @@
class ColorControlMoveToColorTemperature : public ModelCommand
{
public:
- ColorControlMoveToColorTemperature() : ModelCommand("move-to-color-temperature", kColorControlClusterId, 0x0A)
+ ColorControlMoveToColorTemperature() : ModelCommand("move-to-color-temperature")
{
AddArgument("colorTemperature", 0, UINT16_MAX, &mColorTemperature);
AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime);
@@ -1463,20 +1193,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterMoveToColorTemperatureCommand(endPointId, mColorTemperature, mTransitionTime, mOptionsMask,
- mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x0A) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveToColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mColorTemperature,
+ mTransitionTime, mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint16_t mColorTemperature;
uint16_t mTransitionTime;
uint8_t mOptionsMask;
@@ -1489,7 +1220,7 @@
class ColorControlMoveToHue : public ModelCommand
{
public:
- ColorControlMoveToHue() : ModelCommand("move-to-hue", kColorControlClusterId, 0x00)
+ ColorControlMoveToHue() : ModelCommand("move-to-hue")
{
AddArgument("hue", 0, UINT8_MAX, &mHue);
AddArgument("direction", 0, UINT8_MAX, &mDirection);
@@ -1499,20 +1230,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterMoveToHueCommand(endPointId, mHue, mDirection, mTransitionTime, mOptionsMask,
- mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveToHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mHue, mDirection, mTransitionTime,
+ mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mHue;
uint8_t mDirection;
uint16_t mTransitionTime;
@@ -1526,7 +1258,7 @@
class ColorControlMoveToHueAndSaturation : public ModelCommand
{
public:
- ColorControlMoveToHueAndSaturation() : ModelCommand("move-to-hue-and-saturation", kColorControlClusterId, 0x06)
+ ColorControlMoveToHueAndSaturation() : ModelCommand("move-to-hue-and-saturation")
{
AddArgument("hue", 0, UINT8_MAX, &mHue);
AddArgument("saturation", 0, UINT8_MAX, &mSaturation);
@@ -1536,20 +1268,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterMoveToHueAndSaturationCommand(endPointId, mHue, mSaturation, mTransitionTime, mOptionsMask,
- mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveToHueAndSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mHue, mSaturation,
+ mTransitionTime, mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mHue;
uint8_t mSaturation;
uint16_t mTransitionTime;
@@ -1563,7 +1296,7 @@
class ColorControlMoveToSaturation : public ModelCommand
{
public:
- ColorControlMoveToSaturation() : ModelCommand("move-to-saturation", kColorControlClusterId, 0x03)
+ ColorControlMoveToSaturation() : ModelCommand("move-to-saturation")
{
AddArgument("saturation", 0, UINT8_MAX, &mSaturation);
AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime);
@@ -1572,20 +1305,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterMoveToSaturationCommand(endPointId, mSaturation, mTransitionTime, mOptionsMask,
- mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x03) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveToSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mSaturation, mTransitionTime,
+ mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mSaturation;
uint16_t mTransitionTime;
uint8_t mOptionsMask;
@@ -1598,7 +1332,7 @@
class ColorControlStepColor : public ModelCommand
{
public:
- ColorControlStepColor() : ModelCommand("step-color", kColorControlClusterId, 0x09)
+ ColorControlStepColor() : ModelCommand("step-color")
{
AddArgument("stepX", INT16_MIN, INT16_MAX, &mStepX);
AddArgument("stepY", INT16_MIN, INT16_MAX, &mStepY);
@@ -1608,20 +1342,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterStepColorCommand(endPointId, mStepX, mStepY, mTransitionTime, mOptionsMask,
- mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x09) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.StepColor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepX, mStepY, mTransitionTime,
+ mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
int16_t mStepX;
int16_t mStepY;
uint16_t mTransitionTime;
@@ -1635,7 +1370,7 @@
class ColorControlStepColorTemperature : public ModelCommand
{
public:
- ColorControlStepColorTemperature() : ModelCommand("step-color-temperature", kColorControlClusterId, 0x4C)
+ ColorControlStepColorTemperature() : ModelCommand("step-color-temperature")
{
AddArgument("stepMode", 0, UINT8_MAX, &mStepMode);
AddArgument("stepSize", 0, UINT16_MAX, &mStepSize);
@@ -1647,21 +1382,22 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterStepColorTemperatureCommand(endPointId, mStepMode, mStepSize, mTransitionTime,
- mColorTemperatureMinimum, mColorTemperatureMaximum,
- mOptionsMask, mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x4C) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.StepColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize,
+ mTransitionTime, mColorTemperatureMinimum, mColorTemperatureMaximum, mOptionsMask,
+ mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mStepMode;
uint16_t mStepSize;
uint16_t mTransitionTime;
@@ -1677,7 +1413,7 @@
class ColorControlStepHue : public ModelCommand
{
public:
- ColorControlStepHue() : ModelCommand("step-hue", kColorControlClusterId, 0x02)
+ ColorControlStepHue() : ModelCommand("step-hue")
{
AddArgument("stepMode", 0, UINT8_MAX, &mStepMode);
AddArgument("stepSize", 0, UINT8_MAX, &mStepSize);
@@ -1687,20 +1423,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterStepHueCommand(endPointId, mStepMode, mStepSize, mTransitionTime, mOptionsMask,
- mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x02) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.StepHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, mTransitionTime,
+ mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mStepMode;
uint8_t mStepSize;
uint8_t mTransitionTime;
@@ -1714,7 +1451,7 @@
class ColorControlStepSaturation : public ModelCommand
{
public:
- ColorControlStepSaturation() : ModelCommand("step-saturation", kColorControlClusterId, 0x05)
+ ColorControlStepSaturation() : ModelCommand("step-saturation")
{
AddArgument("stepMode", 0, UINT8_MAX, &mStepMode);
AddArgument("stepSize", 0, UINT8_MAX, &mStepSize);
@@ -1724,20 +1461,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterStepSaturationCommand(endPointId, mStepMode, mStepSize, mTransitionTime, mOptionsMask,
- mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x05) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.StepSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize,
+ mTransitionTime, mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mStepMode;
uint8_t mStepSize;
uint8_t mTransitionTime;
@@ -1751,49 +1489,53 @@
class ColorControlStopMoveStep : public ModelCommand
{
public:
- ColorControlStopMoveStep() : ModelCommand("stop-move-step", kColorControlClusterId, 0x47)
+ ColorControlStopMoveStep() : ModelCommand("stop-move-step")
{
AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask);
AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterStopMoveStepCommand(endPointId, mOptionsMask, mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x47) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.StopMoveStep(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mOptionsMask, mOptionsOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mOptionsMask;
uint8_t mOptionsOverride;
};
/*
- * Discover attributes
+ * Discover Attributes
*/
class DiscoverColorControlAttributes : public ModelCommand
{
public:
- DiscoverColorControlAttributes() : ModelCommand("discover", kColorControlClusterId, 0x0c) { ModelCommand::AddArguments(); }
+ DiscoverColorControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterDiscoverAttributes(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -1802,29 +1544,32 @@
class ReadColorControlCurrentHue : public ModelCommand
{
public:
- ReadColorControlCurrentHue() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlCurrentHue() : ModelCommand("read")
{
AddArgument("attr-name", "current-hue");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadCurrentHueAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeCurrentHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
class ReportColorControlCurrentHue : public ModelCommand
{
public:
- ReportColorControlCurrentHue() : ModelCommand("report", kColorControlClusterId, 0x06)
+ ReportColorControlCurrentHue() : ModelCommand("report")
{
AddArgument("attr-name", "current-hue");
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
@@ -1833,19 +1578,30 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReportCurrentHueAttribute(endPointId, mMinInterval, mMaxInterval, mChange);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: ConfigureReportingResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ConfigureReportingResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttributeCurrentHue(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttributeCurrentHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval,
+ mMaxInterval, mChange);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<Int8uAttributeCallback> * onReportCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
uint16_t mMinInterval;
uint16_t mMaxInterval;
uint8_t mChange;
@@ -1857,29 +1613,32 @@
class ReadColorControlCurrentSaturation : public ModelCommand
{
public:
- ReadColorControlCurrentSaturation() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlCurrentSaturation() : ModelCommand("read")
{
AddArgument("attr-name", "current-saturation");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadCurrentSaturationAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeCurrentSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
class ReportColorControlCurrentSaturation : public ModelCommand
{
public:
- ReportColorControlCurrentSaturation() : ModelCommand("report", kColorControlClusterId, 0x06)
+ ReportColorControlCurrentSaturation() : ModelCommand("report")
{
AddArgument("attr-name", "current-saturation");
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
@@ -1888,19 +1647,30 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReportCurrentSaturationAttribute(endPointId, mMinInterval, mMaxInterval, mChange);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: ConfigureReportingResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ConfigureReportingResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttributeCurrentSaturation(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttributeCurrentSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval,
+ mMaxInterval, mChange);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<Int8uAttributeCallback> * onReportCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
uint16_t mMinInterval;
uint16_t mMaxInterval;
uint8_t mChange;
@@ -1912,23 +1682,26 @@
class ReadColorControlRemainingTime : public ModelCommand
{
public:
- ReadColorControlRemainingTime() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlRemainingTime() : ModelCommand("read")
{
AddArgument("attr-name", "remaining-time");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadRemainingTimeAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeRemainingTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -1937,50 +1710,64 @@
class ReadColorControlCurrentX : public ModelCommand
{
public:
- ReadColorControlCurrentX() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlCurrentX() : ModelCommand("read")
{
- AddArgument("attr-name", "currentx");
+ AddArgument("attr-name", "current-x");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadCurrentXAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeCurrentX(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
class ReportColorControlCurrentX : public ModelCommand
{
public:
- ReportColorControlCurrentX() : ModelCommand("report", kColorControlClusterId, 0x06)
+ ReportColorControlCurrentX() : ModelCommand("report")
{
- AddArgument("attr-name", "currentx");
+ AddArgument("attr-name", "current-x");
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval);
AddArgument("change", 0, UINT16_MAX, &mChange);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReportCurrentXAttribute(endPointId, mMinInterval, mMaxInterval, mChange);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: ConfigureReportingResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ConfigureReportingResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttributeCurrentX(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttributeCurrentX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval,
+ mMaxInterval, mChange);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<Int16uAttributeCallback> * onReportCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
uint16_t mMinInterval;
uint16_t mMaxInterval;
uint16_t mChange;
@@ -1992,105 +1779,189 @@
class ReadColorControlCurrentY : public ModelCommand
{
public:
- ReadColorControlCurrentY() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlCurrentY() : ModelCommand("read")
{
- AddArgument("attr-name", "currenty");
+ AddArgument("attr-name", "current-y");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadCurrentYAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeCurrentY(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
class ReportColorControlCurrentY : public ModelCommand
{
public:
- ReportColorControlCurrentY() : ModelCommand("report", kColorControlClusterId, 0x06)
+ ReportColorControlCurrentY() : ModelCommand("report")
{
- AddArgument("attr-name", "currenty");
+ AddArgument("attr-name", "current-y");
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval);
AddArgument("change", 0, UINT16_MAX, &mChange);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReportCurrentYAttribute(endPointId, mMinInterval, mMaxInterval, mChange);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: ConfigureReportingResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ConfigureReportingResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttributeCurrentY(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttributeCurrentY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval,
+ mMaxInterval, mChange);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<Int16uAttributeCallback> * onReportCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
uint16_t mMinInterval;
uint16_t mMaxInterval;
uint16_t mChange;
};
/*
+ * Attribute DriftCompensation
+ */
+class ReadColorControlDriftCompensation : public ModelCommand
+{
+public:
+ ReadColorControlDriftCompensation() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "drift-compensation");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeDriftCompensation(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute CompensationText
+ */
+class ReadColorControlCompensationText : public ModelCommand
+{
+public:
+ ReadColorControlCompensationText() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "compensation-text");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeCompensationText(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<UnsupportedAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<UnsupportedAttributeCallback>(OnUnsupportedAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
* Attribute ColorTemperature
*/
class ReadColorControlColorTemperature : public ModelCommand
{
public:
- ReadColorControlColorTemperature() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlColorTemperature() : ModelCommand("read")
{
- AddArgument("attr-name", "color-temperature-mireds");
+ AddArgument("attr-name", "color-temperature");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadColorTemperatureAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
class ReportColorControlColorTemperature : public ModelCommand
{
public:
- ReportColorControlColorTemperature() : ModelCommand("report", kColorControlClusterId, 0x06)
+ ReportColorControlColorTemperature() : ModelCommand("report")
{
- AddArgument("attr-name", "color-temperature-mireds");
+ AddArgument("attr-name", "color-temperature");
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval);
AddArgument("change", 0, UINT16_MAX, &mChange);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReportColorTemperatureAttribute(endPointId, mMinInterval, mMaxInterval, mChange);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: ConfigureReportingResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ConfigureReportingResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttributeColorTemperature(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttributeColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval,
+ mMaxInterval, mChange);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<Int16uAttributeCallback> * onReportCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
uint16_t mMinInterval;
uint16_t mMaxInterval;
uint16_t mChange;
@@ -2102,23 +1973,81 @@
class ReadColorControlColorMode : public ModelCommand
{
public:
- ReadColorControlColorMode() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlColorMode() : ModelCommand("read")
{
AddArgument("attr-name", "color-mode");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadColorModeAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute ColorControlOptions
+ */
+class ReadColorControlColorControlOptions : public ModelCommand
+{
+public:
+ ReadColorControlColorControlOptions() : ModelCommand("read")
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ AddArgument("attr-name", "color-control-options");
+ ModelCommand::AddArguments();
}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorControlOptions(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorControlOptions : public ModelCommand
+{
+public:
+ WriteColorControlColorControlOptions() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-control-options");
+ AddArgument("attr-value", 0, UINT8_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorControlOptions(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mValue;
};
/*
@@ -2127,23 +2056,26 @@
class ReadColorControlNumberOfPrimaries : public ModelCommand
{
public:
- ReadColorControlNumberOfPrimaries() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlNumberOfPrimaries() : ModelCommand("read")
{
AddArgument("attr-name", "number-of-primaries");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadNumberOfPrimariesAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeNumberOfPrimaries(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2152,23 +2084,26 @@
class ReadColorControlPrimary1X : public ModelCommand
{
public:
- ReadColorControlPrimary1X() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary1X() : ModelCommand("read")
{
- AddArgument("attr-name", "primary1-x");
+ AddArgument("attr-name", "primary1x");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary1XAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary1X(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2177,23 +2112,26 @@
class ReadColorControlPrimary1Y : public ModelCommand
{
public:
- ReadColorControlPrimary1Y() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary1Y() : ModelCommand("read")
{
- AddArgument("attr-name", "primary1-y");
+ AddArgument("attr-name", "primary1y");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary1YAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary1Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2202,23 +2140,26 @@
class ReadColorControlPrimary1Intensity : public ModelCommand
{
public:
- ReadColorControlPrimary1Intensity() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary1Intensity() : ModelCommand("read")
{
- AddArgument("attr-name", "primary1-intensity");
+ AddArgument("attr-name", "primary1intensity");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary1IntensityAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary1Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2227,23 +2168,26 @@
class ReadColorControlPrimary2X : public ModelCommand
{
public:
- ReadColorControlPrimary2X() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary2X() : ModelCommand("read")
{
- AddArgument("attr-name", "primary2-x");
+ AddArgument("attr-name", "primary2x");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary2XAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary2X(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2252,23 +2196,26 @@
class ReadColorControlPrimary2Y : public ModelCommand
{
public:
- ReadColorControlPrimary2Y() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary2Y() : ModelCommand("read")
{
- AddArgument("attr-name", "primary2-y");
+ AddArgument("attr-name", "primary2y");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary2YAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary2Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2277,23 +2224,26 @@
class ReadColorControlPrimary2Intensity : public ModelCommand
{
public:
- ReadColorControlPrimary2Intensity() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary2Intensity() : ModelCommand("read")
{
- AddArgument("attr-name", "primary2-intensity");
+ AddArgument("attr-name", "primary2intensity");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary2IntensityAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary2Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2302,23 +2252,26 @@
class ReadColorControlPrimary3X : public ModelCommand
{
public:
- ReadColorControlPrimary3X() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary3X() : ModelCommand("read")
{
- AddArgument("attr-name", "primary3-x");
+ AddArgument("attr-name", "primary3x");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary3XAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary3X(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2327,23 +2280,26 @@
class ReadColorControlPrimary3Y : public ModelCommand
{
public:
- ReadColorControlPrimary3Y() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary3Y() : ModelCommand("read")
{
- AddArgument("attr-name", "primary3-y");
+ AddArgument("attr-name", "primary3y");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary3YAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary3Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2352,23 +2308,26 @@
class ReadColorControlPrimary3Intensity : public ModelCommand
{
public:
- ReadColorControlPrimary3Intensity() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary3Intensity() : ModelCommand("read")
{
- AddArgument("attr-name", "primary3-intensity");
+ AddArgument("attr-name", "primary3intensity");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary3IntensityAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary3Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2377,23 +2336,26 @@
class ReadColorControlPrimary4X : public ModelCommand
{
public:
- ReadColorControlPrimary4X() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary4X() : ModelCommand("read")
{
- AddArgument("attr-name", "primary4-x");
+ AddArgument("attr-name", "primary4x");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary4XAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary4X(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2402,23 +2364,26 @@
class ReadColorControlPrimary4Y : public ModelCommand
{
public:
- ReadColorControlPrimary4Y() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary4Y() : ModelCommand("read")
{
- AddArgument("attr-name", "primary4-y");
+ AddArgument("attr-name", "primary4y");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary4YAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary4Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2427,23 +2392,26 @@
class ReadColorControlPrimary4Intensity : public ModelCommand
{
public:
- ReadColorControlPrimary4Intensity() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary4Intensity() : ModelCommand("read")
{
- AddArgument("attr-name", "primary4-intensity");
+ AddArgument("attr-name", "primary4intensity");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary4IntensityAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary4Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2452,23 +2420,26 @@
class ReadColorControlPrimary5X : public ModelCommand
{
public:
- ReadColorControlPrimary5X() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary5X() : ModelCommand("read")
{
- AddArgument("attr-name", "primary5-x");
+ AddArgument("attr-name", "primary5x");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary5XAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary5X(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2477,23 +2448,26 @@
class ReadColorControlPrimary5Y : public ModelCommand
{
public:
- ReadColorControlPrimary5Y() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary5Y() : ModelCommand("read")
{
- AddArgument("attr-name", "primary5-y");
+ AddArgument("attr-name", "primary5y");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary5YAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary5Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2502,23 +2476,26 @@
class ReadColorControlPrimary5Intensity : public ModelCommand
{
public:
- ReadColorControlPrimary5Intensity() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary5Intensity() : ModelCommand("read")
{
- AddArgument("attr-name", "primary5-intensity");
+ AddArgument("attr-name", "primary5intensity");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary5IntensityAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary5Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2527,23 +2504,26 @@
class ReadColorControlPrimary6X : public ModelCommand
{
public:
- ReadColorControlPrimary6X() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary6X() : ModelCommand("read")
{
- AddArgument("attr-name", "primary6-x");
+ AddArgument("attr-name", "primary6x");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary6XAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary6X(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2552,23 +2532,26 @@
class ReadColorControlPrimary6Y : public ModelCommand
{
public:
- ReadColorControlPrimary6Y() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary6Y() : ModelCommand("read")
{
- AddArgument("attr-name", "primary6-y");
+ AddArgument("attr-name", "primary6y");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary6YAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary6Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2577,23 +2560,631 @@
class ReadColorControlPrimary6Intensity : public ModelCommand
{
public:
- ReadColorControlPrimary6Intensity() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlPrimary6Intensity() : ModelCommand("read")
{
- AddArgument("attr-name", "primary6-intensity");
+ AddArgument("attr-name", "primary6intensity");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadPrimary6IntensityAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributePrimary6Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute WhitePointX
+ */
+class ReadColorControlWhitePointX : public ModelCommand
+{
+public:
+ ReadColorControlWhitePointX() : ModelCommand("read")
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ AddArgument("attr-name", "white-point-x");
+ ModelCommand::AddArguments();
}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeWhitePointX(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlWhitePointX : public ModelCommand
+{
+public:
+ WriteColorControlWhitePointX() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "white-point-x");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeWhitePointX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute WhitePointY
+ */
+class ReadColorControlWhitePointY : public ModelCommand
+{
+public:
+ ReadColorControlWhitePointY() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "white-point-y");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeWhitePointY(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlWhitePointY : public ModelCommand
+{
+public:
+ WriteColorControlWhitePointY() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "white-point-y");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeWhitePointY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute ColorPointRX
+ */
+class ReadColorControlColorPointRX : public ModelCommand
+{
+public:
+ ReadColorControlColorPointRX() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "color-point-rx");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorPointRX(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorPointRX : public ModelCommand
+{
+public:
+ WriteColorControlColorPointRX() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-point-rx");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorPointRX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute ColorPointRY
+ */
+class ReadColorControlColorPointRY : public ModelCommand
+{
+public:
+ ReadColorControlColorPointRY() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "color-point-ry");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorPointRY(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorPointRY : public ModelCommand
+{
+public:
+ WriteColorControlColorPointRY() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-point-ry");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorPointRY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute ColorPointRIntensity
+ */
+class ReadColorControlColorPointRIntensity : public ModelCommand
+{
+public:
+ ReadColorControlColorPointRIntensity() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "color-point-rintensity");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorPointRIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorPointRIntensity : public ModelCommand
+{
+public:
+ WriteColorControlColorPointRIntensity() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-point-rintensity");
+ AddArgument("attr-value", 0, UINT8_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorPointRIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mValue;
+};
+
+/*
+ * Attribute ColorPointGX
+ */
+class ReadColorControlColorPointGX : public ModelCommand
+{
+public:
+ ReadColorControlColorPointGX() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "color-point-gx");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorPointGX(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorPointGX : public ModelCommand
+{
+public:
+ WriteColorControlColorPointGX() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-point-gx");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorPointGX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute ColorPointGY
+ */
+class ReadColorControlColorPointGY : public ModelCommand
+{
+public:
+ ReadColorControlColorPointGY() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "color-point-gy");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorPointGY(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorPointGY : public ModelCommand
+{
+public:
+ WriteColorControlColorPointGY() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-point-gy");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorPointGY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute ColorPointGIntensity
+ */
+class ReadColorControlColorPointGIntensity : public ModelCommand
+{
+public:
+ ReadColorControlColorPointGIntensity() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "color-point-gintensity");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorPointGIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorPointGIntensity : public ModelCommand
+{
+public:
+ WriteColorControlColorPointGIntensity() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-point-gintensity");
+ AddArgument("attr-value", 0, UINT8_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorPointGIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mValue;
+};
+
+/*
+ * Attribute ColorPointBX
+ */
+class ReadColorControlColorPointBX : public ModelCommand
+{
+public:
+ ReadColorControlColorPointBX() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "color-point-bx");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorPointBX(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorPointBX : public ModelCommand
+{
+public:
+ WriteColorControlColorPointBX() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-point-bx");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorPointBX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute ColorPointBY
+ */
+class ReadColorControlColorPointBY : public ModelCommand
+{
+public:
+ ReadColorControlColorPointBY() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "color-point-by");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorPointBY(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorPointBY : public ModelCommand
+{
+public:
+ WriteColorControlColorPointBY() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-point-by");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorPointBY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute ColorPointBIntensity
+ */
+class ReadColorControlColorPointBIntensity : public ModelCommand
+{
+public:
+ ReadColorControlColorPointBIntensity() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "color-point-bintensity");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorPointBIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlColorPointBIntensity : public ModelCommand
+{
+public:
+ WriteColorControlColorPointBIntensity() : ModelCommand("write")
+ {
+ AddArgument("attr-name", "color-point-bintensity");
+ AddArgument("attr-value", 0, UINT8_MAX, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeColorPointBIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mValue;
};
/*
@@ -2602,23 +3193,26 @@
class ReadColorControlEnhancedCurrentHue : public ModelCommand
{
public:
- ReadColorControlEnhancedCurrentHue() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlEnhancedCurrentHue() : ModelCommand("read")
{
AddArgument("attr-name", "enhanced-current-hue");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadEnhancedCurrentHueAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeEnhancedCurrentHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2627,23 +3221,26 @@
class ReadColorControlEnhancedColorMode : public ModelCommand
{
public:
- ReadColorControlEnhancedColorMode() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlEnhancedColorMode() : ModelCommand("read")
{
AddArgument("attr-name", "enhanced-color-mode");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadEnhancedColorModeAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeEnhancedColorMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2652,23 +3249,26 @@
class ReadColorControlColorLoopActive : public ModelCommand
{
public:
- ReadColorControlColorLoopActive() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlColorLoopActive() : ModelCommand("read")
{
AddArgument("attr-name", "color-loop-active");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadColorLoopActiveAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorLoopActive(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2677,23 +3277,26 @@
class ReadColorControlColorLoopDirection : public ModelCommand
{
public:
- ReadColorControlColorLoopDirection() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlColorLoopDirection() : ModelCommand("read")
{
AddArgument("attr-name", "color-loop-direction");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadColorLoopDirectionAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorLoopDirection(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2702,23 +3305,26 @@
class ReadColorControlColorLoopTime : public ModelCommand
{
public:
- ReadColorControlColorLoopTime() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlColorLoopTime() : ModelCommand("read")
{
AddArgument("attr-name", "color-loop-time");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadColorLoopTimeAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorLoopTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2727,23 +3333,26 @@
class ReadColorControlColorCapabilities : public ModelCommand
{
public:
- ReadColorControlColorCapabilities() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlColorCapabilities() : ModelCommand("read")
{
AddArgument("attr-name", "color-capabilities");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadColorCapabilitiesAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorCapabilities(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2752,23 +3361,26 @@
class ReadColorControlColorTempPhysicalMin : public ModelCommand
{
public:
- ReadColorControlColorTempPhysicalMin() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlColorTempPhysicalMin() : ModelCommand("read")
{
AddArgument("attr-name", "color-temp-physical-min");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadColorTempPhysicalMinAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorTempPhysicalMin(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2777,23 +3389,26 @@
class ReadColorControlColorTempPhysicalMax : public ModelCommand
{
public:
- ReadColorControlColorTempPhysicalMax() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlColorTempPhysicalMax() : ModelCommand("read")
{
AddArgument("attr-name", "color-temp-physical-max");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadColorTempPhysicalMaxAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeColorTempPhysicalMax(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2802,23 +3417,26 @@
class ReadColorControlCoupleColorTempToLevelMinMireds : public ModelCommand
{
public:
- ReadColorControlCoupleColorTempToLevelMinMireds() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlCoupleColorTempToLevelMinMireds() : ModelCommand("read")
{
AddArgument("attr-name", "couple-color-temp-to-level-min-mireds");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadCoupleColorTempToLevelMinMiredsAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -2827,53 +3445,87 @@
class ReadColorControlStartUpColorTemperatureMireds : public ModelCommand
{
public:
- ReadColorControlStartUpColorTemperatureMireds() : ModelCommand("read", kColorControlClusterId, 0x00)
+ ReadColorControlStartUpColorTemperatureMireds() : ModelCommand("read")
{
AddArgument("attr-name", "start-up-color-temperature-mireds");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeColorControlClusterReadStartUpColorTemperatureMiredsAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeStartUpColorTemperatureMireds(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteColorControlStartUpColorTemperatureMireds : public ModelCommand
+{
+public:
+ WriteColorControlStartUpColorTemperatureMireds() : ModelCommand("write")
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ AddArgument("attr-name", "start-up-color-temperature-mireds");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeStartUpColorTemperatureMireds(onSuccessCallback->Cancel(), onFailureCallback->Cancel(),
+ mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadColorControlClusterRevision : public ModelCommand
+{
+public:
+ ReadColorControlClusterRevision() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ColorControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*----------------------------------------------------------------------------*\
| Cluster DoorLock | 0x0101 |
|------------------------------------------------------------------------------|
-| Responses: | |
-| * ClearAllPinsResponse | 0x08 |
-| * ClearAllRfidsResponse | 0x19 |
-| * ClearHolidayScheduleResponse | 0x13 |
-| * ClearPinResponse | 0x07 |
-| * ClearRfidResponse | 0x18 |
-| * ClearWeekdayScheduleResponse | 0x0D |
-| * ClearYeardayScheduleResponse | 0x10 |
-| * GetHolidayScheduleResponse | 0x12 |
-| * GetPinResponse | 0x06 |
-| * GetRfidResponse | 0x17 |
-| * GetUserTypeResponse | 0x15 |
-| * GetWeekdayScheduleResponse | 0x0C |
-| * GetYeardayScheduleResponse | 0x0F |
-| * LockDoorResponse | 0x00 |
-| * SetHolidayScheduleResponse | 0x11 |
-| * SetPinResponse | 0x05 |
-| * SetRfidResponse | 0x16 |
-| * SetUserTypeResponse | 0x14 |
-| * SetWeekdayScheduleResponse | 0x0B |
-| * SetYeardayScheduleResponse | 0x0E |
-| * UnlockDoorResponse | 0x01 |
-| * UnlockWithTimeoutResponse | 0x03 |
-| | |
-|------------------------------------------------------------------------------|
| Commands: | |
| * ClearAllPins | 0x08 |
| * ClearAllRfids | 0x19 |
@@ -2883,6 +3535,7 @@
| * ClearWeekdaySchedule | 0x0D |
| * ClearYeardaySchedule | 0x10 |
| * GetHolidaySchedule | 0x12 |
+| * GetLogRecord | 0x04 |
| * GetPin | 0x06 |
| * GetRfid | 0x17 |
| * GetUserType | 0x15 |
@@ -2902,625 +3555,31 @@
| * LockState | 0x0000 |
| * LockType | 0x0001 |
| * ActuatorEnabled | 0x0002 |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
- * Command Response ClearAllPinsResponse
- */
-class ClearAllPinsResponse : public ModelCommandResponse
-{
-public:
- ClearAllPinsResponse() : ModelCommandResponse(0x08) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ClearAllPinsResponse (0x08):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response ClearAllRfidsResponse
- */
-class ClearAllRfidsResponse : public ModelCommandResponse
-{
-public:
- ClearAllRfidsResponse() : ModelCommandResponse(0x19) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ClearAllRfidsResponse (0x19):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response ClearHolidayScheduleResponse
- */
-class ClearHolidayScheduleResponse : public ModelCommandResponse
-{
-public:
- ClearHolidayScheduleResponse() : ModelCommandResponse(0x13) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ClearHolidayScheduleResponse (0x13):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response ClearPinResponse
- */
-class ClearPinResponse : public ModelCommandResponse
-{
-public:
- ClearPinResponse() : ModelCommandResponse(0x07) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ClearPinResponse (0x07):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response ClearRfidResponse
- */
-class ClearRfidResponse : public ModelCommandResponse
-{
-public:
- ClearRfidResponse() : ModelCommandResponse(0x18) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ClearRfidResponse (0x18):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response ClearWeekdayScheduleResponse
- */
-class ClearWeekdayScheduleResponse : public ModelCommandResponse
-{
-public:
- ClearWeekdayScheduleResponse() : ModelCommandResponse(0x0D) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ClearWeekdayScheduleResponse (0x0D):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response ClearYeardayScheduleResponse
- */
-class ClearYeardayScheduleResponse : public ModelCommandResponse
-{
-public:
- ClearYeardayScheduleResponse() : ModelCommandResponse(0x10) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ClearYeardayScheduleResponse (0x10):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response GetHolidayScheduleResponse
- */
-class GetHolidayScheduleResponse : public ModelCommandResponse
-{
-public:
- GetHolidayScheduleResponse() : ModelCommandResponse(0x12) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "GetHolidayScheduleResponse (0x12):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t holidayScheduleId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "holidayScheduleId", holidayScheduleId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(4);
- uint32_t localStartTime = chip::Encoding::LittleEndian::Read32(message); // uint32
- ChipLogProgress(chipTool, " %s: 0x%08x", "localStartTime", localStartTime);
- }
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(4);
- uint32_t localEndTime = chip::Encoding::LittleEndian::Read32(message); // uint32
- ChipLogProgress(chipTool, " %s: 0x%08x", "localEndTime", localEndTime);
- }
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t operatingModeDuringHoliday = chip::Encoding::Read8(message); // DrlkOperMode
- ChipLogProgress(chipTool, " %s: 0x%02x", "operatingModeDuringHoliday", operatingModeDuringHoliday);
- }
-
- return success;
- }
-};
-
-/*
- * Command Response GetPinResponse
- */
-class GetPinResponse : public ModelCommandResponse
-{
-public:
- GetPinResponse() : ModelCommandResponse(0x06) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "GetPinResponse (0x06):");
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t userId = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "userId", userId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t userStatus = chip::Encoding::Read8(message); // DrlkUserStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "userStatus", userStatus);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t userType = chip::Encoding::Read8(message); // DrlkUserType
- ChipLogProgress(chipTool, " %s: 0x%02x", "userType", userType);
-
- CHECK_MESSAGE_LENGTH(1);
- {
- uint8_t codeLen = chip::Encoding::Read8(message); // octstr
- ChipLogProgress(chipTool, " %s: 0x%02x", "codeLen", codeLen); // octstr
-
- // FIXME Strings are not supported yet. For the moment the code just checks that
- // there is enough bytes in the buffer
- CHECK_MESSAGE_LENGTH(codeLen);
- message += codeLen;
- }
-
- return success;
- }
-};
-
-/*
- * Command Response GetRfidResponse
- */
-class GetRfidResponse : public ModelCommandResponse
-{
-public:
- GetRfidResponse() : ModelCommandResponse(0x17) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "GetRfidResponse (0x17):");
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t userId = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "userId", userId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t userStatus = chip::Encoding::Read8(message); // DrlkUserStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "userStatus", userStatus);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t userType = chip::Encoding::Read8(message); // DrlkUserType
- ChipLogProgress(chipTool, " %s: 0x%02x", "userType", userType);
-
- CHECK_MESSAGE_LENGTH(1);
- {
- uint8_t rFIdCodeLen = chip::Encoding::Read8(message); // octstr
- ChipLogProgress(chipTool, " %s: 0x%02x", "rFIdCodeLen", rFIdCodeLen); // octstr
-
- // FIXME Strings are not supported yet. For the moment the code just checks that
- // there is enough bytes in the buffer
- CHECK_MESSAGE_LENGTH(rFIdCodeLen);
- message += rFIdCodeLen;
- }
-
- return success;
- }
-};
-
-/*
- * Command Response GetUserTypeResponse
- */
-class GetUserTypeResponse : public ModelCommandResponse
-{
-public:
- GetUserTypeResponse() : ModelCommandResponse(0x15) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "GetUserTypeResponse (0x15):");
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t userId = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "userId", userId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t userType = chip::Encoding::Read8(message); // DrlkUserType
- ChipLogProgress(chipTool, " %s: 0x%02x", "userType", userType);
-
- return success;
- }
-};
-
-/*
- * Command Response GetWeekdayScheduleResponse
- */
-class GetWeekdayScheduleResponse : public ModelCommandResponse
-{
-public:
- GetWeekdayScheduleResponse() : ModelCommandResponse(0x0C) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "GetWeekdayScheduleResponse (0x0C):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t scheduleId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "scheduleId", scheduleId);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t userId = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "userId", userId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t daysMask = chip::Encoding::Read8(message); // DrlkDaysMask
- ChipLogProgress(chipTool, " %s: 0x%02x", "daysMask", daysMask);
- }
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t startHour = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "startHour", startHour);
- }
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t startMinute = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "startMinute", startMinute);
- }
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t endHour = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "endHour", endHour);
- }
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t endMinute = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "endMinute", endMinute);
- }
-
- return success;
- }
-};
-
-/*
- * Command Response GetYeardayScheduleResponse
- */
-class GetYeardayScheduleResponse : public ModelCommandResponse
-{
-public:
- GetYeardayScheduleResponse() : ModelCommandResponse(0x0F) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "GetYeardayScheduleResponse (0x0F):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t scheduleId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "scheduleId", scheduleId);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t userId = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "userId", userId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(4);
- uint32_t localStartTime = chip::Encoding::LittleEndian::Read32(message); // uint32
- ChipLogProgress(chipTool, " %s: 0x%08x", "localStartTime", localStartTime);
- }
-
- if (status == 0)
- {
- CHECK_MESSAGE_LENGTH(4);
- uint32_t localEndTime = chip::Encoding::LittleEndian::Read32(message); // uint32
- ChipLogProgress(chipTool, " %s: 0x%08x", "localEndTime", localEndTime);
- }
-
- return success;
- }
-};
-
-/*
- * Command Response LockDoorResponse
- */
-class LockDoorResponse : public ModelCommandResponse
-{
-public:
- LockDoorResponse() : ModelCommandResponse(0x00) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "LockDoorResponse (0x00):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- return success;
- }
-};
-
-/*
- * Command Response SetHolidayScheduleResponse
- */
-class SetHolidayScheduleResponse : public ModelCommandResponse
-{
-public:
- SetHolidayScheduleResponse() : ModelCommandResponse(0x11) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "SetHolidayScheduleResponse (0x11):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response SetPinResponse
- */
-class SetPinResponse : public ModelCommandResponse
-{
-public:
- SetPinResponse() : ModelCommandResponse(0x05) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "SetPinResponse (0x05):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkSetCodeStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response SetRfidResponse
- */
-class SetRfidResponse : public ModelCommandResponse
-{
-public:
- SetRfidResponse() : ModelCommandResponse(0x16) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "SetRfidResponse (0x16):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkSetCodeStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response SetUserTypeResponse
- */
-class SetUserTypeResponse : public ModelCommandResponse
-{
-public:
- SetUserTypeResponse() : ModelCommandResponse(0x14) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "SetUserTypeResponse (0x14):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response SetWeekdayScheduleResponse
- */
-class SetWeekdayScheduleResponse : public ModelCommandResponse
-{
-public:
- SetWeekdayScheduleResponse() : ModelCommandResponse(0x0B) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "SetWeekdayScheduleResponse (0x0B):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response SetYeardayScheduleResponse
- */
-class SetYeardayScheduleResponse : public ModelCommandResponse
-{
-public:
- SetYeardayScheduleResponse() : ModelCommandResponse(0x0E) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "SetYeardayScheduleResponse (0x0E):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // DrlkPassFailStatus
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- return success;
- }
-};
-
-/*
- * Command Response UnlockDoorResponse
- */
-class UnlockDoorResponse : public ModelCommandResponse
-{
-public:
- UnlockDoorResponse() : ModelCommandResponse(0x01) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "UnlockDoorResponse (0x01):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- return success;
- }
-};
-
-/*
- * Command Response UnlockWithTimeoutResponse
- */
-class UnlockWithTimeoutResponse : public ModelCommandResponse
-{
-public:
- UnlockWithTimeoutResponse() : ModelCommandResponse(0x03) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "UnlockWithTimeoutResponse (0x03):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- return success;
- }
-};
-
-/*
* Command ClearAllPins
*/
class DoorLockClearAllPins : public ModelCommand
{
public:
- DoorLockClearAllPins() : ModelCommand("clear-all-pins", kDoorLockClusterId, 0x08) { ModelCommand::AddArguments(); }
+ DoorLockClearAllPins() : ModelCommand("clear-all-pins") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeDoorLockClusterClearAllPinsCommand(endPointId); }
-
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x08) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ClearAllPins(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Specific Response: ClearAllPinsResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ClearAllPinsResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<DoorLockClusterClearAllPinsResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterClearAllPinsResponseCallback>(OnDoorLockClusterClearAllPinsResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -3529,23 +3588,22 @@
class DoorLockClearAllRfids : public ModelCommand
{
public:
- DoorLockClearAllRfids() : ModelCommand("clear-all-rfids", kDoorLockClusterId, 0x19) { ModelCommand::AddArguments(); }
+ DoorLockClearAllRfids() : ModelCommand("clear-all-rfids") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeDoorLockClusterClearAllRfidsCommand(endPointId); }
-
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x19) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ClearAllRfids(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Specific Response: ClearAllRfidsResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ClearAllRfidsResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback>(OnDoorLockClusterClearAllRfidsResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -3554,33 +3612,28 @@
class DoorLockClearHolidaySchedule : public ModelCommand
{
public:
- DoorLockClearHolidaySchedule() : ModelCommand("clear-holiday-schedule", kDoorLockClusterId, 0x13)
+ DoorLockClearHolidaySchedule() : ModelCommand("clear-holiday-schedule")
{
- AddArgument("holidayScheduleID", 0, UINT8_MAX, &mHolidayScheduleID);
+ AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterClearHolidayScheduleCommand(endPointId, mHolidayScheduleID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x13) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: ClearHolidayScheduleResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ClearHolidayScheduleResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ClearHolidaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId);
}
private:
- uint8_t mHolidayScheduleID;
+ chip::Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback>(
+ OnDoorLockClusterClearHolidayScheduleResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mScheduleId;
};
/*
@@ -3589,33 +3642,27 @@
class DoorLockClearPin : public ModelCommand
{
public:
- DoorLockClearPin() : ModelCommand("clear-pin", kDoorLockClusterId, 0x07)
+ DoorLockClearPin() : ModelCommand("clear-pin")
{
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterClearPinCommand(endPointId, mUserID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x07) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: ClearPinResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ClearPinResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ClearPin(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId);
}
private:
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterClearPinResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterClearPinResponseCallback>(OnDoorLockClusterClearPinResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mUserId;
};
/*
@@ -3624,33 +3671,27 @@
class DoorLockClearRfid : public ModelCommand
{
public:
- DoorLockClearRfid() : ModelCommand("clear-rfid", kDoorLockClusterId, 0x18)
+ DoorLockClearRfid() : ModelCommand("clear-rfid")
{
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterClearRfidCommand(endPointId, mUserID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x18) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: ClearRfidResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ClearRfidResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ClearRfid(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId);
}
private:
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterClearRfidResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterClearRfidResponseCallback>(OnDoorLockClusterClearRfidResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mUserId;
};
/*
@@ -3659,35 +3700,30 @@
class DoorLockClearWeekdaySchedule : public ModelCommand
{
public:
- DoorLockClearWeekdaySchedule() : ModelCommand("clear-weekday-schedule", kDoorLockClusterId, 0x0D)
+ DoorLockClearWeekdaySchedule() : ModelCommand("clear-weekday-schedule")
{
- AddArgument("scheduleID", 0, UINT8_MAX, &mScheduleID);
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterClearWeekdayScheduleCommand(endPointId, mScheduleID, mUserID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0D) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: ClearWeekdayScheduleResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ClearWeekdayScheduleResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ClearWeekdaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId);
}
private:
- uint8_t mScheduleID;
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback>(
+ OnDoorLockClusterClearWeekdayScheduleResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mScheduleId;
+ uint16_t mUserId;
};
/*
@@ -3696,35 +3732,30 @@
class DoorLockClearYeardaySchedule : public ModelCommand
{
public:
- DoorLockClearYeardaySchedule() : ModelCommand("clear-yearday-schedule", kDoorLockClusterId, 0x10)
+ DoorLockClearYeardaySchedule() : ModelCommand("clear-yearday-schedule")
{
- AddArgument("scheduleID", 0, UINT8_MAX, &mScheduleID);
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterClearYeardayScheduleCommand(endPointId, mScheduleID, mUserID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x10) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: ClearYeardayScheduleResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ClearYeardayScheduleResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ClearYeardaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId);
}
private:
- uint8_t mScheduleID;
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback>(
+ OnDoorLockClusterClearYeardayScheduleResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mScheduleId;
+ uint16_t mUserId;
};
/*
@@ -3733,33 +3764,57 @@
class DoorLockGetHolidaySchedule : public ModelCommand
{
public:
- DoorLockGetHolidaySchedule() : ModelCommand("get-holiday-schedule", kDoorLockClusterId, 0x12)
+ DoorLockGetHolidaySchedule() : ModelCommand("get-holiday-schedule")
{
- AddArgument("holidayScheduleID", 0, UINT8_MAX, &mHolidayScheduleID);
+ AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterGetHolidayScheduleCommand(endPointId, mHolidayScheduleID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x12) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: GetHolidayScheduleResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- GetHolidayScheduleResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.GetHolidaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId);
}
private:
- uint8_t mHolidayScheduleID;
+ chip::Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback>(OnDoorLockClusterGetHolidayScheduleResponse,
+ this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mScheduleId;
+};
+
+/*
+ * Command GetLogRecord
+ */
+class DoorLockGetLogRecord : public ModelCommand
+{
+public:
+ DoorLockGetLogRecord() : ModelCommand("get-log-record")
+ {
+ AddArgument("logIndex", 0, UINT16_MAX, &mLogIndex);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x04) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.GetLogRecord(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLogIndex);
+ }
+
+private:
+ chip::Callback::Callback<DoorLockClusterGetLogRecordResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterGetLogRecordResponseCallback>(OnDoorLockClusterGetLogRecordResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mLogIndex;
};
/*
@@ -3768,33 +3823,27 @@
class DoorLockGetPin : public ModelCommand
{
public:
- DoorLockGetPin() : ModelCommand("get-pin", kDoorLockClusterId, 0x06)
+ DoorLockGetPin() : ModelCommand("get-pin")
{
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterGetPinCommand(endPointId, mUserID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: GetPinResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- GetPinResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.GetPin(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId);
}
private:
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterGetPinResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterGetPinResponseCallback>(OnDoorLockClusterGetPinResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mUserId;
};
/*
@@ -3803,33 +3852,27 @@
class DoorLockGetRfid : public ModelCommand
{
public:
- DoorLockGetRfid() : ModelCommand("get-rfid", kDoorLockClusterId, 0x17)
+ DoorLockGetRfid() : ModelCommand("get-rfid")
{
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterGetRfidCommand(endPointId, mUserID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x17) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: GetRfidResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- GetRfidResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.GetRfid(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId);
}
private:
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterGetRfidResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterGetRfidResponseCallback>(OnDoorLockClusterGetRfidResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mUserId;
};
/*
@@ -3838,33 +3881,27 @@
class DoorLockGetUserType : public ModelCommand
{
public:
- DoorLockGetUserType() : ModelCommand("get-user-type", kDoorLockClusterId, 0x15)
+ DoorLockGetUserType() : ModelCommand("get-user-type")
{
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterGetUserTypeCommand(endPointId, mUserID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x15) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: GetUserTypeResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- GetUserTypeResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.GetUserType(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId);
}
private:
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterGetUserTypeResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterGetUserTypeResponseCallback>(OnDoorLockClusterGetUserTypeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mUserId;
};
/*
@@ -3873,35 +3910,30 @@
class DoorLockGetWeekdaySchedule : public ModelCommand
{
public:
- DoorLockGetWeekdaySchedule() : ModelCommand("get-weekday-schedule", kDoorLockClusterId, 0x0C)
+ DoorLockGetWeekdaySchedule() : ModelCommand("get-weekday-schedule")
{
- AddArgument("scheduleID", 0, UINT8_MAX, &mScheduleID);
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterGetWeekdayScheduleCommand(endPointId, mScheduleID, mUserID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0C) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: GetWeekdayScheduleResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- GetWeekdayScheduleResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.GetWeekdaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId);
}
private:
- uint8_t mScheduleID;
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback>(OnDoorLockClusterGetWeekdayScheduleResponse,
+ this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mScheduleId;
+ uint16_t mUserId;
};
/*
@@ -3910,35 +3942,30 @@
class DoorLockGetYeardaySchedule : public ModelCommand
{
public:
- DoorLockGetYeardaySchedule() : ModelCommand("get-yearday-schedule", kDoorLockClusterId, 0x0F)
+ DoorLockGetYeardaySchedule() : ModelCommand("get-yearday-schedule")
{
- AddArgument("scheduleID", 0, UINT8_MAX, &mScheduleID);
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterGetYeardayScheduleCommand(endPointId, mScheduleID, mUserID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0F) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: GetYeardayScheduleResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- GetYeardayScheduleResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.GetYeardaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId);
}
private:
- uint8_t mScheduleID;
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback>(OnDoorLockClusterGetYeardayScheduleResponse,
+ this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mScheduleId;
+ uint16_t mUserId;
};
/*
@@ -3947,33 +3974,27 @@
class DoorLockLockDoor : public ModelCommand
{
public:
- DoorLockLockDoor() : ModelCommand("lock-door", kDoorLockClusterId, 0x00)
+ DoorLockLockDoor() : ModelCommand("lock-door")
{
- AddArgument("pINOrRFIDCode", &mPINOrRFIDCode);
+ AddArgument("pin", &mPin);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterLockDoorCommand(endPointId, mPINOrRFIDCode);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: LockDoorResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- LockDoorResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.LockDoor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mPin);
}
private:
- char * mPINOrRFIDCode;
+ chip::Callback::Callback<DoorLockClusterLockDoorResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterLockDoorResponseCallback>(OnDoorLockClusterLockDoorResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ char * mPin;
};
/*
@@ -3982,37 +4003,32 @@
class DoorLockSetHolidaySchedule : public ModelCommand
{
public:
- DoorLockSetHolidaySchedule() : ModelCommand("set-holiday-schedule", kDoorLockClusterId, 0x11)
+ DoorLockSetHolidaySchedule() : ModelCommand("set-holiday-schedule")
{
- AddArgument("holidayScheduleID", 0, UINT8_MAX, &mHolidayScheduleID);
+ AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId);
AddArgument("localStartTime", 0, UINT32_MAX, &mLocalStartTime);
AddArgument("localEndTime", 0, UINT32_MAX, &mLocalEndTime);
AddArgument("operatingModeDuringHoliday", 0, UINT8_MAX, &mOperatingModeDuringHoliday);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterSetHolidayScheduleCommand(endPointId, mHolidayScheduleID, mLocalStartTime, mLocalEndTime,
- mOperatingModeDuringHoliday);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x11) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: SetHolidayScheduleResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- SetHolidayScheduleResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.SetHolidaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mLocalStartTime,
+ mLocalEndTime, mOperatingModeDuringHoliday);
}
private:
- uint8_t mHolidayScheduleID;
+ chip::Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback>(OnDoorLockClusterSetHolidayScheduleResponse,
+ this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mScheduleId;
uint32_t mLocalStartTime;
uint32_t mLocalEndTime;
uint8_t mOperatingModeDuringHoliday;
@@ -4024,39 +4040,33 @@
class DoorLockSetPin : public ModelCommand
{
public:
- DoorLockSetPin() : ModelCommand("set-pin", kDoorLockClusterId, 0x05)
+ DoorLockSetPin() : ModelCommand("set-pin")
{
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
AddArgument("userStatus", 0, UINT8_MAX, &mUserStatus);
AddArgument("userType", 0, UINT8_MAX, &mUserType);
- AddArgument("pin", &mPIN);
+ AddArgument("pin", &mPin);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterSetPinCommand(endPointId, mUserID, mUserStatus, mUserType, mPIN);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x05) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: SetPinResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- SetPinResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.SetPin(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId, mUserStatus, mUserType, mPin);
}
private:
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterSetPinResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterSetPinResponseCallback>(OnDoorLockClusterSetPinResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mUserId;
uint8_t mUserStatus;
uint8_t mUserType;
- char * mPIN;
+ char * mPin;
};
/*
@@ -4065,39 +4075,33 @@
class DoorLockSetRfid : public ModelCommand
{
public:
- DoorLockSetRfid() : ModelCommand("set-rfid", kDoorLockClusterId, 0x16)
+ DoorLockSetRfid() : ModelCommand("set-rfid")
{
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
AddArgument("userStatus", 0, UINT8_MAX, &mUserStatus);
AddArgument("userType", 0, UINT8_MAX, &mUserType);
- AddArgument("rfid", &mRFID);
+ AddArgument("id", &mId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterSetRfidCommand(endPointId, mUserID, mUserStatus, mUserType, mRFID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x16) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: SetRfidResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- SetRfidResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.SetRfid(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId, mUserStatus, mUserType, mId);
}
private:
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterSetRfidResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterSetRfidResponseCallback>(OnDoorLockClusterSetRfidResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mUserId;
uint8_t mUserStatus;
uint8_t mUserType;
- char * mRFID;
+ char * mId;
};
/*
@@ -4106,34 +4110,28 @@
class DoorLockSetUserType : public ModelCommand
{
public:
- DoorLockSetUserType() : ModelCommand("set-user-type", kDoorLockClusterId, 0x14)
+ DoorLockSetUserType() : ModelCommand("set-user-type")
{
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
AddArgument("userType", 0, UINT8_MAX, &mUserType);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterSetUserTypeCommand(endPointId, mUserID, mUserType);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x14) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: SetUserTypeResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- SetUserTypeResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.SetUserType(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId, mUserType);
}
private:
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterSetUserTypeResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterSetUserTypeResponseCallback>(OnDoorLockClusterSetUserTypeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mUserId;
uint8_t mUserType;
};
@@ -4143,10 +4141,10 @@
class DoorLockSetWeekdaySchedule : public ModelCommand
{
public:
- DoorLockSetWeekdaySchedule() : ModelCommand("set-weekday-schedule", kDoorLockClusterId, 0x0B)
+ DoorLockSetWeekdaySchedule() : ModelCommand("set-weekday-schedule")
{
- AddArgument("scheduleID", 0, UINT8_MAX, &mScheduleID);
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
AddArgument("daysMask", 0, UINT8_MAX, &mDaysMask);
AddArgument("startHour", 0, UINT8_MAX, &mStartHour);
AddArgument("startMinute", 0, UINT8_MAX, &mStartMinute);
@@ -4155,29 +4153,24 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterSetWeekdayScheduleCommand(endPointId, mScheduleID, mUserID, mDaysMask, mStartHour, mStartMinute,
- mEndHour, mEndMinute);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0B) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: SetWeekdayScheduleResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- SetWeekdayScheduleResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.SetWeekdaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId, mDaysMask,
+ mStartHour, mStartMinute, mEndHour, mEndMinute);
}
private:
- uint8_t mScheduleID;
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback>(OnDoorLockClusterSetWeekdayScheduleResponse,
+ this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mScheduleId;
+ uint16_t mUserId;
uint8_t mDaysMask;
uint8_t mStartHour;
uint8_t mStartMinute;
@@ -4191,37 +4184,33 @@
class DoorLockSetYeardaySchedule : public ModelCommand
{
public:
- DoorLockSetYeardaySchedule() : ModelCommand("set-yearday-schedule", kDoorLockClusterId, 0x0E)
+ DoorLockSetYeardaySchedule() : ModelCommand("set-yearday-schedule")
{
- AddArgument("scheduleID", 0, UINT8_MAX, &mScheduleID);
- AddArgument("userID", 0, UINT16_MAX, &mUserID);
+ AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId);
+ AddArgument("userId", 0, UINT16_MAX, &mUserId);
AddArgument("localStartTime", 0, UINT32_MAX, &mLocalStartTime);
AddArgument("localEndTime", 0, UINT32_MAX, &mLocalEndTime);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterSetYeardayScheduleCommand(endPointId, mScheduleID, mUserID, mLocalStartTime, mLocalEndTime);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0E) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: SetYeardayScheduleResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- SetYeardayScheduleResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.SetYeardaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId,
+ mLocalStartTime, mLocalEndTime);
}
private:
- uint8_t mScheduleID;
- uint16_t mUserID;
+ chip::Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback>(OnDoorLockClusterSetYeardayScheduleResponse,
+ this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mScheduleId;
+ uint16_t mUserId;
uint32_t mLocalStartTime;
uint32_t mLocalEndTime;
};
@@ -4232,33 +4221,27 @@
class DoorLockUnlockDoor : public ModelCommand
{
public:
- DoorLockUnlockDoor() : ModelCommand("unlock-door", kDoorLockClusterId, 0x01)
+ DoorLockUnlockDoor() : ModelCommand("unlock-door")
{
- AddArgument("pINOrRFIDCode", &mPINOrRFIDCode);
+ AddArgument("pin", &mPin);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterUnlockDoorCommand(endPointId, mPINOrRFIDCode);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x01) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: UnlockDoorResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- UnlockDoorResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.UnlockDoor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mPin);
}
private:
- char * mPINOrRFIDCode;
+ chip::Callback::Callback<DoorLockClusterUnlockDoorResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterUnlockDoorResponseCallback>(OnDoorLockClusterUnlockDoorResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ char * mPin;
};
/*
@@ -4267,53 +4250,54 @@
class DoorLockUnlockWithTimeout : public ModelCommand
{
public:
- DoorLockUnlockWithTimeout() : ModelCommand("unlock-with-timeout", kDoorLockClusterId, 0x03)
+ DoorLockUnlockWithTimeout() : ModelCommand("unlock-with-timeout")
{
AddArgument("timeoutInSeconds", 0, UINT16_MAX, &mTimeoutInSeconds);
- AddArgument("pINOrRFIDCode", &mPINOrRFIDCode);
+ AddArgument("pin", &mPin);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterUnlockWithTimeoutCommand(endPointId, mTimeoutInSeconds, mPINOrRFIDCode);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x03) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: UnlockWithTimeoutResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- UnlockWithTimeoutResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.UnlockWithTimeout(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mTimeoutInSeconds, mPin);
}
private:
+ chip::Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback>(OnDoorLockClusterUnlockWithTimeoutResponse,
+ this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint16_t mTimeoutInSeconds;
- char * mPINOrRFIDCode;
+ char * mPin;
};
/*
- * Discover attributes
+ * Discover Attributes
*/
class DiscoverDoorLockAttributes : public ModelCommand
{
public:
- DiscoverDoorLockAttributes() : ModelCommand("discover", kDoorLockClusterId, 0x0c) { ModelCommand::AddArguments(); }
+ DiscoverDoorLockAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeDoorLockClusterDiscoverAttributes(endPointId); }
-
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -4322,29 +4306,32 @@
class ReadDoorLockLockState : public ModelCommand
{
public:
- ReadDoorLockLockState() : ModelCommand("read", kDoorLockClusterId, 0x00)
+ ReadDoorLockLockState() : ModelCommand("read")
{
AddArgument("attr-name", "lock-state");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterReadLockStateAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeLockState(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
class ReportDoorLockLockState : public ModelCommand
{
public:
- ReportDoorLockLockState() : ModelCommand("report", kDoorLockClusterId, 0x06)
+ ReportDoorLockLockState() : ModelCommand("report")
{
AddArgument("attr-name", "lock-state");
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
@@ -4352,19 +4339,30 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterReportLockStateAttribute(endPointId, mMinInterval, mMaxInterval);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: ConfigureReportingResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ConfigureReportingResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttributeLockState(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttributeLockState(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval,
+ mMaxInterval);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<Int8uAttributeCallback> * onReportCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
uint16_t mMinInterval;
uint16_t mMaxInterval;
};
@@ -4375,20 +4373,26 @@
class ReadDoorLockLockType : public ModelCommand
{
public:
- ReadDoorLockLockType() : ModelCommand("read", kDoorLockClusterId, 0x00)
+ ReadDoorLockLockType() : ModelCommand("read")
{
AddArgument("attr-name", "lock-type");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeDoorLockClusterReadLockTypeAttribute(endPointId); }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeLockType(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -4397,35 +4401,59 @@
class ReadDoorLockActuatorEnabled : public ModelCommand
{
public:
- ReadDoorLockActuatorEnabled() : ModelCommand("read", kDoorLockClusterId, 0x00)
+ ReadDoorLockActuatorEnabled() : ModelCommand("read")
{
AddArgument("attr-name", "actuator-enabled");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeDoorLockClusterReadActuatorEnabledAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeActuatorEnabled(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+private:
+ chip::Callback::Callback<BooleanAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<BooleanAttributeCallback>(OnBooleanAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadDoorLockClusterRevision : public ModelCommand
+{
+public:
+ ReadDoorLockClusterRevision() : ModelCommand("read")
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::DoorLockCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*----------------------------------------------------------------------------*\
| Cluster Groups | 0x0004 |
|------------------------------------------------------------------------------|
-| Responses: | |
-| * AddGroupResponse | 0x00 |
-| * GetGroupMembershipResponse | 0x02 |
-| * RemoveGroupResponse | 0x03 |
-| * ViewGroupResponse | 0x01 |
-| | |
-|------------------------------------------------------------------------------|
| Commands: | |
| * AddGroup | 0x00 |
| * AddGroupIfIdentifying | 0x05 |
@@ -4436,161 +4464,37 @@
|------------------------------------------------------------------------------|
| Attributes: | |
| * NameSupport | 0x0000 |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
- * Command Response AddGroupResponse
- */
-class AddGroupResponse : public ModelCommandResponse
-{
-public:
- AddGroupResponse() : ModelCommandResponse(0x00) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "AddGroupResponse (0x00):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // enum8
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupId = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupId", groupId);
-
- return success;
- }
-};
-
-/*
- * Command Response GetGroupMembershipResponse
- */
-class GetGroupMembershipResponse : public ModelCommandResponse
-{
-public:
- GetGroupMembershipResponse() : ModelCommandResponse(0x02) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "GetGroupMembershipResponse (0x02):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t capacity = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "capacity", capacity);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t groupCount = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "groupCount", groupCount);
-
- // uint16_t uint16[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupList = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupList", groupList);
- }
-
- return success;
- }
-};
-
-/*
- * Command Response RemoveGroupResponse
- */
-class RemoveGroupResponse : public ModelCommandResponse
-{
-public:
- RemoveGroupResponse() : ModelCommandResponse(0x03) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "RemoveGroupResponse (0x03):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // enum8
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupId = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupId", groupId);
-
- return success;
- }
-};
-
-/*
- * Command Response ViewGroupResponse
- */
-class ViewGroupResponse : public ModelCommandResponse
-{
-public:
- ViewGroupResponse() : ModelCommandResponse(0x01) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ViewGroupResponse (0x01):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // enum8
- ChipLogProgress(chipTool, " %s: 0x%02x", "status", status);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupId = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupId", groupId);
-
- CHECK_MESSAGE_LENGTH(1);
- {
- uint8_t groupNameLen = chip::Encoding::Read8(message); // string
- ChipLogProgress(chipTool, " %s: 0x%02x", "groupNameLen", groupNameLen); // string
-
- // FIXME Strings are not supported yet. For the moment the code just checks that
- // there is enough bytes in the buffer
- CHECK_MESSAGE_LENGTH(groupNameLen);
- message += groupNameLen;
- }
-
- return success;
- }
-};
-
-/*
* Command AddGroup
*/
class GroupsAddGroup : public ModelCommand
{
public:
- GroupsAddGroup() : ModelCommand("add-group", kGroupsClusterId, 0x00)
+ GroupsAddGroup() : ModelCommand("add-group")
{
- AddArgument("groupId", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupId);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
AddArgument("groupName", &mGroupName);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeGroupsClusterAddGroupCommand(endPointId, mGroupId, mGroupName);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x00) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: AddGroupResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- AddGroupResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::GroupsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.AddGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mGroupName);
}
private:
- chip::GroupId mGroupId;
+ chip::Callback::Callback<GroupsClusterAddGroupResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<GroupsClusterAddGroupResponseCallback>(OnGroupsClusterAddGroupResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
char * mGroupName;
};
@@ -4600,27 +4504,28 @@
class GroupsAddGroupIfIdentifying : public ModelCommand
{
public:
- GroupsAddGroupIfIdentifying() : ModelCommand("add-group-if-identifying", kGroupsClusterId, 0x05)
+ GroupsAddGroupIfIdentifying() : ModelCommand("add-group-if-identifying")
{
- AddArgument("groupId", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupId);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
AddArgument("groupName", &mGroupName);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeGroupsClusterAddGroupIfIdentifyingCommand(endPointId, mGroupId, mGroupName);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x05) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::GroupsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.AddGroupIfIdentifying(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mGroupName);
}
private:
- chip::GroupId mGroupId;
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
char * mGroupName;
};
@@ -4630,35 +4535,28 @@
class GroupsGetGroupMembership : public ModelCommand
{
public:
- GroupsGetGroupMembership() : ModelCommand("get-group-membership", kGroupsClusterId, 0x02)
+ GroupsGetGroupMembership() : ModelCommand("get-group-membership")
{
AddArgument("groupCount", 0, UINT8_MAX, &mGroupCount);
- // groupList is an array, but since chip-tool does not support variable
- // number of arguments, only a single instance is supported.
AddArgument("groupList", 0, UINT16_MAX, &mGroupList);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeGroupsClusterGetGroupMembershipCommand(endPointId, mGroupCount, mGroupList);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x02) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: GetGroupMembershipResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- GetGroupMembershipResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::GroupsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.GetGroupMembership(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupCount, mGroupList);
}
private:
+ chip::Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback>(OnGroupsClusterGetGroupMembershipResponse,
+ this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mGroupCount;
uint16_t mGroupList;
};
@@ -4669,16 +4567,22 @@
class GroupsRemoveAllGroups : public ModelCommand
{
public:
- GroupsRemoveAllGroups() : ModelCommand("remove-all-groups", kGroupsClusterId, 0x04) { ModelCommand::AddArguments(); }
+ GroupsRemoveAllGroups() : ModelCommand("remove-all-groups") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeGroupsClusterRemoveAllGroupsCommand(endPointId); }
-
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x04) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::GroupsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.RemoveAllGroups(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -4687,33 +4591,27 @@
class GroupsRemoveGroup : public ModelCommand
{
public:
- GroupsRemoveGroup() : ModelCommand("remove-group", kGroupsClusterId, 0x03)
+ GroupsRemoveGroup() : ModelCommand("remove-group")
{
- AddArgument("groupId", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupId);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeGroupsClusterRemoveGroupCommand(endPointId, mGroupId);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x03) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: RemoveGroupResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- RemoveGroupResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::GroupsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.RemoveGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId);
}
private:
- chip::GroupId mGroupId;
+ chip::Callback::Callback<GroupsClusterRemoveGroupResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<GroupsClusterRemoveGroupResponseCallback>(OnGroupsClusterRemoveGroupResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
};
/*
@@ -4722,51 +4620,51 @@
class GroupsViewGroup : public ModelCommand
{
public:
- GroupsViewGroup() : ModelCommand("view-group", kGroupsClusterId, 0x01)
+ GroupsViewGroup() : ModelCommand("view-group")
{
- AddArgument("groupId", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupId);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeGroupsClusterViewGroupCommand(endPointId, mGroupId);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x01) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: ViewGroupResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ViewGroupResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::GroupsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ViewGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId);
}
private:
- chip::GroupId mGroupId;
+ chip::Callback::Callback<GroupsClusterViewGroupResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<GroupsClusterViewGroupResponseCallback>(OnGroupsClusterViewGroupResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
};
/*
- * Discover attributes
+ * Discover Attributes
*/
class DiscoverGroupsAttributes : public ModelCommand
{
public:
- DiscoverGroupsAttributes() : ModelCommand("discover", kGroupsClusterId, 0x0c) { ModelCommand::AddArguments(); }
+ DiscoverGroupsAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeGroupsClusterDiscoverAttributes(endPointId); }
-
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::GroupsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -4775,262 +4673,94 @@
class ReadGroupsNameSupport : public ModelCommand
{
public:
- ReadGroupsNameSupport() : ModelCommand("read", kGroupsClusterId, 0x00)
+ ReadGroupsNameSupport() : ModelCommand("read")
{
AddArgument("attr-name", "name-support");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeGroupsClusterReadNameSupportAttribute(endPointId);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x00) on endpoint %" PRIu16, endpointId);
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-};
-
-/*----------------------------------------------------------------------------*\
-| Cluster IasZone | 0x0500 |
-|------------------------------------------------------------------------------|
-| Responses: | |
-| | |
-|------------------------------------------------------------------------------|
-| Commands: | |
-|------------------------------------------------------------------------------|
-| Attributes: | |
-| * ZoneState | 0x0000 |
-| * ZoneType | 0x0001 |
-| * ZoneStatus | 0x0002 |
-| * IasCieAddress | 0x0010 |
-| * ZoneID | 0x0011 |
-\*----------------------------------------------------------------------------*/
-
-/*
- * Discover attributes
- */
-class DiscoverIasZoneAttributes : public ModelCommand
-{
-public:
- DiscoverIasZoneAttributes() : ModelCommand("discover", kIasZoneClusterId, 0x0c) { ModelCommand::AddArguments(); }
-
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeIasZoneClusterDiscoverAttributes(endPointId); }
-
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-};
-
-/*
- * Attribute ZoneState
- */
-class ReadIasZoneZoneState : public ModelCommand
-{
-public:
- ReadIasZoneZoneState() : ModelCommand("read", kIasZoneClusterId, 0x00)
- {
- AddArgument("attr-name", "zone-state");
- ModelCommand::AddArguments();
- }
-
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeIasZoneClusterReadZoneStateAttribute(endPointId); }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-};
-
-/*
- * Attribute ZoneType
- */
-class ReadIasZoneZoneType : public ModelCommand
-{
-public:
- ReadIasZoneZoneType() : ModelCommand("read", kIasZoneClusterId, 0x00)
- {
- AddArgument("attr-name", "zone-type");
- ModelCommand::AddArguments();
- }
-
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeIasZoneClusterReadZoneTypeAttribute(endPointId); }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-};
-
-/*
- * Attribute ZoneStatus
- */
-class ReadIasZoneZoneStatus : public ModelCommand
-{
-public:
- ReadIasZoneZoneStatus() : ModelCommand("read", kIasZoneClusterId, 0x00)
- {
- AddArgument("attr-name", "zone-status");
- ModelCommand::AddArguments();
- }
-
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
- {
- return encodeIasZoneClusterReadZoneStatusAttribute(endPointId);
- }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-};
-
-/*
- * Attribute IasCieAddress
- */
-class ReadIasZoneIasCieAddress : public ModelCommand
-{
-public:
- ReadIasZoneIasCieAddress() : ModelCommand("read", kIasZoneClusterId, 0x00)
- {
- AddArgument("attr-name", "ias-cie-address");
- ModelCommand::AddArguments();
- }
-
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
- {
- return encodeIasZoneClusterReadIasCieAddressAttribute(endPointId);
- }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-};
-
-class WriteIasZoneIasCieAddress : public ModelCommand
-{
-public:
- WriteIasZoneIasCieAddress() : ModelCommand("write", kIasZoneClusterId, 0x01)
- {
- AddArgument("attr-name", "ias-cie-address");
- AddArgument("attr-value", 0, UINT64_MAX, &mIasCieAddress);
- ModelCommand::AddArguments();
- }
-
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
- {
- return encodeIasZoneClusterWriteIasCieAddressAttribute(endPointId, mIasCieAddress);
- }
-
- // Global Response: WriteAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- WriteAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::GroupsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeNameSupport(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
private:
- uint64_t mIasCieAddress;
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
- * Attribute ZoneID
+ * Attribute ClusterRevision
*/
-class ReadIasZoneZoneID : public ModelCommand
+class ReadGroupsClusterRevision : public ModelCommand
{
public:
- ReadIasZoneZoneID() : ModelCommand("read", kIasZoneClusterId, 0x00)
+ ReadGroupsClusterRevision() : ModelCommand("read")
{
- AddArgument("attr-name", "zone-id");
+ AddArgument("attr-name", "cluster-revision");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeIasZoneClusterReadZoneIdAttribute(endPointId); }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::GroupsCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*----------------------------------------------------------------------------*\
| Cluster Identify | 0x0003 |
|------------------------------------------------------------------------------|
-| Responses: | |
-| * IdentifyQueryResponse | 0x00 |
-| | |
-|------------------------------------------------------------------------------|
| Commands: | |
| * Identify | 0x00 |
| * IdentifyQuery | 0x01 |
|------------------------------------------------------------------------------|
| Attributes: | |
| * IdentifyTime | 0x0000 |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
- * Command Response IdentifyQueryResponse
- */
-class IdentifyQueryResponse : public ModelCommandResponse
-{
-public:
- IdentifyQueryResponse() : ModelCommandResponse(0x00) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "IdentifyQueryResponse (0x00):");
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "timeout", timeout);
-
- return success;
- }
-};
-
-/*
* Command Identify
*/
class IdentifyIdentify : public ModelCommand
{
public:
- IdentifyIdentify() : ModelCommand("identify", kIdentifyClusterId, 0x00)
+ IdentifyIdentify() : ModelCommand("identify")
{
AddArgument("identifyTime", 0, UINT16_MAX, &mIdentifyTime);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeIdentifyClusterIdentifyCommand(endPointId, mIdentifyTime);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x00) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::IdentifyCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.Identify(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mIdentifyTime);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint16_t mIdentifyTime;
};
@@ -5040,41 +4770,46 @@
class IdentifyIdentifyQuery : public ModelCommand
{
public:
- IdentifyIdentifyQuery() : ModelCommand("identify-query", kIdentifyClusterId, 0x01) { ModelCommand::AddArguments(); }
+ IdentifyIdentifyQuery() : ModelCommand("identify-query") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeIdentifyClusterIdentifyQueryCommand(endPointId); }
-
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::IdentifyCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.IdentifyQuery(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Specific Response: IdentifyQueryResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- IdentifyQueryResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback>(OnIdentifyClusterIdentifyQueryResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
- * Discover attributes
+ * Discover Attributes
*/
class DiscoverIdentifyAttributes : public ModelCommand
{
public:
- DiscoverIdentifyAttributes() : ModelCommand("discover", kIdentifyClusterId, 0x0c) { ModelCommand::AddArguments(); }
+ DiscoverIdentifyAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeIdentifyClusterDiscoverAttributes(endPointId); }
-
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::IdentifyCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -5083,30 +4818,85 @@
class ReadIdentifyIdentifyTime : public ModelCommand
{
public:
- ReadIdentifyIdentifyTime() : ModelCommand("read", kIdentifyClusterId, 0x00)
+ ReadIdentifyIdentifyTime() : ModelCommand("read")
{
AddArgument("attr-name", "identify-time");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeIdentifyClusterReadIdentifyTimeAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::IdentifyCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeIdentifyTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+class WriteIdentifyIdentifyTime : public ModelCommand
+{
+public:
+ WriteIdentifyIdentifyTime() : ModelCommand("write")
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ AddArgument("attr-name", "identify-time");
+ AddArgument("attr-value", 0, UINT16_MAX, &mValue);
+ ModelCommand::AddArguments();
}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::IdentifyCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttributeIdentifyTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mValue;
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadIdentifyClusterRevision : public ModelCommand
+{
+public:
+ ReadIdentifyClusterRevision() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::IdentifyCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*----------------------------------------------------------------------------*\
-| Cluster Level | 0x0008 |
-|------------------------------------------------------------------------------|
-| Responses: | |
-| | |
+| Cluster LevelControl | 0x0008 |
|------------------------------------------------------------------------------|
| Commands: | |
| * Move | 0x01 |
@@ -5120,102 +4910,108 @@
|------------------------------------------------------------------------------|
| Attributes: | |
| * CurrentLevel | 0x0000 |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
* Command Move
*/
-class LevelMove : public ModelCommand
+class LevelControlMove : public ModelCommand
{
public:
- LevelMove() : ModelCommand("move", kLevelClusterId, 0x01)
+ LevelControlMove() : ModelCommand("move")
{
AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode);
AddArgument("rate", 0, UINT8_MAX, &mRate);
- AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask);
- AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride);
+ AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask);
+ AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterMoveCommand(endPointId, mMoveMode, mRate, mOptionsMask, mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x01) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.Move(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, mOptionMask,
+ mOptionOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mMoveMode;
uint8_t mRate;
- uint8_t mOptionsMask;
- uint8_t mOptionsOverride;
+ uint8_t mOptionMask;
+ uint8_t mOptionOverride;
};
/*
* Command MoveToLevel
*/
-class LevelMoveToLevel : public ModelCommand
+class LevelControlMoveToLevel : public ModelCommand
{
public:
- LevelMoveToLevel() : ModelCommand("move-to-level", kLevelClusterId, 0x00)
+ LevelControlMoveToLevel() : ModelCommand("move-to-level")
{
AddArgument("level", 0, UINT8_MAX, &mLevel);
AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime);
- AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask);
- AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride);
+ AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask);
+ AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterMoveToLevelCommand(endPointId, mLevel, mTransitionTime, mOptionsMask, mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x00) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveToLevel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLevel, mTransitionTime, mOptionMask,
+ mOptionOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mLevel;
uint16_t mTransitionTime;
- uint8_t mOptionsMask;
- uint8_t mOptionsOverride;
+ uint8_t mOptionMask;
+ uint8_t mOptionOverride;
};
/*
* Command MoveToLevelWithOnOff
*/
-class LevelMoveToLevelWithOnOff : public ModelCommand
+class LevelControlMoveToLevelWithOnOff : public ModelCommand
{
public:
- LevelMoveToLevelWithOnOff() : ModelCommand("move-to-level-with-on-off", kLevelClusterId, 0x04)
+ LevelControlMoveToLevelWithOnOff() : ModelCommand("move-to-level-with-on-off")
{
AddArgument("level", 0, UINT8_MAX, &mLevel);
AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterMoveToLevelWithOnOffCommand(endPointId, mLevel, mTransitionTime);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x04) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveToLevelWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLevel, mTransitionTime);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mLevel;
uint16_t mTransitionTime;
};
@@ -5223,29 +5019,30 @@
/*
* Command MoveWithOnOff
*/
-class LevelMoveWithOnOff : public ModelCommand
+class LevelControlMoveWithOnOff : public ModelCommand
{
public:
- LevelMoveWithOnOff() : ModelCommand("move-with-on-off", kLevelClusterId, 0x05)
+ LevelControlMoveWithOnOff() : ModelCommand("move-with-on-off")
{
AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode);
AddArgument("rate", 0, UINT8_MAX, &mRate);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterMoveWithOnOffCommand(endPointId, mMoveMode, mRate);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x05) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.MoveWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mMoveMode;
uint8_t mRate;
};
@@ -5253,47 +5050,48 @@
/*
* Command Step
*/
-class LevelStep : public ModelCommand
+class LevelControlStep : public ModelCommand
{
public:
- LevelStep() : ModelCommand("step", kLevelClusterId, 0x02)
+ LevelControlStep() : ModelCommand("step")
{
AddArgument("stepMode", 0, UINT8_MAX, &mStepMode);
AddArgument("stepSize", 0, UINT8_MAX, &mStepSize);
AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime);
- AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask);
- AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride);
+ AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask);
+ AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterStepCommand(endPointId, mStepMode, mStepSize, mTransitionTime, mOptionsMask,
- mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x02) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.Step(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, mTransitionTime,
+ mOptionMask, mOptionOverride);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mStepMode;
uint8_t mStepSize;
uint16_t mTransitionTime;
- uint8_t mOptionsMask;
- uint8_t mOptionsOverride;
+ uint8_t mOptionMask;
+ uint8_t mOptionOverride;
};
/*
* Command StepWithOnOff
*/
-class LevelStepWithOnOff : public ModelCommand
+class LevelControlStepWithOnOff : public ModelCommand
{
public:
- LevelStepWithOnOff() : ModelCommand("step-with-on-off", kLevelClusterId, 0x06)
+ LevelControlStepWithOnOff() : ModelCommand("step-with-on-off")
{
AddArgument("stepMode", 0, UINT8_MAX, &mStepMode);
AddArgument("stepSize", 0, UINT8_MAX, &mStepSize);
@@ -5301,19 +5099,21 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterStepWithOnOffCommand(endPointId, mStepMode, mStepSize, mTransitionTime);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.StepWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize,
+ mTransitionTime);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
uint8_t mStepMode;
uint8_t mStepSize;
uint16_t mTransitionTime;
@@ -5322,104 +5122,114 @@
/*
* Command Stop
*/
-class LevelStop : public ModelCommand
+class LevelControlStop : public ModelCommand
{
public:
- LevelStop() : ModelCommand("stop", kLevelClusterId, 0x03)
+ LevelControlStop() : ModelCommand("stop")
{
- AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask);
- AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride);
+ AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask);
+ AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterStopCommand(endPointId, mOptionsMask, mOptionsOverride);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x03) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.Stop(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mOptionMask, mOptionOverride);
}
private:
- uint8_t mOptionsMask;
- uint8_t mOptionsOverride;
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint8_t mOptionMask;
+ uint8_t mOptionOverride;
};
/*
* Command StopWithOnOff
*/
-class LevelStopWithOnOff : public ModelCommand
+class LevelControlStopWithOnOff : public ModelCommand
{
public:
- LevelStopWithOnOff() : ModelCommand("stop-with-on-off", kLevelClusterId, 0x07) { ModelCommand::AddArguments(); }
+ LevelControlStopWithOnOff() : ModelCommand("stop-with-on-off") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterStopWithOnOffCommand(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x07) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.StopWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
- * Discover attributes
+ * Discover Attributes
*/
-class DiscoverLevelAttributes : public ModelCommand
+class DiscoverLevelControlAttributes : public ModelCommand
{
public:
- DiscoverLevelAttributes() : ModelCommand("discover", kLevelClusterId, 0x0c) { ModelCommand::AddArguments(); }
+ DiscoverLevelControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterDiscoverAttributes(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
* Attribute CurrentLevel
*/
-class ReadLevelCurrentLevel : public ModelCommand
+class ReadLevelControlCurrentLevel : public ModelCommand
{
public:
- ReadLevelCurrentLevel() : ModelCommand("read", kLevelClusterId, 0x00)
+ ReadLevelControlCurrentLevel() : ModelCommand("read")
{
AddArgument("attr-name", "current-level");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterReadCurrentLevelAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeCurrentLevel(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
-class ReportLevelCurrentLevel : public ModelCommand
+class ReportLevelControlCurrentLevel : public ModelCommand
{
public:
- ReportLevelCurrentLevel() : ModelCommand("report", kLevelClusterId, 0x06)
+ ReportLevelControlCurrentLevel() : ModelCommand("report")
{
AddArgument("attr-name", "current-level");
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
@@ -5428,30 +5238,66 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeLevelControlClusterReportCurrentLevelAttribute(endPointId, mMinInterval, mMaxInterval, mChange);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: ConfigureReportingResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ConfigureReportingResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttributeCurrentLevel(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttributeCurrentLevel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval,
+ mMaxInterval, mChange);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<Int8uAttributeCallback> * onReportCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
uint16_t mMinInterval;
uint16_t mMaxInterval;
uint8_t mChange;
};
+/*
+ * Attribute ClusterRevision
+ */
+class ReadLevelControlClusterRevision : public ModelCommand
+{
+public:
+ ReadLevelControlClusterRevision() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::LevelControlCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
/*----------------------------------------------------------------------------*\
| Cluster OnOff | 0x0006 |
|------------------------------------------------------------------------------|
-| Responses: | |
-| | |
-|------------------------------------------------------------------------------|
| Commands: | |
| * Off | 0x00 |
| * On | 0x01 |
@@ -5459,6 +5305,7 @@
|------------------------------------------------------------------------------|
| Attributes: | |
| * OnOff | 0x0000 |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
@@ -5467,16 +5314,22 @@
class OnOffOff : public ModelCommand
{
public:
- OnOffOff() : ModelCommand("off", kOnOffClusterId, 0x00) { ModelCommand::AddArguments(); }
+ OnOffOff() : ModelCommand("off") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeOnOffClusterOffCommand(endPointId); }
-
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::OnOffCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.Off(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -5485,16 +5338,22 @@
class OnOffOn : public ModelCommand
{
public:
- OnOffOn() : ModelCommand("on", kOnOffClusterId, 0x01) { ModelCommand::AddArguments(); }
+ OnOffOn() : ModelCommand("on") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeOnOffClusterOnCommand(endPointId); }
-
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::OnOffCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.On(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -5503,34 +5362,46 @@
class OnOffToggle : public ModelCommand
{
public:
- OnOffToggle() : ModelCommand("toggle", kOnOffClusterId, 0x02) { ModelCommand::AddArguments(); }
+ OnOffToggle() : ModelCommand("toggle") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeOnOffClusterToggleCommand(endPointId); }
-
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x02) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::OnOffCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.Toggle(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
- * Discover attributes
+ * Discover Attributes
*/
class DiscoverOnOffAttributes : public ModelCommand
{
public:
- DiscoverOnOffAttributes() : ModelCommand("discover", kOnOffClusterId, 0x0c) { ModelCommand::AddArguments(); }
+ DiscoverOnOffAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeOnOffClusterDiscoverAttributes(endPointId); }
-
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::OnOffCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -5539,26 +5410,32 @@
class ReadOnOffOnOff : public ModelCommand
{
public:
- ReadOnOffOnOff() : ModelCommand("read", kOnOffClusterId, 0x00)
+ ReadOnOffOnOff() : ModelCommand("read")
{
AddArgument("attr-name", "on-off");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeOnOffClusterReadOnOffAttribute(endPointId); }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::OnOffCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<BooleanAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<BooleanAttributeCallback>(OnBooleanAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
class ReportOnOffOnOff : public ModelCommand
{
public:
- ReportOnOffOnOff() : ModelCommand("report", kOnOffClusterId, 0x06)
+ ReportOnOffOnOff() : ModelCommand("report")
{
AddArgument("attr-name", "on-off");
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
@@ -5566,35 +5443,65 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeOnOffClusterReportOnOffAttribute(endPointId, mMinInterval, mMaxInterval);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: ConfigureReportingResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ConfigureReportingResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::OnOffCluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttributeOnOff(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttributeOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval,
+ mMaxInterval);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<BooleanAttributeCallback> * onReportCallback =
+ new chip::Callback::Callback<BooleanAttributeCallback>(OnBooleanAttributeResponse, this);
uint16_t mMinInterval;
uint16_t mMaxInterval;
};
+/*
+ * Attribute ClusterRevision
+ */
+class ReadOnOffClusterRevision : public ModelCommand
+{
+public:
+ ReadOnOffClusterRevision() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::OnOffCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
/*----------------------------------------------------------------------------*\
| Cluster Scenes | 0x0005 |
|------------------------------------------------------------------------------|
-| Responses: | |
-| * AddSceneResponse | 0x00 |
-| * GetSceneMembershipResponse | 0x06 |
-| * RemoveAllScenesResponse | 0x03 |
-| * RemoveSceneResponse | 0x02 |
-| * StoreSceneResponse | 0x04 |
-| * ViewSceneResponse | 0x01 |
-| | |
-|------------------------------------------------------------------------------|
| Commands: | |
| * AddScene | 0x00 |
| * GetSceneMembership | 0x06 |
@@ -5610,266 +5517,47 @@
| * CurrentGroup | 0x0002 |
| * SceneValid | 0x0003 |
| * NameSupport | 0x0004 |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
- * Command Response AddSceneResponse
- */
-class AddSceneResponse : public ModelCommandResponse
-{
-public:
- AddSceneResponse() : ModelCommandResponse(0x00) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "AddSceneResponse (0x00):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupId = chip::Encoding::LittleEndian::Read16(message); // SGroupId
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupId", groupId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t sceneId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "sceneId", sceneId);
-
- return success;
- }
-};
-
-/*
- * Command Response GetSceneMembershipResponse
- */
-class GetSceneMembershipResponse : public ModelCommandResponse
-{
-public:
- GetSceneMembershipResponse() : ModelCommandResponse(0x06) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "GetSceneMembershipResponse (0x06):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t capacity = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "capacity", capacity);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupId = chip::Encoding::LittleEndian::Read16(message); // SGroupId
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupId", groupId);
-
- // uint8_t uint8[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(1);
- uint8_t sceneList = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "sceneList", sceneList);
- }
-
- return success;
- }
-};
-
-/*
- * Command Response RemoveAllScenesResponse
- */
-class RemoveAllScenesResponse : public ModelCommandResponse
-{
-public:
- RemoveAllScenesResponse() : ModelCommandResponse(0x03) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "RemoveAllScenesResponse (0x03):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupId = chip::Encoding::LittleEndian::Read16(message); // SGroupId
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupId", groupId);
-
- return success;
- }
-};
-
-/*
- * Command Response RemoveSceneResponse
- */
-class RemoveSceneResponse : public ModelCommandResponse
-{
-public:
- RemoveSceneResponse() : ModelCommandResponse(0x02) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "RemoveSceneResponse (0x02):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupId = chip::Encoding::LittleEndian::Read16(message); // SGroupId
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupId", groupId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t sceneId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "sceneId", sceneId);
-
- return success;
- }
-};
-
-/*
- * Command Response StoreSceneResponse
- */
-class StoreSceneResponse : public ModelCommandResponse
-{
-public:
- StoreSceneResponse() : ModelCommandResponse(0x04) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "StoreSceneResponse (0x04):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupId = chip::Encoding::LittleEndian::Read16(message); // SGroupId
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupId", groupId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t sceneId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "sceneId", sceneId);
-
- return success;
- }
-};
-
-/*
- * Command Response ViewSceneResponse
- */
-class ViewSceneResponse : public ModelCommandResponse
-{
-public:
- ViewSceneResponse() : ModelCommandResponse(0x01) {}
-
- bool HandleResponse(uint8_t * message, uint16_t messageLen) const override
- {
- bool success = true;
- ChipLogProgress(chipTool, "ViewSceneResponse (0x01):");
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t status = chip::Encoding::Read8(message); // zclStatus
- success = CheckStatus(status);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t groupId = chip::Encoding::LittleEndian::Read16(message); // SGroupId
- ChipLogProgress(chipTool, " %s: 0x%04x", "groupId", groupId);
-
- CHECK_MESSAGE_LENGTH(1);
- uint8_t sceneId = chip::Encoding::Read8(message); // uint8
- ChipLogProgress(chipTool, " %s: 0x%02x", "sceneId", sceneId);
-
- CHECK_MESSAGE_LENGTH(2);
- uint16_t transitionTime = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "transitionTime", transitionTime);
-
- CHECK_MESSAGE_LENGTH(1);
- {
- uint8_t sceneNameLen = chip::Encoding::Read8(message); // SSceneName
- ChipLogProgress(chipTool, " %s: 0x%02x", "sceneNameLen", sceneNameLen); // SSceneName
-
- // FIXME Strings are not supported yet. For the moment the code just checks that
- // there is enough bytes in the buffer
- CHECK_MESSAGE_LENGTH(sceneNameLen);
- message += sceneNameLen;
- }
-
- // struct SExtensionFieldSetList[]
- while (messageLen)
- {
- CHECK_MESSAGE_LENGTH(2);
- uint16_t clusterId = chip::Encoding::LittleEndian::Read16(message); // uint16
- ChipLogProgress(chipTool, " %s: 0x%04x", "clusterId", clusterId);
-
- CHECK_MESSAGE_LENGTH(1);
- {
- uint8_t extensionFieldSetLen = chip::Encoding::Read8(message); // octstr
- ChipLogProgress(chipTool, " %s: 0x%02x", "extensionFieldSetLen", extensionFieldSetLen); // octstr
-
- // FIXME Strings are not supported yet. For the moment the code just checks that
- // there is enough bytes in the buffer
- CHECK_MESSAGE_LENGTH(extensionFieldSetLen);
- message += extensionFieldSetLen;
- }
- }
-
- return success;
- }
-};
-
-/*
* Command AddScene
*/
class ScenesAddScene : public ModelCommand
{
public:
- ScenesAddScene() : ModelCommand("add-scene", kScenesClusterId, 0x00)
+ ScenesAddScene() : ModelCommand("add-scene")
{
- AddArgument("groupID", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupID);
- AddArgument("sceneID", 0, UINT8_MAX, &mSceneID);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
+ AddArgument("sceneId", 0, UINT8_MAX, &mSceneId);
AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime);
AddArgument("sceneName", &mSceneName);
- // extensionFieldSets is an array, but since chip-tool does not support variable
- // number of arguments, only a single instance is supported.
AddArgument("clusterId", 0, UINT16_MAX, &mClusterId);
AddArgument("length", 0, UINT8_MAX, &mLength);
AddArgument("value", 0, UINT8_MAX, &mValue);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterAddSceneCommand(endPointId, mGroupID, mSceneID, mTransitionTime, mSceneName, mClusterId, mLength,
- mValue);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: AddSceneResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- AddSceneResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.AddScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId, mTransitionTime,
+ mSceneName, mClusterId, mLength, mValue);
}
private:
- chip::GroupId mGroupID;
- uint8_t mSceneID;
+ chip::Callback::Callback<ScenesClusterAddSceneResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<ScenesClusterAddSceneResponseCallback>(OnScenesClusterAddSceneResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
+ uint8_t mSceneId;
uint16_t mTransitionTime;
char * mSceneName;
- uint16_t mClusterId;
+ chip::ClusterId mClusterId;
uint8_t mLength;
uint8_t mValue;
};
@@ -5880,33 +5568,28 @@
class ScenesGetSceneMembership : public ModelCommand
{
public:
- ScenesGetSceneMembership() : ModelCommand("get-scene-membership", kScenesClusterId, 0x06)
+ ScenesGetSceneMembership() : ModelCommand("get-scene-membership")
{
- AddArgument("groupID", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupID);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterGetSceneMembershipCommand(endPointId, mGroupID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: GetSceneMembershipResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- GetSceneMembershipResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.GetSceneMembership(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId);
}
private:
- chip::GroupId mGroupID;
+ chip::Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback>(OnScenesClusterGetSceneMembershipResponse,
+ this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
};
/*
@@ -5915,29 +5598,30 @@
class ScenesRecallScene : public ModelCommand
{
public:
- ScenesRecallScene() : ModelCommand("recall-scene", kScenesClusterId, 0x05)
+ ScenesRecallScene() : ModelCommand("recall-scene")
{
- AddArgument("groupID", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupID);
- AddArgument("sceneID", 0, UINT8_MAX, &mSceneID);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
+ AddArgument("sceneId", 0, UINT8_MAX, &mSceneId);
AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterRecallSceneCommand(endPointId, mGroupID, mSceneID, mTransitionTime);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x05) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.RecallScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId, mTransitionTime);
}
private:
- chip::GroupId mGroupID;
- uint8_t mSceneID;
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
+ uint8_t mSceneId;
uint16_t mTransitionTime;
};
@@ -5947,33 +5631,27 @@
class ScenesRemoveAllScenes : public ModelCommand
{
public:
- ScenesRemoveAllScenes() : ModelCommand("remove-all-scenes", kScenesClusterId, 0x03)
+ ScenesRemoveAllScenes() : ModelCommand("remove-all-scenes")
{
- AddArgument("groupID", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupID);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterRemoveAllScenesCommand(endPointId, mGroupID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x03) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: RemoveAllScenesResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- RemoveAllScenesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.RemoveAllScenes(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId);
}
private:
- chip::GroupId mGroupID;
+ chip::Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback>(OnScenesClusterRemoveAllScenesResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
};
/*
@@ -5982,35 +5660,29 @@
class ScenesRemoveScene : public ModelCommand
{
public:
- ScenesRemoveScene() : ModelCommand("remove-scene", kScenesClusterId, 0x02)
+ ScenesRemoveScene() : ModelCommand("remove-scene")
{
- AddArgument("groupID", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupID);
- AddArgument("sceneID", 0, UINT8_MAX, &mSceneID);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
+ AddArgument("sceneId", 0, UINT8_MAX, &mSceneId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterRemoveSceneCommand(endPointId, mGroupID, mSceneID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x02) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: RemoveSceneResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- RemoveSceneResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.RemoveScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId);
}
private:
- chip::GroupId mGroupID;
- uint8_t mSceneID;
+ chip::Callback::Callback<ScenesClusterRemoveSceneResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<ScenesClusterRemoveSceneResponseCallback>(OnScenesClusterRemoveSceneResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
+ uint8_t mSceneId;
};
/*
@@ -6019,35 +5691,29 @@
class ScenesStoreScene : public ModelCommand
{
public:
- ScenesStoreScene() : ModelCommand("store-scene", kScenesClusterId, 0x04)
+ ScenesStoreScene() : ModelCommand("store-scene")
{
- AddArgument("groupID", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupID);
- AddArgument("sceneID", 0, UINT8_MAX, &mSceneID);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
+ AddArgument("sceneId", 0, UINT8_MAX, &mSceneId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterStoreSceneCommand(endPointId, mGroupID, mSceneID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x04) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: StoreSceneResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- StoreSceneResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.StoreScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId);
}
private:
- chip::GroupId mGroupID;
- uint8_t mSceneID;
+ chip::Callback::Callback<ScenesClusterStoreSceneResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<ScenesClusterStoreSceneResponseCallback>(OnScenesClusterStoreSceneResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
+ uint8_t mSceneId;
};
/*
@@ -6056,53 +5722,53 @@
class ScenesViewScene : public ModelCommand
{
public:
- ScenesViewScene() : ModelCommand("view-scene", kScenesClusterId, 0x01)
+ ScenesViewScene() : ModelCommand("view-scene")
{
- AddArgument("groupID", 0, std::numeric_limits<chip::GroupId>::max(), &mGroupID);
- AddArgument("sceneID", 0, UINT8_MAX, &mSceneID);
+ AddArgument("groupId", 0, UINT16_MAX, &mGroupId);
+ AddArgument("sceneId", 0, UINT8_MAX, &mSceneId);
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterViewSceneCommand(endPointId, mGroupID, mSceneID);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x01) on endpoint %" PRIu16, endpointId);
- // Global Response: DefaultResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DefaultResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
-
- // Specific Response: ViewSceneResponse
- bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ViewSceneResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ViewScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId);
}
private:
- chip::GroupId mGroupID;
- uint8_t mSceneID;
+ chip::Callback::Callback<ScenesClusterViewSceneResponseCallback> * onSuccessCallback =
+ new chip::Callback::Callback<ScenesClusterViewSceneResponseCallback>(OnScenesClusterViewSceneResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ uint16_t mGroupId;
+ uint8_t mSceneId;
};
/*
- * Discover attributes
+ * Discover Attributes
*/
class DiscoverScenesAttributes : public ModelCommand
{
public:
- DiscoverScenesAttributes() : ModelCommand("discover", kScenesClusterId, 0x0c) { ModelCommand::AddArguments(); }
+ DiscoverScenesAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeScenesClusterDiscoverAttributes(endPointId); }
-
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -6111,20 +5777,26 @@
class ReadScenesSceneCount : public ModelCommand
{
public:
- ReadScenesSceneCount() : ModelCommand("read", kScenesClusterId, 0x00)
+ ReadScenesSceneCount() : ModelCommand("read")
{
AddArgument("attr-name", "scene-count");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeScenesClusterReadSceneCountAttribute(endPointId); }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeSceneCount(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -6133,23 +5805,26 @@
class ReadScenesCurrentScene : public ModelCommand
{
public:
- ReadScenesCurrentScene() : ModelCommand("read", kScenesClusterId, 0x00)
+ ReadScenesCurrentScene() : ModelCommand("read")
{
AddArgument("attr-name", "current-scene");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterReadCurrentSceneAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeCurrentScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -6158,23 +5833,26 @@
class ReadScenesCurrentGroup : public ModelCommand
{
public:
- ReadScenesCurrentGroup() : ModelCommand("read", kScenesClusterId, 0x00)
+ ReadScenesCurrentGroup() : ModelCommand("read")
{
AddArgument("attr-name", "current-group");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterReadCurrentGroupAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeCurrentGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -6183,20 +5861,26 @@
class ReadScenesSceneValid : public ModelCommand
{
public:
- ReadScenesSceneValid() : ModelCommand("read", kScenesClusterId, 0x00)
+ ReadScenesSceneValid() : ModelCommand("read")
{
AddArgument("attr-name", "scene-valid");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override { return encodeScenesClusterReadSceneValidAttribute(endPointId); }
-
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeSceneValid(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
+
+private:
+ chip::Callback::Callback<BooleanAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<BooleanAttributeCallback>(OnBooleanAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -6205,61 +5889,90 @@
class ReadScenesNameSupport : public ModelCommand
{
public:
- ReadScenesNameSupport() : ModelCommand("read", kScenesClusterId, 0x00)
+ ReadScenesNameSupport() : ModelCommand("read")
{
AddArgument("attr-name", "name-support");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeScenesClusterReadNameSupportAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeNameSupport(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadScenesClusterRevision : public ModelCommand
+{
+public:
+ ReadScenesClusterRevision() : ModelCommand("read")
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::ScenesCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*----------------------------------------------------------------------------*\
| Cluster TemperatureMeasurement | 0x0402 |
|------------------------------------------------------------------------------|
-| Responses: | |
-| | |
-|------------------------------------------------------------------------------|
| Commands: | |
|------------------------------------------------------------------------------|
| Attributes: | |
| * MeasuredValue | 0x0000 |
| * MinMeasuredValue | 0x0001 |
| * MaxMeasuredValue | 0x0002 |
+| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
/*
- * Discover attributes
+ * Discover Attributes
*/
class DiscoverTemperatureMeasurementAttributes : public ModelCommand
{
public:
- DiscoverTemperatureMeasurementAttributes() : ModelCommand("discover", kTempMeasurementClusterId, 0x0c)
+ DiscoverTemperatureMeasurementAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- ModelCommand::AddArguments();
+ ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::TemperatureMeasurementCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
- {
- return encodeTemperatureMeasurementClusterDiscoverAttributes(endPointId);
- }
-
- // Global Response: DiscoverAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- DiscoverAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -6268,29 +5981,32 @@
class ReadTemperatureMeasurementMeasuredValue : public ModelCommand
{
public:
- ReadTemperatureMeasurementMeasuredValue() : ModelCommand("read", kTempMeasurementClusterId, 0x00)
+ ReadTemperatureMeasurementMeasuredValue() : ModelCommand("read")
{
AddArgument("attr-name", "measured-value");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeTemperatureMeasurementClusterReadMeasuredValueAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0402) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::TemperatureMeasurementCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeMeasuredValue(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16sAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16sAttributeCallback>(OnInt16sAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
class ReportTemperatureMeasurementMeasuredValue : public ModelCommand
{
public:
- ReportTemperatureMeasurementMeasuredValue() : ModelCommand("report", kTempMeasurementClusterId, 0x06)
+ ReportTemperatureMeasurementMeasuredValue() : ModelCommand("report")
{
AddArgument("attr-name", "measured-value");
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
@@ -6299,19 +6015,30 @@
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeTemperatureMeasurementClusterReportMeasuredValueAttribute(endPointId, mMinInterval, mMaxInterval, mChange);
- }
+ ChipLogProgress(chipTool, "Sending cluster (0x0402) command (0x06) on endpoint %" PRIu16, endpointId);
- // Global Response: ConfigureReportingResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ConfigureReportingResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ chip::Controller::TemperatureMeasurementCluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttributeMeasuredValue(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttributeMeasuredValue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval,
+ mMaxInterval, mChange);
}
private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback =
+ new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<Int16sAttributeCallback> * onReportCallback =
+ new chip::Callback::Callback<Int16sAttributeCallback>(OnInt16sAttributeResponse, this);
uint16_t mMinInterval;
uint16_t mMaxInterval;
int16_t mChange;
@@ -6323,23 +6050,26 @@
class ReadTemperatureMeasurementMinMeasuredValue : public ModelCommand
{
public:
- ReadTemperatureMeasurementMinMeasuredValue() : ModelCommand("read", kTempMeasurementClusterId, 0x00)
+ ReadTemperatureMeasurementMinMeasuredValue() : ModelCommand("read")
{
AddArgument("attr-name", "min-measured-value");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeTemperatureMeasurementClusterReadMinMeasuredValueAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0402) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::TemperatureMeasurementCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeMinMeasuredValue(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
- {
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
- }
+private:
+ chip::Callback::Callback<Int16sAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16sAttributeCallback>(OnInt16sAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*
@@ -6348,23 +6078,54 @@
class ReadTemperatureMeasurementMaxMeasuredValue : public ModelCommand
{
public:
- ReadTemperatureMeasurementMaxMeasuredValue() : ModelCommand("read", kTempMeasurementClusterId, 0x00)
+ ReadTemperatureMeasurementMaxMeasuredValue() : ModelCommand("read")
{
AddArgument("attr-name", "max-measured-value");
ModelCommand::AddArguments();
}
- PacketBufferHandle EncodeCommand(uint8_t endPointId) override
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
{
- return encodeTemperatureMeasurementClusterReadMaxMeasuredValueAttribute(endPointId);
+ ChipLogProgress(chipTool, "Sending cluster (0x0402) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::TemperatureMeasurementCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeMaxMeasuredValue(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
}
- // Global Response: ReadAttributesResponse
- bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const override
+private:
+ chip::Callback::Callback<Int16sAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16sAttributeCallback>(OnInt16sAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadTemperatureMeasurementClusterRevision : public ModelCommand
+{
+public:
+ ReadTemperatureMeasurementClusterRevision() : ModelCommand("read")
{
- ReadAttributesResponse response;
- return response.HandleCommandResponse(commandId, message, messageLen);
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0402) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::TemperatureMeasurementCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<Int16uAttributeCallback> * onSuccessCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback =
+ new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
};
/*----------------------------------------------------------------------------*\
@@ -6375,27 +6136,38 @@
const char * clusterName = "BarrierControl";
commands_list clusterCommands = {
- make_unique<BarrierControlGoToPercent>(), make_unique<BarrierControlStop>(),
- make_unique<DiscoverBarrierControlAttributes>(), make_unique<ReadBarrierControlMovingState>(),
- make_unique<ReadBarrierControlSafetyStatus>(), make_unique<ReadBarrierControlCapabilities>(),
- make_unique<ReadBarrierControlBarrierPosition>(),
+ make_unique<BarrierControlBarrierControlGoToPercent>(), make_unique<BarrierControlBarrierControlStop>(),
+ make_unique<DiscoverBarrierControlAttributes>(), make_unique<ReadBarrierControlBarrierMovingState>(),
+ make_unique<ReadBarrierControlBarrierSafetyStatus>(), make_unique<ReadBarrierControlBarrierCapabilities>(),
+ make_unique<ReadBarrierControlBarrierPosition>(), make_unique<ReadBarrierControlClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
}
-
void registerClusterBasic(Commands & commands)
{
const char * clusterName = "Basic";
commands_list clusterCommands = {
- make_unique<BasicResetToFactoryDefaults>(), make_unique<BasicMfgSpecificPing>(), make_unique<DiscoverBasicAttributes>(),
- make_unique<ReadBasicZclVersion>(), make_unique<ReadBasicPowerSource>(),
+ make_unique<BasicMfgSpecificPing>(), make_unique<BasicResetToFactoryDefaults>(), make_unique<DiscoverBasicAttributes>(),
+ make_unique<ReadBasicZclVersion>(), make_unique<ReadBasicPowerSource>(), make_unique<ReadBasicClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
}
+void registerClusterBinding(Commands & commands)
+{
+ const char * clusterName = "Binding";
+ commands_list clusterCommands = {
+ make_unique<BindingBind>(),
+ make_unique<BindingUnbind>(),
+ make_unique<DiscoverBindingAttributes>(),
+ make_unique<ReadBindingClusterRevision>(),
+ };
+
+ commands.Register(clusterName, clusterCommands);
+}
void registerClusterColorControl(Commands & commands)
{
const char * clusterName = "ColorControl";
@@ -6425,9 +6197,13 @@
make_unique<ReportColorControlCurrentX>(),
make_unique<ReadColorControlCurrentY>(),
make_unique<ReportColorControlCurrentY>(),
+ make_unique<ReadColorControlDriftCompensation>(),
+ make_unique<ReadColorControlCompensationText>(),
make_unique<ReadColorControlColorTemperature>(),
make_unique<ReportColorControlColorTemperature>(),
make_unique<ReadColorControlColorMode>(),
+ make_unique<ReadColorControlColorControlOptions>(),
+ make_unique<WriteColorControlColorControlOptions>(),
make_unique<ReadColorControlNumberOfPrimaries>(),
make_unique<ReadColorControlPrimary1X>(),
make_unique<ReadColorControlPrimary1Y>(),
@@ -6447,6 +6223,28 @@
make_unique<ReadColorControlPrimary6X>(),
make_unique<ReadColorControlPrimary6Y>(),
make_unique<ReadColorControlPrimary6Intensity>(),
+ make_unique<ReadColorControlWhitePointX>(),
+ make_unique<WriteColorControlWhitePointX>(),
+ make_unique<ReadColorControlWhitePointY>(),
+ make_unique<WriteColorControlWhitePointY>(),
+ make_unique<ReadColorControlColorPointRX>(),
+ make_unique<WriteColorControlColorPointRX>(),
+ make_unique<ReadColorControlColorPointRY>(),
+ make_unique<WriteColorControlColorPointRY>(),
+ make_unique<ReadColorControlColorPointRIntensity>(),
+ make_unique<WriteColorControlColorPointRIntensity>(),
+ make_unique<ReadColorControlColorPointGX>(),
+ make_unique<WriteColorControlColorPointGX>(),
+ make_unique<ReadColorControlColorPointGY>(),
+ make_unique<WriteColorControlColorPointGY>(),
+ make_unique<ReadColorControlColorPointGIntensity>(),
+ make_unique<WriteColorControlColorPointGIntensity>(),
+ make_unique<ReadColorControlColorPointBX>(),
+ make_unique<WriteColorControlColorPointBX>(),
+ make_unique<ReadColorControlColorPointBY>(),
+ make_unique<WriteColorControlColorPointBY>(),
+ make_unique<ReadColorControlColorPointBIntensity>(),
+ make_unique<WriteColorControlColorPointBIntensity>(),
make_unique<ReadColorControlEnhancedCurrentHue>(),
make_unique<ReadColorControlEnhancedColorMode>(),
make_unique<ReadColorControlColorLoopActive>(),
@@ -6457,11 +6255,12 @@
make_unique<ReadColorControlColorTempPhysicalMax>(),
make_unique<ReadColorControlCoupleColorTempToLevelMinMireds>(),
make_unique<ReadColorControlStartUpColorTemperatureMireds>(),
+ make_unique<WriteColorControlStartUpColorTemperatureMireds>(),
+ make_unique<ReadColorControlClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
}
-
void registerClusterDoorLock(Commands & commands)
{
const char * clusterName = "DoorLock";
@@ -6475,6 +6274,7 @@
make_unique<DoorLockClearWeekdaySchedule>(),
make_unique<DoorLockClearYeardaySchedule>(),
make_unique<DoorLockGetHolidaySchedule>(),
+ make_unique<DoorLockGetLogRecord>(),
make_unique<DoorLockGetPin>(),
make_unique<DoorLockGetRfid>(),
make_unique<DoorLockGetUserType>(),
@@ -6494,109 +6294,100 @@
make_unique<ReportDoorLockLockState>(),
make_unique<ReadDoorLockLockType>(),
make_unique<ReadDoorLockActuatorEnabled>(),
+ make_unique<ReadDoorLockClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
}
-
void registerClusterGroups(Commands & commands)
{
const char * clusterName = "Groups";
commands_list clusterCommands = {
- make_unique<GroupsAddGroup>(), make_unique<GroupsAddGroupIfIdentifying>(),
- make_unique<GroupsGetGroupMembership>(), make_unique<GroupsRemoveAllGroups>(),
- make_unique<GroupsRemoveGroup>(), make_unique<GroupsViewGroup>(),
- make_unique<DiscoverGroupsAttributes>(), make_unique<ReadGroupsNameSupport>(),
+ make_unique<GroupsAddGroup>(),
+ make_unique<GroupsAddGroupIfIdentifying>(),
+ make_unique<GroupsGetGroupMembership>(),
+ make_unique<GroupsRemoveAllGroups>(),
+ make_unique<GroupsRemoveGroup>(),
+ make_unique<GroupsViewGroup>(),
+ make_unique<DiscoverGroupsAttributes>(),
+ make_unique<ReadGroupsNameSupport>(),
+ make_unique<ReadGroupsClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
}
-
-void registerClusterIasZone(Commands & commands)
-{
- const char * clusterName = "IasZone";
-
- commands_list clusterCommands = {
- make_unique<DiscoverIasZoneAttributes>(), make_unique<ReadIasZoneZoneState>(), make_unique<ReadIasZoneZoneType>(),
- make_unique<ReadIasZoneZoneStatus>(), make_unique<ReadIasZoneIasCieAddress>(), make_unique<WriteIasZoneIasCieAddress>(),
- make_unique<ReadIasZoneZoneID>(),
- };
-
- commands.Register(clusterName, clusterCommands);
-}
-
void registerClusterIdentify(Commands & commands)
{
const char * clusterName = "Identify";
commands_list clusterCommands = {
- make_unique<IdentifyIdentify>(),
- make_unique<IdentifyIdentifyQuery>(),
- make_unique<DiscoverIdentifyAttributes>(),
- make_unique<ReadIdentifyIdentifyTime>(),
+ make_unique<IdentifyIdentify>(), make_unique<IdentifyIdentifyQuery>(),
+ make_unique<DiscoverIdentifyAttributes>(), make_unique<ReadIdentifyIdentifyTime>(),
+ make_unique<WriteIdentifyIdentifyTime>(), make_unique<ReadIdentifyClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
}
-
-void registerClusterLevel(Commands & commands)
+void registerClusterLevelControl(Commands & commands)
{
const char * clusterName = "LevelControl";
commands_list clusterCommands = {
- make_unique<LevelMove>(),
- make_unique<LevelMoveToLevel>(),
- make_unique<LevelMoveToLevelWithOnOff>(),
- make_unique<LevelMoveWithOnOff>(),
- make_unique<LevelStep>(),
- make_unique<LevelStepWithOnOff>(),
- make_unique<LevelStop>(),
- make_unique<LevelStopWithOnOff>(),
- make_unique<DiscoverLevelAttributes>(),
- make_unique<ReadLevelCurrentLevel>(),
- make_unique<ReportLevelCurrentLevel>(),
+ make_unique<LevelControlMove>(),
+ make_unique<LevelControlMoveToLevel>(),
+ make_unique<LevelControlMoveToLevelWithOnOff>(),
+ make_unique<LevelControlMoveWithOnOff>(),
+ make_unique<LevelControlStep>(),
+ make_unique<LevelControlStepWithOnOff>(),
+ make_unique<LevelControlStop>(),
+ make_unique<LevelControlStopWithOnOff>(),
+ make_unique<DiscoverLevelControlAttributes>(),
+ make_unique<ReadLevelControlCurrentLevel>(),
+ make_unique<ReportLevelControlCurrentLevel>(),
+ make_unique<ReadLevelControlClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
}
-
void registerClusterOnOff(Commands & commands)
{
const char * clusterName = "OnOff";
commands_list clusterCommands = {
- make_unique<OnOffOff>(), make_unique<OnOffOn>(),
- make_unique<OnOffToggle>(), make_unique<DiscoverOnOffAttributes>(),
- make_unique<ReadOnOffOnOff>(), make_unique<ReportOnOffOnOff>(),
+ make_unique<OnOffOff>(),
+ make_unique<OnOffOn>(),
+ make_unique<OnOffToggle>(),
+ make_unique<DiscoverOnOffAttributes>(),
+ make_unique<ReadOnOffOnOff>(),
+ make_unique<ReportOnOffOnOff>(),
+ make_unique<ReadOnOffClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
}
-
void registerClusterScenes(Commands & commands)
{
const char * clusterName = "Scenes";
commands_list clusterCommands = {
- make_unique<ScenesAddScene>(), make_unique<ScenesGetSceneMembership>(), make_unique<ScenesRecallScene>(),
- make_unique<ScenesRemoveAllScenes>(), make_unique<ScenesRemoveScene>(), make_unique<ScenesStoreScene>(),
- make_unique<ScenesViewScene>(), make_unique<DiscoverScenesAttributes>(), make_unique<ReadScenesSceneCount>(),
- make_unique<ReadScenesCurrentScene>(), make_unique<ReadScenesCurrentGroup>(), make_unique<ReadScenesSceneValid>(),
- make_unique<ReadScenesNameSupport>(),
+ make_unique<ScenesAddScene>(), make_unique<ScenesGetSceneMembership>(), make_unique<ScenesRecallScene>(),
+ make_unique<ScenesRemoveAllScenes>(), make_unique<ScenesRemoveScene>(), make_unique<ScenesStoreScene>(),
+ make_unique<ScenesViewScene>(), make_unique<DiscoverScenesAttributes>(), make_unique<ReadScenesSceneCount>(),
+ make_unique<ReadScenesCurrentScene>(), make_unique<ReadScenesCurrentGroup>(), make_unique<ReadScenesSceneValid>(),
+ make_unique<ReadScenesNameSupport>(), make_unique<ReadScenesClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
}
-
-void registerClusterTempMeasurement(Commands & commands)
+void registerClusterTemperatureMeasurement(Commands & commands)
{
const char * clusterName = "TemperatureMeasurement";
commands_list clusterCommands = {
make_unique<DiscoverTemperatureMeasurementAttributes>(), make_unique<ReadTemperatureMeasurementMeasuredValue>(),
make_unique<ReportTemperatureMeasurementMeasuredValue>(), make_unique<ReadTemperatureMeasurementMinMeasuredValue>(),
- make_unique<ReadTemperatureMeasurementMaxMeasuredValue>(),
+ make_unique<ReadTemperatureMeasurementMaxMeasuredValue>(), make_unique<ReadTemperatureMeasurementClusterRevision>(),
};
commands.Register(clusterName, clusterCommands);
@@ -6606,13 +6397,13 @@
{
registerClusterBarrierControl(commands);
registerClusterBasic(commands);
+ registerClusterBinding(commands);
registerClusterColorControl(commands);
registerClusterDoorLock(commands);
registerClusterGroups(commands);
- registerClusterIasZone(commands);
registerClusterIdentify(commands);
- registerClusterLevel(commands);
+ registerClusterLevelControl(commands);
registerClusterOnOff(commands);
registerClusterScenes(commands);
- registerClusterTempMeasurement(commands);
+ registerClusterTemperatureMeasurement(commands);
}
diff --git a/examples/chip-tool/commands/clusters/ModelCommand.cpp b/examples/chip-tool/commands/clusters/ModelCommand.cpp
index 6292470..c0cdb3b 100644
--- a/examples/chip-tool/commands/clusters/ModelCommand.cpp
+++ b/examples/chip-tool/commands/clusters/ModelCommand.cpp
@@ -21,22 +21,7 @@
using namespace ::chip;
namespace {
-constexpr uint16_t kWaitDurationInSeconds = 10;
-constexpr uint8_t kZCLGlobalCmdFrameControlHeader = 8;
-constexpr uint8_t kZCLClusterCmdFrameControlHeader = 9;
-constexpr uint8_t kZCLGlobalMfgSpecificCmdFrameControlHeader = 12;
-
-bool isValidFrame(uint8_t frameControl)
-{
- // Bit 3 of the frame control byte set means direction is server to client.
- return (frameControl == kZCLGlobalCmdFrameControlHeader || frameControl == kZCLClusterCmdFrameControlHeader ||
- kZCLGlobalMfgSpecificCmdFrameControlHeader);
-}
-
-bool isGlobalCommand(uint8_t frameControl)
-{
- return (frameControl == kZCLGlobalCmdFrameControlHeader || frameControl == kZCLGlobalMfgSpecificCmdFrameControlHeader);
-}
+constexpr uint16_t kWaitDurationInSeconds = 10;
} // namespace
CHIP_ERROR ModelCommand::Run(PersistentStorage & storage, NodeId localId, NodeId remoteId)
@@ -44,16 +29,22 @@
CHIP_ERROR err = CHIP_NO_ERROR;
err = mCommissioner.SetUdpListenPort(storage.GetListenPort());
- VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Commissioner: %s", chip::ErrorStr(err)));
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Commissioner: %s", ErrorStr(err)));
err = mCommissioner.Init(localId, &storage);
- VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Commissioner: %s", chip::ErrorStr(err)));
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Commissioner: %s", ErrorStr(err)));
err = mCommissioner.ServiceEvents();
- VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Run Loop: %s", chip::ErrorStr(err)));
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Run Loop: %s", ErrorStr(err)));
- err = RunInternal(remoteId);
- SuccessOrExit(err);
+ err = mCommissioner.GetDevice(remoteId, &mDevice);
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(chipTool, "Init failure! No pairing for device: %" PRIu64, localId));
+
+ err = SendCommand(mDevice, mEndPointId);
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(chipTool, "Failed to send message: %s", ErrorStr(err)));
+
+ UpdateWaitForResponse(true);
+ WaitForResponse(kWaitDurationInSeconds);
VerifyOrExit(GetCommandExitStatus(), err = CHIP_ERROR_INTERNAL);
@@ -62,107 +53,3 @@
mCommissioner.Shutdown();
return err;
}
-
-CHIP_ERROR ModelCommand::RunInternal(NodeId remoteId)
-{
- ChipDevice * device;
- CHIP_ERROR err = mCommissioner.GetDevice(remoteId, &device);
- VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(chipTool, "Could not find a paired device. Are you sure it has been paired ?"));
-
- device->SetDelegate(this);
-
- err = RunCommandInternal(device);
- SuccessOrExit(err);
-
- UpdateWaitForResponse(true);
- WaitForResponse(kWaitDurationInSeconds);
-
-exit:
- return err;
-}
-
-CHIP_ERROR ModelCommand::RunCommandInternal(ChipDevice * device)
-{
- CHIP_ERROR err = CHIP_NO_ERROR;
- ChipLogProgress(chipTool, "Endpoint id: '0x%02x', Cluster id: '0x%04x', Command id: '0x%02x'", mEndPointId, mClusterId,
- mCommandId);
-
- PacketBufferHandle buffer = EncodeCommand(mEndPointId);
- VerifyOrExit(!buffer.IsNull(), err = CHIP_ERROR_INTERNAL);
-
-#ifdef DEBUG
- PrintBuffer(buffer);
-#endif
-
- err = device->SendMessage(std::move(buffer));
- VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(chipTool, "Failed to send message: %s", ErrorStr(err)));
-
-exit:
- return err;
-}
-
-void ModelCommand::OnMessage(PacketBufferHandle buffer)
-{
- ChipLogDetail(chipTool, "OnMessage: Received %zu bytes", buffer->DataLength());
-
- EmberApsFrame frame;
- uint8_t * message;
- uint16_t messageLen;
- uint16_t mfgCode;
- uint8_t frameControl;
- uint8_t sequenceNumber;
- uint8_t commandId;
- bool success = false;
-
- if (extractApsFrame(buffer->Start(), buffer->DataLength(), &frame) == 0)
- {
- ChipLogError(chipTool, "APS frame processing failure!");
- ExitNow();
- }
- ChipLogDetail(chipTool, "APS frame processing success!");
-
- messageLen = extractMessage(buffer->Start(), buffer->DataLength(), &message);
- VerifyOrExit(messageLen >= 1, ChipLogError(chipTool, "Unexpected response length: %d", messageLen));
-
- frameControl = chip::Encoding::Read8(message);
- if (frameControl & (1u << 2))
- {
- VerifyOrExit(messageLen >= 5, ChipLogError(chipTool, "Unexpected response length: %d", messageLen));
- mfgCode = chip::Encoding::LittleEndian::Read16(message);
- ChipLogDetail(chipTool, "Manufacturer specific code in response: 0x%04x", mfgCode);
- messageLen = static_cast<uint16_t>(messageLen - 2);
- }
- VerifyOrExit(messageLen >= 3, ChipLogError(chipTool, "Unexpected response length: %d", messageLen));
- sequenceNumber = chip::Encoding::Read8(message);
- commandId = chip::Encoding::Read8(message);
- messageLen = static_cast<uint16_t>(messageLen - 3);
-
- VerifyOrExit(isValidFrame(frameControl), ChipLogError(chipTool, "Unexpected frame control byte: 0x%02x", frameControl));
- VerifyOrExit(sequenceNumber == 1, ChipLogError(chipTool, "Unexpected sequence number: %d", sequenceNumber));
- VerifyOrExit(mEndPointId == frame.sourceEndpoint,
- ChipLogError(chipTool, "Unexpected endpoint id '0x%02x'", frame.sourceEndpoint));
- VerifyOrExit(mClusterId == frame.clusterId, ChipLogError(chipTool, "Unexpected cluster id '0x%04x'", frame.clusterId));
-
- success = isGlobalCommand(frameControl) ? HandleGlobalResponse(commandId, message, messageLen)
- : HandleSpecificResponse(commandId, message, messageLen);
-exit:
- SetCommandExitStatus(success);
- UpdateWaitForResponse(false);
-}
-
-void ModelCommand::OnStatusChange(void)
-{
- ChipLogProgress(chipTool, "DeviceStatusDelegate::OnStatusChange");
-}
-
-void ModelCommand::PrintBuffer(const PacketBufferHandle & buffer) const
-{
- const size_t dataLen = buffer->DataLength();
-
- fprintf(stderr, "SENDING: %zu ", dataLen);
- for (size_t i = 0; i < dataLen; ++i)
- {
- fprintf(stderr, "%02x ", buffer->Start()[i]);
- }
- fprintf(stderr, "\n");
-}
diff --git a/examples/chip-tool/commands/clusters/ModelCommand.h b/examples/chip-tool/commands/clusters/ModelCommand.h
index 838b546..f42ad82 100644
--- a/examples/chip-tool/commands/clusters/ModelCommand.h
+++ b/examples/chip-tool/commands/clusters/ModelCommand.h
@@ -28,34 +28,20 @@
#define CHIP_ZCL_ENDPOINT_MIN 0x01
#define CHIP_ZCL_ENDPOINT_MAX 0xF0
-class ModelCommand : public Command, public chip::Controller::DeviceStatusDelegate
+class ModelCommand : public Command
{
public:
- ModelCommand(const char * commandName, uint16_t clusterId, uint8_t commandId) :
- Command(commandName), mClusterId(clusterId), mCommandId(commandId)
- {}
+ ModelCommand(const char * commandName) : Command(commandName) {}
void AddArguments() { AddArgument("endpoint-id", CHIP_ZCL_ENDPOINT_MIN, CHIP_ZCL_ENDPOINT_MAX, &mEndPointId); }
/////////// Command Interface /////////
CHIP_ERROR Run(PersistentStorage & storage, NodeId localId, NodeId remoteId) override;
- /////////// DeviceStatusDelegate Interface /////////
- void OnMessage(PacketBufferHandle buffer) override;
- void OnStatusChange(void) override;
-
- virtual PacketBufferHandle EncodeCommand(uint8_t endPointId) = 0;
- virtual bool HandleGlobalResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const { return false; }
- virtual bool HandleSpecificResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen) const { return false; }
+ virtual CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endPointId) = 0;
private:
- CHIP_ERROR RunInternal(NodeId remoteId);
- CHIP_ERROR RunCommandInternal(ChipDevice * device);
-
- void PrintBuffer(const PacketBufferHandle & buffer) const;
-
ChipDeviceCommissioner mCommissioner;
- const uint16_t mClusterId;
- const uint8_t mCommandId;
+ ChipDevice * mDevice;
uint8_t mEndPointId;
};
diff --git a/examples/chip-tool/commands/clusters/ModelCommandResponse.h b/examples/chip-tool/commands/clusters/ModelCommandResponse.h
deleted file mode 100644
index e47f229..0000000
--- a/examples/chip-tool/commands/clusters/ModelCommandResponse.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2020 Project CHIP Authors
- * All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#pragma once
-
-class ModelCommandResponse
-{
-public:
- ModelCommandResponse(uint8_t commandId) : mCommandId(commandId) {}
- virtual ~ModelCommandResponse() {}
-
- bool HandleCommandResponse(uint8_t commandId, uint8_t * message, uint16_t messageLen)
- {
- if (commandId != mCommandId)
- {
- ChipLogError(chipTool, "Unexpected command response id: '0x%02x'. Expecting: '0x%02x'", commandId, mCommandId);
- return false;
- }
- return HandleResponse(message, messageLen);
- }
-
- virtual bool HandleResponse(uint8_t * message, uint16_t messageLen) const = 0;
-
-private:
- const uint8_t mCommandId;
-};
diff --git a/examples/chip-tool/commands/common/Command.h b/examples/chip-tool/commands/common/Command.h
index 7edbb7d..db847b9 100644
--- a/examples/chip-tool/commands/common/Command.h
+++ b/examples/chip-tool/commands/common/Command.h
@@ -18,6 +18,7 @@
#pragma once
+#include <app/server/DataModelHandler.h>
#include <controller/CHIPDeviceController.h>
#include <inet/InetInterface.h>
#include <support/logging/CHIPLogging.h>
@@ -143,7 +144,11 @@
virtual CHIP_ERROR Run(PersistentStorage & storage, NodeId localId, NodeId remoteId) = 0;
bool GetCommandExitStatus() const { return mCommandExitStatus; }
- void SetCommandExitStatus(bool status) { mCommandExitStatus = status; }
+ void SetCommandExitStatus(bool status)
+ {
+ mCommandExitStatus = status;
+ UpdateWaitForResponse(false);
+ }
void UpdateWaitForResponse(bool value);
void WaitForResponse(uint16_t duration);
diff --git a/examples/chip-tool/commands/pairing/PairingCommand.cpp b/examples/chip-tool/commands/pairing/PairingCommand.cpp
index 6be2b74..33f23af 100644
--- a/examples/chip-tool/commands/pairing/PairingCommand.cpp
+++ b/examples/chip-tool/commands/pairing/PairingCommand.cpp
@@ -82,7 +82,7 @@
CHIP_ERROR PairingCommand::Unpair(NodeId remoteId)
{
- UpdateWaitForResponse(false);
+ SetCommandExitStatus(true);
return mCommissioner.UnpairDevice(remoteId);
}
@@ -130,7 +130,6 @@
}
SetCommandExitStatus(err == CHIP_NO_ERROR);
- UpdateWaitForResponse(false);
}
void PairingCommand::OnPairingDeleted(CHIP_ERROR err)
@@ -145,5 +144,4 @@
}
SetCommandExitStatus(err == CHIP_NO_ERROR);
- UpdateWaitForResponse(false);
}
diff --git a/examples/chip-tool/commands/reporting/Commands.h b/examples/chip-tool/commands/reporting/Commands.h
new file mode 100644
index 0000000..85e97e5
--- /dev/null
+++ b/examples/chip-tool/commands/reporting/Commands.h
@@ -0,0 +1,115 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#pragma once
+
+#include "ReportingCommand.h"
+
+typedef void (*UnsupportedAttributeCallback)(void * context);
+
+class Listen : public ReportingCommand
+{
+public:
+ Listen() : ReportingCommand("listen") {}
+
+ void AddReportCallbacks(uint8_t endpointId) override
+ {
+ chip::app::CHIPDeviceCallbacksMgr & callbacksMgr = chip::app::CHIPDeviceCallbacksMgr::GetInstance();
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, 0x0300, 0x0000,
+ onReportColorControlCurrentHueCallback->Cancel());
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, 0x0300, 0x0001,
+ onReportColorControlCurrentSaturationCallback->Cancel());
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, 0x0300, 0x0003,
+ onReportColorControlCurrentXCallback->Cancel());
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, 0x0300, 0x0004,
+ onReportColorControlCurrentYCallback->Cancel());
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, 0x0300, 0x0007,
+ onReportColorControlColorTemperatureCallback->Cancel());
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, 0x0101, 0x0000,
+ onReportDoorLockLockStateCallback->Cancel());
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, 0x0008, 0x0000,
+ onReportLevelControlCurrentLevelCallback->Cancel());
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, 0x0006, 0x0000, onReportOnOffOnOffCallback->Cancel());
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, 0x0402, 0x0000,
+ onReportTemperatureMeasurementMeasuredValueCallback->Cancel());
+ }
+
+ static void OnDefaultSuccessResponse(void * context) { ChipLogProgress(chipTool, "Default Success Response"); }
+
+ static void OnDefaultFailureResponse(void * context, uint8_t status)
+ {
+ ChipLogProgress(chipTool, "Default Failure Response: 0x%02x", status);
+ }
+
+ static void OnUnsupportedAttributeResponse(void * context)
+ {
+ ChipLogError(chipTool, "Unsupported attribute Response. This should never happen !");
+ }
+
+ static void OnBooleanAttributeResponse(void * context, bool value)
+ {
+ ChipLogProgress(chipTool, "Boolean attribute Response: %d", value);
+ }
+
+ static void OnInt8uAttributeResponse(void * context, uint8_t value)
+ {
+ ChipLogProgress(chipTool, "Int8u attribute Response: %" PRIu8, value);
+ }
+
+ static void OnInt16uAttributeResponse(void * context, uint16_t value)
+ {
+ ChipLogProgress(chipTool, "Int16u attribute Response: %" PRIu16, value);
+ }
+
+ static void OnInt16sAttributeResponse(void * context, int16_t value)
+ {
+ ChipLogProgress(chipTool, "Int16s attribute Response: %" PRId16, value);
+ }
+
+private:
+ chip::Callback::Callback<Int8uAttributeCallback> * onReportColorControlCurrentHueCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<Int8uAttributeCallback> * onReportColorControlCurrentSaturationCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<Int16uAttributeCallback> * onReportColorControlCurrentXCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<Int16uAttributeCallback> * onReportColorControlCurrentYCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<Int16uAttributeCallback> * onReportColorControlColorTemperatureCallback =
+ new chip::Callback::Callback<Int16uAttributeCallback>(OnInt16uAttributeResponse, this);
+ chip::Callback::Callback<Int8uAttributeCallback> * onReportDoorLockLockStateCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<Int8uAttributeCallback> * onReportLevelControlCurrentLevelCallback =
+ new chip::Callback::Callback<Int8uAttributeCallback>(OnInt8uAttributeResponse, this);
+ chip::Callback::Callback<BooleanAttributeCallback> * onReportOnOffOnOffCallback =
+ new chip::Callback::Callback<BooleanAttributeCallback>(OnBooleanAttributeResponse, this);
+ chip::Callback::Callback<Int16sAttributeCallback> * onReportTemperatureMeasurementMeasuredValueCallback =
+ new chip::Callback::Callback<Int16sAttributeCallback>(OnInt16sAttributeResponse, this);
+};
+
+void registerCommandsReporting(Commands & commands)
+{
+ const char * clusterName = "Reporting";
+
+ commands_list clusterCommands = {
+ make_unique<Listen>(),
+ };
+
+ commands.Register(clusterName, clusterCommands);
+}
diff --git a/examples/chip-tool/commands/reporting/ReportingCommand.cpp b/examples/chip-tool/commands/reporting/ReportingCommand.cpp
new file mode 100644
index 0000000..303aea7
--- /dev/null
+++ b/examples/chip-tool/commands/reporting/ReportingCommand.cpp
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2020 Project CHIP Authors
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "ReportingCommand.h"
+
+#include "../common/Commands.h"
+#include "gen/CHIPClientCallbacks.h"
+#include <controller/CHIPClusters.h>
+
+using namespace ::chip;
+
+namespace {
+constexpr uint16_t kWaitDurationInSeconds = UINT16_MAX;
+} // namespace
+
+CHIP_ERROR ReportingCommand::Run(PersistentStorage & storage, NodeId localId, NodeId remoteId)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ chip::Controller::BasicCluster cluster;
+
+ err = mCommissioner.SetUdpListenPort(storage.GetListenPort());
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Commissioner: %s", ErrorStr(err)));
+
+ err = mCommissioner.Init(localId, &storage);
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Commissioner: %s", ErrorStr(err)));
+
+ err = mCommissioner.ServiceEvents();
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Run Loop: %s", ErrorStr(err)));
+
+ err = mCommissioner.GetDevice(remoteId, &mDevice);
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(chipTool, "Init failure! No pairing for device: %" PRIu64, localId));
+
+ mDevice->SetDelegate(this);
+
+ AddReportCallbacks(mEndPointId);
+
+ cluster.Associate(mDevice, mEndPointId);
+ err = cluster.MfgSpecificPing(nullptr, nullptr);
+ VerifyOrExit(err == CHIP_NO_ERROR, ChipLogError(Controller, "Init failure! Ping failure: %s", ErrorStr(err)));
+
+ UpdateWaitForResponse(true);
+ WaitForResponse(kWaitDurationInSeconds);
+
+exit:
+ mCommissioner.ServiceEventSignal();
+ mCommissioner.Shutdown();
+ return err;
+}
+
+void ReportingCommand::OnMessage(PacketBufferHandle buffer)
+{
+ ChipLogDetail(chipTool, "%" PRIu64 ": Received %zu bytes", mDevice->GetDeviceId(), buffer->DataLength());
+ HandleDataModelMessage(mDevice->GetDeviceId(), std::move(buffer));
+}
+
+void ReportingCommand::OnStatusChange(void)
+{
+ ChipLogDetail(chipTool, "DeviceStatusDelegate::OnStatusChange");
+}
diff --git a/examples/chip-tool/commands/reporting/ReportingCommand.h b/examples/chip-tool/commands/reporting/ReportingCommand.h
new file mode 100644
index 0000000..b25d5a9
--- /dev/null
+++ b/examples/chip-tool/commands/reporting/ReportingCommand.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2021 Project CHIP Authors
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#pragma once
+
+#include "../../config/PersistentStorage.h"
+#include "../common/Command.h"
+
+// Limits on endpoint values. Could be wrong, if we start using endpoint 0 for
+// something.
+#define CHIP_ZCL_ENDPOINT_MIN 0x01
+#define CHIP_ZCL_ENDPOINT_MAX 0xF0
+
+class ReportingCommand : public Command, public chip::Controller::DeviceStatusDelegate
+{
+public:
+ ReportingCommand(const char * commandName) : Command(commandName)
+ {
+ AddArgument("endpoint-id", CHIP_ZCL_ENDPOINT_MIN, CHIP_ZCL_ENDPOINT_MAX, &mEndPointId);
+ }
+
+ /////////// Command Interface /////////
+ CHIP_ERROR Run(PersistentStorage & storage, NodeId localId, NodeId remoteId) override;
+
+ /////////// DeviceStatusDelegate Interface /////////
+ void OnMessage(PacketBufferHandle buffer) override;
+ void OnStatusChange(void) override;
+
+ virtual void AddReportCallbacks(uint8_t endPointId) = 0;
+
+private:
+ uint8_t mEndPointId;
+
+ ChipDeviceCommissioner mCommissioner;
+ ChipDevice * mDevice;
+};
diff --git a/examples/chip-tool/gen/CHIPClientCallbacks.cpp b/examples/chip-tool/gen/CHIPClientCallbacks.cpp
new file mode 100644
index 0000000..58b3d84
--- /dev/null
+++ b/examples/chip-tool/gen/CHIPClientCallbacks.cpp
@@ -0,0 +1,1567 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include "gen/CHIPClientCallbacks.h"
+
+#include "gen/enums.h"
+#include <app/util/CHIPDeviceCallbacksMgr.h>
+#include <app/util/af-enums.h>
+#include <app/util/af.h>
+#include <app/util/basic-types.h>
+#include <core/CHIPEncoding.h>
+#include <support/SafeInt.h>
+#include <support/logging/CHIPLogging.h>
+
+using namespace ::chip;
+
+#define CHECK_MESSAGE_LENGTH(value) \
+ if (!chip::CanCastTo<uint16_t>(value)) \
+ { \
+ ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ if (messageLen < value) \
+ { \
+ ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
+
+#define GET_RESPONSE_CALLBACKS(name) \
+ Callback::Cancelable * onSuccessCallback = nullptr; \
+ Callback::Cancelable * onFailureCallback = nullptr; \
+ NodeId sourceId = emberAfCurrentCommand()->source; \
+ uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \
+ CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onSuccessCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing success callback", name); \
+ } \
+ \
+ if (onFailureCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing failure callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+#define GET_REPORT_CALLBACK(name) \
+ Callback::Cancelable * onReportCallback = nullptr; \
+ CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onReportCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing report callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+void LogStatus(uint8_t status)
+{
+ switch (status)
+ {
+ case EMBER_ZCL_STATUS_SUCCESS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_FIELD:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_VALUE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_READ_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_FOUND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_SELECTOR:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WRITE_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ACTION_DENIED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_TIMEOUT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ABORT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_LIMIT_REACHED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status);
+ break;
+ default:
+ ChipLogError(Zcl, "Unknow status: 0x%02x", status);
+ break;
+ }
+}
+
+// Singleton instance of the callbacks manager
+app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance();
+
+bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ ChipLogProgress(Zcl, "DefaultResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " CommandId: 0x%02x", commandId);
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback");
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, static_cast<uint8_t>(status));
+ }
+
+ return true;
+}
+
+bool emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadAttributesResponseCallback");
+
+ // struct readAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute read
+ // per read command. So if multiple attributes are read at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes read at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "WriteAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback");
+
+ // struct writeAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute written
+ // per write command. So if multiple attributes are written at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback");
+
+ // struct configureReportingResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute report
+ // per configure command. So if multiple attributes are configured at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback");
+
+ // struct readReportingConfigurationResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval);
+
+ // FIXME: unk is not supported yet.
+
+ Callback::Callback<ReadReportingConfigurationReportedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout);
+
+ Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ }
+ }
+
+ return true;
+}
+
+bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen,
+ bool extended)
+{
+ ChipLogProgress(Zcl, "DiscoverAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " extended: %d", extended);
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback");
+
+ // struct discoverAttributesResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+ }
+
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearAllPinsResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearAllPinsResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearAllPinsResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearAllPinsResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearAllPinsResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearAllRfidsResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearAllRfidsResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearAllRfidsResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearHolidayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearHolidayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearHolidayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearPinResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearPinResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearPinResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearPinResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearPinResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearRfidResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearRfidResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearRfidResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearRfidResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearRfidResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearWeekdayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearWeekdayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearYeardayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearYeardayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearYeardayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetHolidayScheduleResponseCallback(uint8_t scheduleId, uint8_t status, uint32_t localStartTime,
+ uint32_t localEndTime, uint8_t operatingModeDuringHoliday)
+{
+ ChipLogProgress(Zcl, "GetHolidayScheduleResponse:");
+ ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId);
+ LogStatus(status);
+ ChipLogProgress(Zcl, " localStartTime: %" PRIu32 "", localStartTime);
+ ChipLogProgress(Zcl, " localEndTime: %" PRIu32 "", localEndTime);
+ ChipLogProgress(Zcl, " operatingModeDuringHoliday: %" PRIu8 "", operatingModeDuringHoliday);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetHolidayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetLogRecordResponseCallback(uint16_t logEntryId, uint32_t timestamp, uint8_t eventType, uint8_t source,
+ uint8_t eventIdOrAlarmCode, uint16_t userId, uint8_t * pin)
+{
+ ChipLogProgress(Zcl, "GetLogRecordResponse:");
+ ChipLogProgress(Zcl, " logEntryId: %" PRIu16 "", logEntryId);
+ ChipLogProgress(Zcl, " timestamp: %" PRIu32 "", timestamp);
+ ChipLogProgress(Zcl, " eventType: %" PRIu8 "", eventType);
+ ChipLogProgress(Zcl, " source: %" PRIu8 "", source);
+ ChipLogProgress(Zcl, " eventIdOrAlarmCode: %" PRIu8 "", eventIdOrAlarmCode);
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ ChipLogProgress(Zcl, " pin: %s", pin);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetLogRecordResponseCallback");
+
+ Callback::Callback<DoorLockClusterGetLogRecordResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetLogRecordResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, logEntryId, timestamp, eventType, source, eventIdOrAlarmCode, userId, pin);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetPinResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * pin)
+{
+ ChipLogProgress(Zcl, "GetPinResponse:");
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ ChipLogProgress(Zcl, " userStatus: %" PRIu8 "", userStatus);
+ ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType);
+ ChipLogProgress(Zcl, " pin: %s", pin);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetPinResponseCallback");
+
+ Callback::Callback<DoorLockClusterGetPinResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetPinResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, userId, userStatus, userType, pin);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetRfidResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid)
+{
+ ChipLogProgress(Zcl, "GetRfidResponse:");
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ ChipLogProgress(Zcl, " userStatus: %" PRIu8 "", userStatus);
+ ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType);
+ ChipLogProgress(Zcl, " rfid: %s", rfid);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetRfidResponseCallback");
+
+ Callback::Callback<DoorLockClusterGetRfidResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetRfidResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, userId, userStatus, userType, rfid);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetUserTypeResponseCallback(uint16_t userId, uint8_t userType)
+{
+ ChipLogProgress(Zcl, "GetUserTypeResponse:");
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetUserTypeResponseCallback");
+
+ Callback::Callback<DoorLockClusterGetUserTypeResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetUserTypeResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, userId, userType);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status, uint8_t daysMask,
+ uint8_t startHour, uint8_t startMinute, uint8_t endHour,
+ uint8_t endMinute)
+{
+ ChipLogProgress(Zcl, "GetWeekdayScheduleResponse:");
+ ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId);
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ LogStatus(status);
+ ChipLogProgress(Zcl, " daysMask: %" PRIu8 "", daysMask);
+ ChipLogProgress(Zcl, " startHour: %" PRIu8 "", startHour);
+ ChipLogProgress(Zcl, " startMinute: %" PRIu8 "", startMinute);
+ ChipLogProgress(Zcl, " endHour: %" PRIu8 "", endHour);
+ ChipLogProgress(Zcl, " endMinute: %" PRIu8 "", endMinute);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetWeekdayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetYeardayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status,
+ uint32_t localStartTime, uint32_t localEndTime)
+{
+ ChipLogProgress(Zcl, "GetYeardayScheduleResponse:");
+ ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId);
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ LogStatus(status);
+ ChipLogProgress(Zcl, " localStartTime: %" PRIu32 "", localStartTime);
+ ChipLogProgress(Zcl, " localEndTime: %" PRIu32 "", localEndTime);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetYeardayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, scheduleId, userId, localStartTime, localEndTime);
+ return true;
+}
+
+bool emberAfDoorLockClusterLockDoorResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "LockDoorResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterLockDoorResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterLockDoorResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterLockDoorResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetHolidayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetHolidayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetHolidayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetPinResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetPinResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetPinResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetPinResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetPinResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetRfidResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetRfidResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetRfidResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetRfidResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetRfidResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetUserTypeResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetUserTypeResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetUserTypeResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetUserTypeResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetUserTypeResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetWeekdayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetWeekdayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetYeardayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetYeardayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetYeardayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterUnlockDoorResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "UnlockDoorResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterUnlockDoorResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterUnlockDoorResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterUnlockDoorResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "UnlockWithTimeoutResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterUnlockWithTimeoutResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfGroupsClusterAddGroupResponseCallback(uint8_t status, uint16_t groupId)
+{
+ ChipLogProgress(Zcl, "AddGroupResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+
+ GET_RESPONSE_CALLBACKS("GroupsClusterAddGroupResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<GroupsClusterAddGroupResponseCallback> * cb =
+ Callback::Callback<GroupsClusterAddGroupResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId);
+ return true;
+}
+
+bool emberAfGroupsClusterGetGroupMembershipResponseCallback(uint8_t capacity, uint8_t groupCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * groupList)
+{
+ ChipLogProgress(Zcl, "GetGroupMembershipResponse:");
+ ChipLogProgress(Zcl, " capacity: %" PRIu8 "", capacity);
+ ChipLogProgress(Zcl, " groupCount: %" PRIu8 "", groupCount);
+ ChipLogProgress(Zcl, " groupList: %p", groupList);
+
+ GET_RESPONSE_CALLBACKS("GroupsClusterGetGroupMembershipResponseCallback");
+
+ Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback> * cb =
+ Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, capacity, groupCount, groupList);
+ return true;
+}
+
+bool emberAfGroupsClusterRemoveGroupResponseCallback(uint8_t status, uint16_t groupId)
+{
+ ChipLogProgress(Zcl, "RemoveGroupResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+
+ GET_RESPONSE_CALLBACKS("GroupsClusterRemoveGroupResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<GroupsClusterRemoveGroupResponseCallback> * cb =
+ Callback::Callback<GroupsClusterRemoveGroupResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId);
+ return true;
+}
+
+bool emberAfGroupsClusterViewGroupResponseCallback(uint8_t status, uint16_t groupId, uint8_t * groupName)
+{
+ ChipLogProgress(Zcl, "ViewGroupResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " groupName: %s", groupName);
+
+ GET_RESPONSE_CALLBACKS("GroupsClusterViewGroupResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<GroupsClusterViewGroupResponseCallback> * cb =
+ Callback::Callback<GroupsClusterViewGroupResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, groupName);
+ return true;
+}
+
+bool emberAfIdentifyClusterIdentifyQueryResponseCallback(uint16_t timeout)
+{
+ ChipLogProgress(Zcl, "IdentifyQueryResponse:");
+ ChipLogProgress(Zcl, " timeout: %" PRIu16 "", timeout);
+
+ GET_RESPONSE_CALLBACKS("IdentifyClusterIdentifyQueryResponseCallback");
+
+ Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback> * cb =
+ Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ return true;
+}
+
+bool emberAfScenesClusterAddSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId)
+{
+ ChipLogProgress(Zcl, "AddSceneResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterAddSceneResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterAddSceneResponseCallback> * cb =
+ Callback::Callback<ScenesClusterAddSceneResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, sceneId);
+ return true;
+}
+
+bool emberAfScenesClusterGetSceneMembershipResponseCallback(uint8_t status, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList)
+{
+ ChipLogProgress(Zcl, "GetSceneMembershipResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " capacity: %" PRIu8 "", capacity);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneCount: %" PRIu8 "", sceneCount);
+ ChipLogProgress(Zcl, " sceneList: %p", sceneList);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterGetSceneMembershipResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback> * cb =
+ Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, capacity, groupId, sceneCount, sceneList);
+ return true;
+}
+
+bool emberAfScenesClusterRemoveAllScenesResponseCallback(uint8_t status, uint16_t groupId)
+{
+ ChipLogProgress(Zcl, "RemoveAllScenesResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterRemoveAllScenesResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback> * cb =
+ Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId);
+ return true;
+}
+
+bool emberAfScenesClusterRemoveSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId)
+{
+ ChipLogProgress(Zcl, "RemoveSceneResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterRemoveSceneResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterRemoveSceneResponseCallback> * cb =
+ Callback::Callback<ScenesClusterRemoveSceneResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, sceneId);
+ return true;
+}
+
+bool emberAfScenesClusterStoreSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId)
+{
+ ChipLogProgress(Zcl, "StoreSceneResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterStoreSceneResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterStoreSceneResponseCallback> * cb =
+ Callback::Callback<ScenesClusterStoreSceneResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, sceneId);
+ return true;
+}
+
+bool emberAfScenesClusterViewSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
+ uint8_t * sceneName,
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets)
+{
+ ChipLogProgress(Zcl, "ViewSceneResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
+ ChipLogProgress(Zcl, " transitionTime: %" PRIu16 "", transitionTime);
+ ChipLogProgress(Zcl, " sceneName: %s", sceneName);
+ ChipLogProgress(Zcl, " extensionFieldSets: %p", extensionFieldSets);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterViewSceneResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterViewSceneResponseCallback> * cb =
+ Callback::Callback<ScenesClusterViewSceneResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, sceneId, transitionTime, sceneName, extensionFieldSets);
+ return true;
+}
+
+bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "emberAfReportAttributeCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ NodeId sourceId = emberAfCurrentCommand()->source;
+ ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId);
+
+ EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
+ ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId);
+
+ // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed.
+ Callback::Cancelable * onFailureCallback = nullptr;
+
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ GET_REPORT_CALLBACK("emberAfReportAttributesCallback");
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+
+ return true;
+}
diff --git a/examples/chip-tool/gen/CHIPClientCallbacks.h b/examples/chip-tool/gen/CHIPClientCallbacks.h
new file mode 100644
index 0000000..3e88cfc
--- /dev/null
+++ b/examples/chip-tool/gen/CHIPClientCallbacks.h
@@ -0,0 +1,86 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#pragma once
+
+#include <inttypes.h>
+
+// Global Response Callbacks
+typedef void (*DefaultSuccessCallback)(void * context);
+typedef void (*DefaultFailureCallback)(void * context, uint8_t status);
+typedef void (*BooleanAttributeCallback)(void * context, bool value);
+typedef void (*Int8uAttributeCallback)(void * context, uint8_t value);
+typedef void (*Int8sAttributeCallback)(void * context, int8_t value);
+typedef void (*Int16uAttributeCallback)(void * context, uint16_t value);
+typedef void (*Int16sAttributeCallback)(void * context, int16_t value);
+typedef void (*Int32uAttributeCallback)(void * context, uint32_t value);
+typedef void (*Int32sAttributeCallback)(void * context, int32_t value);
+typedef void (*Int64uAttributeCallback)(void * context, uint64_t value);
+typedef void (*Int64sAttributeCallback)(void * context, int64_t value);
+typedef void (*ReadReportingConfigurationReportedCallback)(void * context, uint16_t minInterval, uint16_t maxInterval);
+typedef void (*ReadReportingConfigurationReceivedCallback)(void * context, uint16_t timeout);
+
+// Cluster Specific Response Callbacks
+typedef void (*DoorLockClusterClearAllPinsResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearAllRfidsResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearHolidayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearPinResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearRfidResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearWeekdayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearYeardayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterGetHolidayScheduleResponseCallback)(void * context, uint8_t scheduleId, uint32_t localStartTime,
+ uint32_t localEndTime, uint8_t operatingModeDuringHoliday);
+typedef void (*DoorLockClusterGetLogRecordResponseCallback)(void * context, uint16_t logEntryId, uint32_t timestamp,
+ uint8_t eventType, uint8_t source, uint8_t eventIdOrAlarmCode,
+ uint16_t userId, uint8_t * pin);
+typedef void (*DoorLockClusterGetPinResponseCallback)(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType,
+ uint8_t * pin);
+typedef void (*DoorLockClusterGetRfidResponseCallback)(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType,
+ uint8_t * rfid);
+typedef void (*DoorLockClusterGetUserTypeResponseCallback)(void * context, uint16_t userId, uint8_t userType);
+typedef void (*DoorLockClusterGetWeekdayScheduleResponseCallback)(void * context, uint8_t scheduleId, uint16_t userId,
+ uint8_t daysMask, uint8_t startHour, uint8_t startMinute,
+ uint8_t endHour, uint8_t endMinute);
+typedef void (*DoorLockClusterGetYeardayScheduleResponseCallback)(void * context, uint8_t scheduleId, uint16_t userId,
+ uint32_t localStartTime, uint32_t localEndTime);
+typedef void (*DoorLockClusterLockDoorResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetHolidayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetPinResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetRfidResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetUserTypeResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetWeekdayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetYeardayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterUnlockDoorResponseCallback)(void * context);
+typedef void (*DoorLockClusterUnlockWithTimeoutResponseCallback)(void * context);
+typedef void (*GroupsClusterAddGroupResponseCallback)(void * context, uint16_t groupId);
+typedef void (*GroupsClusterGetGroupMembershipResponseCallback)(void * context, uint8_t capacity, uint8_t groupCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * groupList);
+typedef void (*GroupsClusterRemoveGroupResponseCallback)(void * context, uint16_t groupId);
+typedef void (*GroupsClusterViewGroupResponseCallback)(void * context, uint16_t groupId, uint8_t * groupName);
+typedef void (*IdentifyClusterIdentifyQueryResponseCallback)(void * context, uint16_t timeout);
+typedef void (*ScenesClusterAddSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId);
+typedef void (*ScenesClusterGetSceneMembershipResponseCallback)(void * context, uint8_t capacity, uint16_t groupId,
+ uint8_t sceneCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList);
+typedef void (*ScenesClusterRemoveAllScenesResponseCallback)(void * context, uint16_t groupId);
+typedef void (*ScenesClusterRemoveSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId);
+typedef void (*ScenesClusterStoreSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId);
+typedef void (*ScenesClusterViewSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
+ uint8_t * sceneName,
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets);
diff --git a/examples/chip-tool/gen/CHIPClustersObjc.h b/examples/chip-tool/gen/CHIPClustersObjc.h
new file mode 100644
index 0000000..e0a5978
--- /dev/null
+++ b/examples/chip-tool/gen/CHIPClustersObjc.h
@@ -0,0 +1,515 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#ifndef CHIP_CLUSTERS_H
+#define CHIP_CLUSTERS_H
+
+#import <Foundation/Foundation.h>
+
+typedef void (^ResponseHandler)(NSError * _Nullable error, NSDictionary * _Nullable values);
+
+@class CHIPDevice;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBarrierControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)barrierControlStop:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeBarrierMovingState:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeBarrierPosition:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBasic : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)mfgSpecificPing:(ResponseHandler)completionHandler;
+- (BOOL)resetToFactoryDefaults:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeZclVersion:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePowerSource:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBinding : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)bind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)unbind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPColorControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)moveColor:(int16_t)rateX
+ rateY:(int16_t)rateY
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveColorTemperature:(uint8_t)moveMode
+ rate:(uint16_t)rate
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveHue:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveSaturation:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToColor:(uint16_t)colorX
+ colorY:(uint16_t)colorY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToColorTemperature:(uint16_t)colorTemperature
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToHue:(uint8_t)hue
+ direction:(uint8_t)direction
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToHueAndSaturation:(uint8_t)hue
+ saturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToSaturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepColor:(int16_t)stepX
+ stepY:(int16_t)stepY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepColorTemperature:(uint8_t)stepMode
+ stepSize:(uint16_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepHue:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepSaturation:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stopMoveStep:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeCurrentHue:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentHue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentHue:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeCurrentSaturation:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentSaturation:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeRemainingTime:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCurrentX:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentX:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentX:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeCurrentY:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentY:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentY:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeDriftCompensation:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCompensationText:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorTemperature:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeColorTemperature:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeColorTemperature:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeColorMode:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorControlOptions:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary1X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary1Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary1Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary2X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary2Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary2Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary3X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary3Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary3Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary4X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary4Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary4Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary5X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary5Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary5Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary6X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary6Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary6Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeWhitePointX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeWhitePointY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointRX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointRY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointGX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointGY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointBX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointBY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorLoopActive:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorLoopDirection:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorLoopTime:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorCapabilities:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPDoorLock : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)clearAllPins:(ResponseHandler)completionHandler;
+- (BOOL)clearAllRfids:(ResponseHandler)completionHandler;
+- (BOOL)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)lockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setHolidaySchedule:(uint8_t)scheduleId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setPin:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ pin:(char *)pin
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setRfid:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ id:(char *)id
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setWeekdaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ daysMask:(uint8_t)daysMask
+ startHour:(uint8_t)startHour
+ startMinute:(uint8_t)startMinute
+ endHour:(uint8_t)endHour
+ endMinute:(uint8_t)endMinute
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setYeardaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)unlockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(char *)pin completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeLockState:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeLockState:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeLockState:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeLockType:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeActuatorEnabled:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPGroups : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)addGroup:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)addGroupIfIdentifying:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)removeAllGroups:(ResponseHandler)completionHandler;
+- (BOOL)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPIdentify : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)identifyQuery:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeIdentifyTime:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPLevelControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPOnOff : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)off:(ResponseHandler)completionHandler;
+- (BOOL)on:(ResponseHandler)completionHandler;
+- (BOOL)toggle:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPScenes : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)addScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ sceneName:(char *)sceneName
+ clusterId:(uint16_t)clusterId
+ length:(uint8_t)length
+ value:(uint8_t)value
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)recallScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeSceneCount:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCurrentScene:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCurrentGroup:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeSceneValid:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPTemperatureMeasurement : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+
+- (BOOL)readAttributeMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeMeasuredValue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(int16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeMeasuredValue:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeMinMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeMaxMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* CHIP_CLUSTERS_H */
diff --git a/examples/chip-tool/gen/CHIPClustersObjc.mm b/examples/chip-tool/gen/CHIPClustersObjc.mm
new file mode 100644
index 0000000..179c28b
--- /dev/null
+++ b/examples/chip-tool/gen/CHIPClustersObjc.mm
@@ -0,0 +1,5760 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#import <Foundation/Foundation.h>
+
+#import "CHIPDevice.h"
+#import "CHIPDevice_Internal.h"
+#import "gen/CHIPClientCallbacks.h"
+#import "gen/CHIPClustersObjc.h"
+
+#include <controller/CHIPClusters.h>
+
+using namespace ::chip;
+
+class CHIPDefaultSuccessCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPDefaultSuccessCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultSuccessCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDefaultSuccessCallbackBridge * callback = reinterpret_cast<CHIPDefaultSuccessCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDefaultFailureCallbackBridge : public Callback::Callback<DefaultFailureCallback> {
+public:
+ CHIPDefaultFailureCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultFailureCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultFailureCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t status)
+ {
+ CHIPDefaultFailureCallbackBridge * callback = reinterpret_cast<CHIPDefaultFailureCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL" code:status userInfo:@ { NSLocalizedDescriptionKey : @"" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPUnsupportedAttributeCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPUnsupportedAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ {
+ }
+
+ ~CHIPUnsupportedAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPUnsupportedAttributeCallbackBridge * callback = reinterpret_cast<CHIPUnsupportedAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL"
+ code:0
+ userInfo:@ { NSLocalizedDescriptionKey : @"Unsuported attribute type" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPBooleanAttributeCallbackBridge : public Callback::Callback<BooleanAttributeCallback> {
+public:
+ CHIPBooleanAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<BooleanAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPBooleanAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, bool value)
+ {
+ CHIPBooleanAttributeCallbackBridge * callback = reinterpret_cast<CHIPBooleanAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithBool:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8uAttributeCallbackBridge : public Callback::Callback<Int8uAttributeCallback> {
+public:
+ CHIPInt8uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t value)
+ {
+ CHIPInt8uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8sAttributeCallbackBridge : public Callback::Callback<Int8sAttributeCallback> {
+public:
+ CHIPInt8sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int8_t value)
+ {
+ CHIPInt8sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16uAttributeCallbackBridge : public Callback::Callback<Int16uAttributeCallback> {
+public:
+ CHIPInt16uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t value)
+ {
+ CHIPInt16uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16sAttributeCallbackBridge : public Callback::Callback<Int16sAttributeCallback> {
+public:
+ CHIPInt16sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int16_t value)
+ {
+ CHIPInt16sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPDoorLockClusterClearAllPinsResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearAllPinsResponseCallback> {
+public:
+ CHIPDoorLockClusterClearAllPinsResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearAllPinsResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearAllPinsResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearAllPinsResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearAllPinsResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback> {
+public:
+ CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearPinResponseCallbackBridge : public Callback::Callback<DoorLockClusterClearPinResponseCallback> {
+public:
+ CHIPDoorLockClusterClearPinResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearPinResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearPinResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearPinResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearPinResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearRfidResponseCallbackBridge : public Callback::Callback<DoorLockClusterClearRfidResponseCallback> {
+public:
+ CHIPDoorLockClusterClearRfidResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearRfidResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearRfidResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearRfidResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearRfidResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(
+ void * context, uint8_t scheduleId, uint32_t localStartTime, uint32_t localEndTime, uint8_t operatingModeDuringHoliday)
+ {
+ CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"scheduleId" : [NSNumber numberWithUnsignedChar:scheduleId],
+ @"localStartTime" : [NSNumber numberWithUnsignedLong:localStartTime],
+ @"localEndTime" : [NSNumber numberWithUnsignedLong:localEndTime],
+ @"operatingModeDuringHoliday" : [NSNumber numberWithUnsignedChar:operatingModeDuringHoliday],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetLogRecordResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterGetLogRecordResponseCallback> {
+public:
+ CHIPDoorLockClusterGetLogRecordResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetLogRecordResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetLogRecordResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t logEntryId, uint32_t timestamp, uint8_t eventType, uint8_t source,
+ uint8_t eventIdOrAlarmCode, uint16_t userId, uint8_t * pin)
+ {
+ CHIPDoorLockClusterGetLogRecordResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetLogRecordResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"logEntryId" : [NSNumber numberWithUnsignedShort:logEntryId],
+ @"timestamp" : [NSNumber numberWithUnsignedLong:timestamp],
+ @"eventType" : [NSNumber numberWithUnsignedChar:eventType],
+ @"source" : [NSNumber numberWithUnsignedChar:source],
+ @"eventIdOrAlarmCode" : [NSNumber numberWithUnsignedChar:eventIdOrAlarmCode],
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"pin" : [NSString stringWithFormat:@"%s", pin],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetPinResponseCallbackBridge : public Callback::Callback<DoorLockClusterGetPinResponseCallback> {
+public:
+ CHIPDoorLockClusterGetPinResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetPinResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetPinResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * pin)
+ {
+ CHIPDoorLockClusterGetPinResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetPinResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"userStatus" : [NSNumber numberWithUnsignedChar:userStatus],
+ @"userType" : [NSNumber numberWithUnsignedChar:userType],
+ @"pin" : [NSString stringWithFormat:@"%s", pin],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetRfidResponseCallbackBridge : public Callback::Callback<DoorLockClusterGetRfidResponseCallback> {
+public:
+ CHIPDoorLockClusterGetRfidResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetRfidResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetRfidResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid)
+ {
+ CHIPDoorLockClusterGetRfidResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetRfidResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"userStatus" : [NSNumber numberWithUnsignedChar:userStatus],
+ @"userType" : [NSNumber numberWithUnsignedChar:userType],
+ @"rfid" : [NSString stringWithFormat:@"%s", rfid],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetUserTypeResponseCallbackBridge : public Callback::Callback<DoorLockClusterGetUserTypeResponseCallback> {
+public:
+ CHIPDoorLockClusterGetUserTypeResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetUserTypeResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetUserTypeResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t userId, uint8_t userType)
+ {
+ CHIPDoorLockClusterGetUserTypeResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetUserTypeResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"userType" : [NSNumber numberWithUnsignedChar:userType],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t scheduleId, uint16_t userId, uint8_t daysMask, uint8_t startHour,
+ uint8_t startMinute, uint8_t endHour, uint8_t endMinute)
+ {
+ CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"scheduleId" : [NSNumber numberWithUnsignedChar:scheduleId],
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"daysMask" : [NSNumber numberWithUnsignedChar:daysMask],
+ @"startHour" : [NSNumber numberWithUnsignedChar:startHour],
+ @"startMinute" : [NSNumber numberWithUnsignedChar:startMinute],
+ @"endHour" : [NSNumber numberWithUnsignedChar:endHour],
+ @"endMinute" : [NSNumber numberWithUnsignedChar:endMinute],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t scheduleId, uint16_t userId, uint32_t localStartTime, uint32_t localEndTime)
+ {
+ CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"scheduleId" : [NSNumber numberWithUnsignedChar:scheduleId],
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"localStartTime" : [NSNumber numberWithUnsignedLong:localStartTime],
+ @"localEndTime" : [NSNumber numberWithUnsignedLong:localEndTime],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterLockDoorResponseCallbackBridge : public Callback::Callback<DoorLockClusterLockDoorResponseCallback> {
+public:
+ CHIPDoorLockClusterLockDoorResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterLockDoorResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterLockDoorResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterLockDoorResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterLockDoorResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetPinResponseCallbackBridge : public Callback::Callback<DoorLockClusterSetPinResponseCallback> {
+public:
+ CHIPDoorLockClusterSetPinResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetPinResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetPinResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetPinResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetPinResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetRfidResponseCallbackBridge : public Callback::Callback<DoorLockClusterSetRfidResponseCallback> {
+public:
+ CHIPDoorLockClusterSetRfidResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetRfidResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetRfidResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetRfidResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetRfidResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetUserTypeResponseCallbackBridge : public Callback::Callback<DoorLockClusterSetUserTypeResponseCallback> {
+public:
+ CHIPDoorLockClusterSetUserTypeResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetUserTypeResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetUserTypeResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetUserTypeResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetUserTypeResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterUnlockDoorResponseCallbackBridge : public Callback::Callback<DoorLockClusterUnlockDoorResponseCallback> {
+public:
+ CHIPDoorLockClusterUnlockDoorResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterUnlockDoorResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterUnlockDoorResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterUnlockDoorResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterUnlockDoorResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback> {
+public:
+ CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPGroupsClusterAddGroupResponseCallbackBridge : public Callback::Callback<GroupsClusterAddGroupResponseCallback> {
+public:
+ CHIPGroupsClusterAddGroupResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<GroupsClusterAddGroupResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPGroupsClusterAddGroupResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId)
+ {
+ CHIPGroupsClusterAddGroupResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPGroupsClusterAddGroupResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge
+ : public Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback> {
+public:
+ CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge() {};
+
+ static void CallbackFn(
+ void * context, uint8_t capacity, uint8_t groupCount, /* TYPE WARNING: array array defaults to */ uint8_t * groupList)
+ {
+ CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"capacity" : [NSNumber numberWithUnsignedChar:capacity],
+ @"groupCount" : [NSNumber numberWithUnsignedChar:groupCount],
+ // groupList: /* TYPE WARNING: array array defaults to */ uint8_t *
+ // Conversion from this type to Objc is not properly implemented yet
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPGroupsClusterRemoveGroupResponseCallbackBridge : public Callback::Callback<GroupsClusterRemoveGroupResponseCallback> {
+public:
+ CHIPGroupsClusterRemoveGroupResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<GroupsClusterRemoveGroupResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPGroupsClusterRemoveGroupResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId)
+ {
+ CHIPGroupsClusterRemoveGroupResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPGroupsClusterRemoveGroupResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPGroupsClusterViewGroupResponseCallbackBridge : public Callback::Callback<GroupsClusterViewGroupResponseCallback> {
+public:
+ CHIPGroupsClusterViewGroupResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<GroupsClusterViewGroupResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPGroupsClusterViewGroupResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t * groupName)
+ {
+ CHIPGroupsClusterViewGroupResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPGroupsClusterViewGroupResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"groupName" : [NSString stringWithFormat:@"%s", groupName],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge
+ : public Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback> {
+public:
+ CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t timeout)
+ {
+ CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"timeout" : [NSNumber numberWithUnsignedShort:timeout],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterAddSceneResponseCallbackBridge : public Callback::Callback<ScenesClusterAddSceneResponseCallback> {
+public:
+ CHIPScenesClusterAddSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterAddSceneResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterAddSceneResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId)
+ {
+ CHIPScenesClusterAddSceneResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterAddSceneResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterGetSceneMembershipResponseCallbackBridge
+ : public Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback> {
+public:
+ CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterGetSceneMembershipResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList)
+ {
+ CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterGetSceneMembershipResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"capacity" : [NSNumber numberWithUnsignedChar:capacity],
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneCount" : [NSNumber numberWithUnsignedChar:sceneCount],
+ // sceneList: /* TYPE WARNING: array array defaults to */ uint8_t *
+ // Conversion from this type to Objc is not properly implemented yet
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterRemoveAllScenesResponseCallbackBridge
+ : public Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback> {
+public:
+ CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterRemoveAllScenesResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId)
+ {
+ CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterRemoveAllScenesResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterRemoveSceneResponseCallbackBridge : public Callback::Callback<ScenesClusterRemoveSceneResponseCallback> {
+public:
+ CHIPScenesClusterRemoveSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterRemoveSceneResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterRemoveSceneResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId)
+ {
+ CHIPScenesClusterRemoveSceneResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterRemoveSceneResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterStoreSceneResponseCallbackBridge : public Callback::Callback<ScenesClusterStoreSceneResponseCallback> {
+public:
+ CHIPScenesClusterStoreSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterStoreSceneResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterStoreSceneResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId)
+ {
+ CHIPScenesClusterStoreSceneResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterStoreSceneResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterViewSceneResponseCallbackBridge : public Callback::Callback<ScenesClusterViewSceneResponseCallback> {
+public:
+ CHIPScenesClusterViewSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterViewSceneResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterViewSceneResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName,
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets)
+ {
+ CHIPScenesClusterViewSceneResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterViewSceneResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId],
+ @"transitionTime" : [NSNumber numberWithUnsignedShort:transitionTime],
+ @"sceneName" : [NSString stringWithFormat:@"%s", sceneName],
+ // extensionFieldSets: /* TYPE WARNING: array array defaults to */ uint8_t *
+ // Conversion from this type to Objc is not properly implemented yet
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+@interface CHIPBarrierControl ()
+
+@property (readonly) Controller::BarrierControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBarrierControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.BarrierControlGoToPercent(onSuccess->Cancel(), onFailure->Cancel(), percentOpen);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)barrierControlStop:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.BarrierControlStop(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierMovingState:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierMovingState(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierSafetyStatus(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierCapabilities(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierPosition:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierPosition(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPBasic ()
+
+@property (readonly) Controller::BasicCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBasic
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)mfgSpecificPing:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MfgSpecificPing(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)resetToFactoryDefaults:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ResetToFactoryDefaults(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeZclVersion:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeZclVersion(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePowerSource:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePowerSource(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPBinding ()
+
+@property (readonly) Controller::BindingCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBinding
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)bind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Bind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)unbind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Unbind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPColorControl ()
+
+@property (readonly) Controller::ColorControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPColorControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)moveColor:(int16_t)rateX
+ rateY:(int16_t)rateY
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveColor(onSuccess->Cancel(), onFailure->Cancel(), rateX, rateY, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveColorTemperature:(uint8_t)moveMode
+ rate:(uint16_t)rate
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate,
+ colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveHue:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveHue(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveSaturation:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveSaturation(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToColor:(uint16_t)colorX
+ colorY:(uint16_t)colorY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToColor(
+ onSuccess->Cancel(), onFailure->Cancel(), colorX, colorY, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToColorTemperature:(uint16_t)colorTemperature
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToColorTemperature(
+ onSuccess->Cancel(), onFailure->Cancel(), colorTemperature, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToHue:(uint8_t)hue
+ direction:(uint8_t)direction
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToHue(
+ onSuccess->Cancel(), onFailure->Cancel(), hue, direction, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToHueAndSaturation:(uint8_t)hue
+ saturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToHueAndSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), hue, saturation, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToSaturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), saturation, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepColor:(int16_t)stepX
+ stepY:(int16_t)stepY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepColor(
+ onSuccess->Cancel(), onFailure->Cancel(), stepX, stepY, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepColorTemperature:(uint8_t)stepMode
+ stepSize:(uint16_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize,
+ transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepHue:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepHue(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepSaturation:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stopMoveStep:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StopMoveStep(onSuccess->Cancel(), onFailure->Cancel(), optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentHue:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentHue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentHue:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentHue(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentSaturation:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentSaturation(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentSaturation:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentSaturation(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeRemainingTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeRemainingTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentX:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentX:(ResponseHandler)reportHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentX(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentY:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentY:(ResponseHandler)reportHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentY(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeDriftCompensation:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeDriftCompensation(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCompensationText:(ResponseHandler)completionHandler
+{
+ CHIPUnsupportedAttributeCallbackBridge * onSuccess
+ = new CHIPUnsupportedAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCompensationText(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorTemperature:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorTemperature(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeColorTemperature:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeColorTemperature(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeColorTemperature:(ResponseHandler)reportHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeColorTemperature(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeColorMode:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorMode(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorControlOptions:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPrimaries(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary1X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary1Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary1Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary2X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary2Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary2Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary3X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary3Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary3Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary4X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary4Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary4Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary5X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary5Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary5Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary6X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary6Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary6Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeWhitePointX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeWhitePointY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointRX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointRY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointGX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointGY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointBX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointBY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedCurrentHue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedColorMode(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorLoopActive:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopActive(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorLoopDirection:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopDirection(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorLoopTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorCapabilities:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorCapabilities(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMin(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMax(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPDoorLock ()
+
+@property (readonly) Controller::DoorLockCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPDoorLock
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)clearAllPins:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearAllPinsResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearAllPinsResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearAllPins(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearAllRfids:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearAllRfids(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearPinResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearPinResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearPin(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearRfidResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearRfidResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearRfid(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetLogRecordResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetLogRecordResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetLogRecord(onSuccess->Cancel(), onFailure->Cancel(), logIndex);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetPinResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetPinResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetPin(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetRfidResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetRfidResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetUserTypeResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetUserTypeResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)lockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterLockDoorResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterLockDoorResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.LockDoor(onSuccess->Cancel(), onFailure->Cancel(), pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setHolidaySchedule:(uint8_t)scheduleId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetHolidaySchedule(
+ onSuccess->Cancel(), onFailure->Cancel(), scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setPin:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ pin:(char *)pin
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetPinResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetPinResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetPin(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setRfid:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ id:(char *)id
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetRfidResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetRfidResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, id);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetUserTypeResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetUserTypeResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId, userType);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setWeekdaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ daysMask:(uint8_t)daysMask
+ startHour:(uint8_t)startHour
+ startMinute:(uint8_t)startMinute
+ endHour:(uint8_t)endHour
+ endMinute:(uint8_t)endMinute
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetWeekdaySchedule(
+ onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setYeardaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetYeardaySchedule(
+ onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, localStartTime, localEndTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)unlockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterUnlockDoorResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterUnlockDoorResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.UnlockDoor(onSuccess->Cancel(), onFailure->Cancel(), pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(char *)pin completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.UnlockWithTimeout(onSuccess->Cancel(), onFailure->Cancel(), timeoutInSeconds, pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeLockState:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeLockState(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeLockState:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeLockState(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeLockState:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeLockState(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeLockType:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeLockType(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeActuatorEnabled:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeActuatorEnabled(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPGroups ()
+
+@property (readonly) Controller::GroupsCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPGroups
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)addGroup:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterAddGroupResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterAddGroupResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.AddGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId, groupName);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)addGroupIfIdentifying:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.AddGroupIfIdentifying(onSuccess->Cancel(), onFailure->Cancel(), groupId, groupName);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetGroupMembership(onSuccess->Cancel(), onFailure->Cancel(), groupCount, groupList);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeAllGroups:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveAllGroups(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterRemoveGroupResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterRemoveGroupResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterViewGroupResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterViewGroupResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ViewGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPIdentify ()
+
+@property (readonly) Controller::IdentifyCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPIdentify
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Identify(onSuccess->Cancel(), onFailure->Cancel(), identifyTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)identifyQuery:(ResponseHandler)completionHandler
+{
+ CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge * onSuccess
+ = new CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.IdentifyQuery(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeIdentifyTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPLevelControl ()
+
+@property (readonly) Controller::LevelControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPLevelControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Move(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveToLevel(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Step(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Stop(onSuccess->Cancel(), onFailure->Cancel(), optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StopWithOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentLevel(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentLevel(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPOnOff ()
+
+@property (readonly) Controller::OnOffCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPOnOff
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)off:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)on:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)toggle:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onReport = new CHIPBooleanAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPScenes ()
+
+@property (readonly) Controller::ScenesCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPScenes
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)addScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ sceneName:(char *)sceneName
+ clusterId:(uint16_t)clusterId
+ length:(uint8_t)length
+ value:(uint8_t)value
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterAddSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterAddSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.AddScene(
+ onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime, sceneName, clusterId, length, value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetSceneMembership(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)recallScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RecallScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveAllScenes(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterRemoveSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterRemoveSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterStoreSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterStoreSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StoreScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterViewSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterViewSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ViewScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeSceneCount:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeSceneCount(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentScene:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentScene(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentGroup:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentGroup(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeSceneValid:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeSceneValid(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPTemperatureMeasurement ()
+
+@property (readonly) Controller::TemperatureMeasurementCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPTemperatureMeasurement
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)readAttributeMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeMeasuredValue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(int16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeMeasuredValue(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeMeasuredValue:(ResponseHandler)reportHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onReport = new CHIPInt16sAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeMeasuredValue(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeMinMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMinMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeMaxMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMaxMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
diff --git a/examples/chip-tool/gen/af-gen-event.h b/examples/chip-tool/gen/af-gen-event.h
new file mode 100644
index 0000000..9dbfd3a
--- /dev/null
+++ b/examples/chip-tool/gen/af-gen-event.h
@@ -0,0 +1,54 @@
+/**
+ *
+ * Copyright (c) 2020 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ *
+ * Copyright (c) 2020 Silicon Labs
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// This file is generated by Simplicity Studio. Please do not edit manually.
+//
+//
+
+// Enclosing macro to prevent multiple inclusion
+#ifndef __AF_GEN_EVENT__
+#define __AF_GEN_EVENT__
+
+// Code used to configure the cluster event mechanism
+#define EMBER_AF_GENERATED_EVENT_CODE
+// EmberEventData structs used to populate the EmberEventData table
+#define EMBER_AF_GENERATED_EVENTS
+#define EMBER_AF_GENERATED_EVENT_STRINGS
+
+// The length of the event context table used to track and retrieve cluster events
+#define EMBER_AF_EVENT_CONTEXT_LENGTH 4
+
+// EmberAfEventContext structs used to populate the EmberAfEventContext table
+#define EMBER_AF_GENERATED_EVENT_CONTEXT
+
+#endif // __AF_GEN_EVENT__
diff --git a/examples/chip-tool/gen/af-structs.h b/examples/chip-tool/gen/af-structs.h
new file mode 100644
index 0000000..c5cd195
--- /dev/null
+++ b/examples/chip-tool/gen/af-structs.h
@@ -0,0 +1,440 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+#include "basic-types.h"
+#include "enums.h"
+#include <stdint.h>
+
+// Struct for BlockThreshold
+typedef struct _BlockThreshold
+{
+ uint8_t blockThreshold;
+ uint8_t priceControl;
+ uint32_t blockPeriodStartTime;
+ uint32_t blockPeriodDurationMinutes;
+ uint8_t fuelType;
+ uint32_t standingCharge;
+} EmberAfBlockThreshold;
+
+// Struct for BlockThresholdSubPayload
+typedef struct _BlockThresholdSubPayload
+{
+ uint8_t tierNumberOfBlockThresholds;
+ uint8_t * blockThreshold;
+} EmberAfBlockThresholdSubPayload;
+
+// Struct for ChatParticipant
+typedef struct _ChatParticipant
+{
+ uint16_t uid;
+ uint8_t * nickname;
+} EmberAfChatParticipant;
+
+// Struct for ChatRoom
+typedef struct _ChatRoom
+{
+ uint16_t cid;
+ uint8_t * name;
+} EmberAfChatRoom;
+
+// Struct for ConfigureReportingRecord
+typedef struct _ConfigureReportingRecord
+{
+ uint8_t direction;
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint16_t minimumReportingInterval;
+ uint16_t maximumReportingInterval;
+ uint8_t * reportableChangeLocation;
+ uint16_t timeoutPeriod;
+} EmberAfConfigureReportingRecord;
+
+// Struct for ConfigureReportingStatusRecord
+typedef struct _ConfigureReportingStatusRecord
+{
+ uint8_t status;
+ uint8_t direction;
+ chip::AttributeId attributeId;
+} EmberAfConfigureReportingStatusRecord;
+
+// Struct for DebtPayload
+typedef struct _DebtPayload
+{
+ uint32_t collectionTime;
+ uint32_t amountCollected;
+ uint8_t debtType;
+ uint32_t outstandingDebt;
+} EmberAfDebtPayload;
+
+// Struct for DeviceInformationRecord
+typedef struct _DeviceInformationRecord
+{
+ uint64_t ieeeAddress;
+ chip::EndpointId endpointId;
+ uint16_t profileId;
+ uint16_t deviceId;
+ uint8_t version;
+ uint8_t groupIdCount;
+ uint8_t sort;
+} EmberAfDeviceInformationRecord;
+
+// Struct for DiscoverAttributesInfoRecord
+typedef struct _DiscoverAttributesInfoRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+} EmberAfDiscoverAttributesInfoRecord;
+
+// Struct for EndpointInformationRecord
+typedef struct _EndpointInformationRecord
+{
+ uint16_t networkAddress;
+ chip::EndpointId endpointId;
+ uint16_t profileId;
+ uint16_t deviceId;
+ uint8_t version;
+} EmberAfEndpointInformationRecord;
+
+// Void typedef for EmberAfEphemeralData which is empty.
+// this will result in all the references to the data being as uint8_t*
+typedef uint8_t EmberAfEphemeralData;
+
+// Struct for EventConfigurationPayload
+typedef struct _EventConfigurationPayload
+{
+ uint16_t eventId;
+ uint8_t eventConfiguration;
+} EmberAfEventConfigurationPayload;
+
+// Struct for EventLogPayload
+typedef struct _EventLogPayload
+{
+ uint8_t logId;
+ uint16_t eventId;
+ uint32_t eventTime;
+ uint8_t * eventData;
+} EmberAfEventLogPayload;
+
+// Struct for ExtendedDiscoverAttributesInfoRecord
+typedef struct _ExtendedDiscoverAttributesInfoRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint8_t attributeAccessControl;
+} EmberAfExtendedDiscoverAttributesInfoRecord;
+
+// Struct for GpPairingConfigurationGroupList
+typedef struct _GpPairingConfigurationGroupList
+{
+ uint16_t SinkGroup;
+ uint16_t Alias;
+} EmberAfGpPairingConfigurationGroupList;
+
+// Struct for GpTranslationTableUpdateTranslation
+typedef struct _GpTranslationTableUpdateTranslation
+{
+ uint8_t index;
+ uint8_t gpdCommandId;
+ chip::EndpointId endpoint;
+ uint16_t profile;
+ uint16_t cluster;
+ uint8_t zigbeeCommandId;
+ uint8_t * zigbeeCommandPayload;
+ uint8_t * additionalInfoBlock;
+} EmberAfGpTranslationTableUpdateTranslation;
+
+// Struct for GroupInformationRecord
+typedef struct _GroupInformationRecord
+{
+ chip::GroupId groupId;
+ uint8_t groupType;
+} EmberAfGroupInformationRecord;
+
+// Struct for IasAceZoneStatusResult
+typedef struct _IasAceZoneStatusResult
+{
+ uint8_t zoneId;
+ uint16_t zoneStatus;
+} EmberAfIasAceZoneStatusResult;
+
+// Void typedef for EmberAfIdentity which is empty.
+// this will result in all the references to the data being as uint8_t*
+typedef uint8_t EmberAfIdentity;
+
+// Struct for NeighborInfo
+typedef struct _NeighborInfo
+{
+ uint64_t neighbor;
+ int16_t x;
+ int16_t y;
+ int16_t z;
+ int8_t rssi;
+ uint8_t numberRssiMeasurements;
+} EmberAfNeighborInfo;
+
+// Struct for NodeInformation
+typedef struct _NodeInformation
+{
+ uint16_t uid;
+ uint16_t address;
+ chip::EndpointId endpoint;
+ uint8_t * nickname;
+} EmberAfNodeInformation;
+
+// Struct for Notification
+typedef struct _Notification
+{
+ uint16_t contentId;
+ uint8_t statusFeedback;
+} EmberAfNotification;
+
+// Struct for PowerProfileRecord
+typedef struct _PowerProfileRecord
+{
+ uint8_t powerProfileId;
+ uint8_t energyPhaseId;
+ uint8_t powerProfileRemoteControl;
+ uint8_t powerProfileState;
+} EmberAfPowerProfileRecord;
+
+// Struct for PriceMatrixSubPayload
+typedef struct _PriceMatrixSubPayload
+{
+ uint8_t tierBlockId;
+ uint32_t price;
+} EmberAfPriceMatrixSubPayload;
+
+// Struct for Protocol
+typedef struct _Protocol
+{
+ uint16_t manufacturerCode;
+ uint8_t protocolId;
+} EmberAfProtocol;
+
+// Struct for ReadAttributeStatusRecord
+typedef struct _ReadAttributeStatusRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t status;
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfReadAttributeStatusRecord;
+
+// Struct for ReadReportingConfigurationAttributeRecord
+typedef struct _ReadReportingConfigurationAttributeRecord
+{
+ uint8_t direction;
+ chip::AttributeId attributeId;
+} EmberAfReadReportingConfigurationAttributeRecord;
+
+// Struct for ReadReportingConfigurationRecord
+typedef struct _ReadReportingConfigurationRecord
+{
+ uint8_t status;
+ uint8_t direction;
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint16_t minimumReportingInterval;
+ uint16_t maximumReportingInterval;
+ uint8_t * reportableChangeLocation;
+ uint16_t timeoutPeriod;
+} EmberAfReadReportingConfigurationRecord;
+
+// Struct for ReadStructuredAttributeRecord
+typedef struct _ReadStructuredAttributeRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t indicator;
+ uint16_t indicies;
+} EmberAfReadStructuredAttributeRecord;
+
+// Struct for ReportAttributeRecord
+typedef struct _ReportAttributeRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfReportAttributeRecord;
+
+// Struct for SceneExtensionAttributeInfo
+typedef struct _SceneExtensionAttributeInfo
+{
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfSceneExtensionAttributeInfo;
+
+// Struct for SceneExtensionFieldSet
+typedef struct _SceneExtensionFieldSet
+{
+ chip::ClusterId clusterId;
+ uint8_t length;
+ uint8_t value;
+} EmberAfSceneExtensionFieldSet;
+
+// Struct for ScheduleEntry
+typedef struct _ScheduleEntry
+{
+ uint16_t startTime;
+ uint8_t activePriceTierOrFriendlyCreditEnable;
+} EmberAfScheduleEntry;
+
+// Struct for ScheduleEntryAuxilliaryLoadSwitchTimes
+typedef struct _ScheduleEntryAuxilliaryLoadSwitchTimes
+{
+ uint16_t startTime;
+ uint8_t auxiliaryLoadSwitchState;
+} EmberAfScheduleEntryAuxilliaryLoadSwitchTimes;
+
+// Struct for ScheduleEntryFriendlyCreditSwitchTimes
+typedef struct _ScheduleEntryFriendlyCreditSwitchTimes
+{
+ uint16_t startTime;
+ uint8_t friendlyCreditEnable;
+} EmberAfScheduleEntryFriendlyCreditSwitchTimes;
+
+// Struct for ScheduleEntryRateSwitchTimes
+typedef struct _ScheduleEntryRateSwitchTimes
+{
+ uint16_t startTime;
+ uint8_t priceTier;
+} EmberAfScheduleEntryRateSwitchTimes;
+
+// Struct for ScheduledPhase
+typedef struct _ScheduledPhase
+{
+ uint8_t energyPhaseId;
+ uint16_t scheduledTime;
+} EmberAfScheduledPhase;
+
+// Struct for SeasonEntry
+typedef struct _SeasonEntry
+{
+ uint32_t seasonStartDate;
+ uint8_t weekIdRef;
+} EmberAfSeasonEntry;
+
+// Void typedef for EmberAfSignature which is empty.
+// this will result in all the references to the data being as uint8_t*
+typedef uint8_t EmberAfSignature;
+
+// Void typedef for EmberAfSmac which is empty.
+// this will result in all the references to the data being as uint8_t*
+typedef uint8_t EmberAfSmac;
+
+// Struct for SnapshotResponsePayload
+typedef struct _SnapshotResponsePayload
+{
+ uint8_t snapshotScheduleId;
+ uint8_t snapshotScheduleConfirmation;
+} EmberAfSnapshotResponsePayload;
+
+// Struct for SnapshotSchedulePayload
+typedef struct _SnapshotSchedulePayload
+{
+ uint8_t snapshotScheduleId;
+ uint32_t snapshotStartTime;
+ uint32_t snapshotSchedule;
+ uint8_t snapshotPayloadType;
+ uint32_t snapshotCause;
+} EmberAfSnapshotSchedulePayload;
+
+// Struct for SpecialDay
+typedef struct _SpecialDay
+{
+ uint32_t specialDayDate;
+ uint8_t dayIdRef;
+} EmberAfSpecialDay;
+
+// Struct for TierLabelsPayload
+typedef struct _TierLabelsPayload
+{
+ uint8_t tierId;
+ uint8_t * tierLabel;
+} EmberAfTierLabelsPayload;
+
+// Struct for TopUpPayload
+typedef struct _TopUpPayload
+{
+ uint8_t * topUpCode;
+ int32_t topUpAmount;
+ uint32_t topUpTime;
+} EmberAfTopUpPayload;
+
+// Struct for TransferredPhase
+typedef struct _TransferredPhase
+{
+ uint8_t energyPhaseId;
+ uint8_t macroPhaseId;
+ uint16_t expectedDuration;
+ uint16_t peakPower;
+ uint16_t energy;
+ uint16_t maxActivationDelay;
+} EmberAfTransferredPhase;
+
+// Struct for WriteAttributeRecord
+typedef struct _WriteAttributeRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfWriteAttributeRecord;
+
+// Struct for WriteAttributeStatusRecord
+typedef struct _WriteAttributeStatusRecord
+{
+ uint8_t status;
+ chip::AttributeId attributeId;
+} EmberAfWriteAttributeStatusRecord;
+
+// Struct for WriteStructuredAttributeRecord
+typedef struct _WriteStructuredAttributeRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t indicator;
+ uint16_t indicies;
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfWriteStructuredAttributeRecord;
+
+// Struct for WriteStructuredAttributeStatusRecord
+typedef struct _WriteStructuredAttributeStatusRecord
+{
+ uint8_t status;
+ chip::AttributeId attributeId;
+ uint8_t indicator;
+ uint16_t indicies;
+} EmberAfWriteStructuredAttributeStatusRecord;
+
+// Struct for WwahBeaconSurvey
+typedef struct _WwahBeaconSurvey
+{
+ uint16_t deviceShort;
+ uint8_t rssi;
+ uint8_t classificationMask;
+} EmberAfWwahBeaconSurvey;
+
+// Struct for WwahClusterStatusToUseTC
+typedef struct _WwahClusterStatusToUseTC
+{
+ chip::ClusterId clusterId;
+ uint8_t status;
+} EmberAfWwahClusterStatusToUseTC;
diff --git a/examples/chip-tool/gen/att-storage.h b/examples/chip-tool/gen/att-storage.h
new file mode 100644
index 0000000..bd817b7
--- /dev/null
+++ b/examples/chip-tool/gen/att-storage.h
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Attribute masks modify how attributes are used by the framework
+//
+// Attribute that has this mask is NOT read-only
+#define ATTRIBUTE_MASK_WRITABLE (0x01)
+// Attribute that has this mask is saved to a token
+#define ATTRIBUTE_MASK_TOKENIZE (0x02)
+// Attribute that has this mask has a min/max values
+#define ATTRIBUTE_MASK_MIN_MAX (0x04)
+// Manufacturer specific attribute
+#define ATTRIBUTE_MASK_MANUFACTURER_SPECIFIC (0x08)
+// Attribute deferred to external storage
+#define ATTRIBUTE_MASK_EXTERNAL_STORAGE (0x10)
+// Attribute is singleton
+#define ATTRIBUTE_MASK_SINGLETON (0x20)
+// Attribute is a client attribute
+#define ATTRIBUTE_MASK_CLIENT (0x40)
+
+// Cluster masks modify how clusters are used by the framework
+//
+// Does this cluster have init function?
+#define CLUSTER_MASK_INIT_FUNCTION (0x01)
+// Does this cluster have attribute changed function?
+#define CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION (0x02)
+// Does this cluster have default response function?
+#define CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION (0x04)
+// Does this cluster have message sent function?
+#define CLUSTER_MASK_MESSAGE_SENT_FUNCTION (0x08)
+// Does this cluster have manufacturer specific attribute changed function?
+#define CLUSTER_MASK_MANUFACTURER_SPECIFIC_ATTRIBUTE_CHANGED_FUNCTION (0x10)
+// Does this cluster have pre-attribute changed function?
+#define CLUSTER_MASK_PRE_ATTRIBUTE_CHANGED_FUNCTION (0x20)
+// Cluster is a server
+#define CLUSTER_MASK_SERVER (0x40)
+// Cluster is a client
+#define CLUSTER_MASK_CLIENT (0x80)
+
+// Command masks modify meanings of commands
+//
+// Is sending of this client command supported
+#define COMMAND_MASK_OUTGOING_CLIENT (0x01)
+// Is sending of this server command supported
+#define COMMAND_MASK_OUTGOING_SERVER (0x02)
+// Is receiving of this client command supported
+#define COMMAND_MASK_INCOMING_CLIENT (0x04)
+// Is receiving of this server command supported
+#define COMMAND_MASK_INCOMING_SERVER (0x08)
+// Is this command manufacturer specific?
+#define COMMAND_MASK_MANUFACTURER_SPECIFIC (0x10)
diff --git a/examples/chip-tool/gen/attribute-id.h b/examples/chip-tool/gen/attribute-id.h
new file mode 100644
index 0000000..0fd456c
--- /dev/null
+++ b/examples/chip-tool/gen/attribute-id.h
@@ -0,0 +1,4121 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Global cluster attribute ids
+#define ZCL_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD)
+#define ZCL_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD)
+#define ZCL_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE)
+#define ZCL_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE)
+
+// Attribute ids for cluster: Basic
+
+// Client attributes
+
+// Server attributes
+#define ZCL_VERSION_ATTRIBUTE_ID (0x0000)
+#define ZCL_APPLICATION_VERSION_ATTRIBUTE_ID (0x0001)
+#define ZCL_STACK_VERSION_ATTRIBUTE_ID (0x0002)
+#define ZCL_HW_VERSION_ATTRIBUTE_ID (0x0003)
+#define ZCL_MANUFACTURER_NAME_ATTRIBUTE_ID (0x0004)
+#define ZCL_MODEL_IDENTIFIER_ATTRIBUTE_ID (0x0005)
+#define ZCL_DATE_CODE_ATTRIBUTE_ID (0x0006)
+#define ZCL_POWER_SOURCE_ATTRIBUTE_ID (0x0007)
+#define ZCL_GENERIC_DEVICE_CLASS_ATTRIBUTE_ID (0x0008)
+#define ZCL_GENERIC_DEVICE_TYPE_ATTRIBUTE_ID (0x0009)
+#define ZCL_PRODUCT_CODE_ATTRIBUTE_ID (0x000A)
+#define ZCL_PRODUCT_URL_ATTRIBUTE_ID (0x000B)
+#define ZCL_LOCATION_DESCRIPTION_ATTRIBUTE_ID (0x0010)
+#define ZCL_PHYSICAL_ENVIRONMENT_ATTRIBUTE_ID (0x0011)
+#define ZCL_DEVICE_ENABLED_ATTRIBUTE_ID (0x0012)
+#define ZCL_ALARM_MASK_ATTRIBUTE_ID (0x0013)
+#define ZCL_DISABLE_LOCAL_CONFIG_ATTRIBUTE_ID (0x0014)
+#define ZCL_SW_BUILD_ID_ATTRIBUTE_ID (0x4000)
+
+// Attribute ids for cluster: Power Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MAINS_VOLTAGE_ATTRIBUTE_ID (0x0000)
+#define ZCL_MAINS_FREQUENCY_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAINS_ALARM_MASK_ATTRIBUTE_ID (0x0010)
+#define ZCL_MAINS_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x0011)
+#define ZCL_MAINS_VOLTAGE_MAX_THRESHOLD_ATTRIBUTE_ID (0x0012)
+#define ZCL_MAINS_VOLTAGE_DWELL_TRIP_POINT_ATTRIBUTE_ID (0x0013)
+#define ZCL_BATTERY_VOLTAGE_ATTRIBUTE_ID (0x0020)
+#define ZCL_BATTERY_PERCENTAGE_REMAINING_ATTRIBUTE_ID (0x0021)
+#define ZCL_BATTERY_MANUFACTURER_ATTRIBUTE_ID (0x0030)
+#define ZCL_BATTERY_SIZE_ATTRIBUTE_ID (0x0031)
+#define ZCL_BATTERY_AHR_RATING_ATTRIBUTE_ID (0x0032)
+#define ZCL_BATTERY_QUANTITY_ATTRIBUTE_ID (0x0033)
+#define ZCL_BATTERY_RATED_VOLTAGE_ATTRIBUTE_ID (0x0034)
+#define ZCL_BATTERY_ALARM_MASK_ATTRIBUTE_ID (0x0035)
+#define ZCL_BATTERY_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x0036)
+#define ZCL_BATTERY_VOLTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x0037)
+#define ZCL_BATTERY_VOLTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x0038)
+#define ZCL_BATTERY_VOLTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x0039)
+#define ZCL_BATTERY_PERCENTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x003A)
+#define ZCL_BATTERY_PERCENTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x003B)
+#define ZCL_BATTERY_PERCENTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x003C)
+#define ZCL_BATTERY_PERCENTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x003D)
+#define ZCL_BATTERY_ALARM_STATE_ATTRIBUTE_ID (0x003E)
+#define ZCL_BATTERY_2_VOLTAGE_ATTRIBUTE_ID (0x0040)
+#define ZCL_BATTERY_2_PERCENTAGE_REMAINING_ATTRIBUTE_ID (0x0041)
+#define ZCL_BATTERY_2_MANUFACTURER_ATTRIBUTE_ID (0x0050)
+#define ZCL_BATTERY_2_SIZE_ATTRIBUTE_ID (0x0051)
+#define ZCL_BATTERY_2_AHR_RATING_ATTRIBUTE_ID (0x0052)
+#define ZCL_BATTERY_2_QUANTITY_ATTRIBUTE_ID (0x0053)
+#define ZCL_BATTERY_2_RATED_VOLTAGE_ATTRIBUTE_ID (0x0054)
+#define ZCL_BATTERY_2_ALARM_MASK_ATTRIBUTE_ID (0x0055)
+#define ZCL_BATTERY_2_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x0056)
+#define ZCL_BATTERY_2_VOLTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x0057)
+#define ZCL_BATTERY_2_VOLTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x0058)
+#define ZCL_BATTERY_2_VOLTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x0059)
+#define ZCL_BATTERY_2_PERCENTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x005A)
+#define ZCL_BATTERY_2_PERCENTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x005B)
+#define ZCL_BATTERY_2_PERCENTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x005C)
+#define ZCL_BATTERY_2_PERCENTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x005D)
+#define ZCL_BATTERY_2_ALARM_STATE_ATTRIBUTE_ID (0x005E)
+#define ZCL_BATTERY_3_VOLTAGE_ATTRIBUTE_ID (0x0060)
+#define ZCL_BATTERY_3_PERCENTAGE_REMAINING_ATTRIBUTE_ID (0x0061)
+#define ZCL_BATTERY_3_MANUFACTURER_ATTRIBUTE_ID (0x0070)
+#define ZCL_BATTERY_3_SIZE_ATTRIBUTE_ID (0x0071)
+#define ZCL_BATTERY_3_AHR_RATING_ATTRIBUTE_ID (0x0072)
+#define ZCL_BATTERY_3_QUANTITY_ATTRIBUTE_ID (0x0073)
+#define ZCL_BATTERY_3_RATED_VOLTAGE_ATTRIBUTE_ID (0x0074)
+#define ZCL_BATTERY_3_ALARM_MASK_ATTRIBUTE_ID (0x0075)
+#define ZCL_BATTERY_3_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x0076)
+#define ZCL_BATTERY_3_VOLTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x0077)
+#define ZCL_BATTERY_3_VOLTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x0078)
+#define ZCL_BATTERY_3_VOLTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x0079)
+#define ZCL_BATTERY_3_PERCENTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x007A)
+#define ZCL_BATTERY_3_PERCENTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x007B)
+#define ZCL_BATTERY_3_PERCENTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x007C)
+#define ZCL_BATTERY_3_PERCENTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x007D)
+#define ZCL_BATTERY_3_ALARM_STATE_ATTRIBUTE_ID (0x007E)
+
+// Attribute ids for cluster: Device Temperature Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CURRENT_TEMPERATURE_ATTRIBUTE_ID (0x0000)
+#define ZCL_MIN_TEMP_EXPERIENCED_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAX_TEMP_EXPERIENCED_ATTRIBUTE_ID (0x0002)
+#define ZCL_OVER_TEMP_TOTAL_DWELL_ATTRIBUTE_ID (0x0003)
+#define ZCL_DEVICE_TEMP_ALARM_MASK_ATTRIBUTE_ID (0x0010)
+#define ZCL_LOW_TEMP_THRESHOLD_ATTRIBUTE_ID (0x0011)
+#define ZCL_HIGH_TEMP_THRESHOLD_ATTRIBUTE_ID (0x0012)
+#define ZCL_LOW_TEMP_DWELL_TRIP_POINT_ATTRIBUTE_ID (0x0013)
+#define ZCL_HIGH_TEMP_DWELL_TRIP_POINT_ATTRIBUTE_ID (0x0014)
+
+// Attribute ids for cluster: Identify
+
+// Client attributes
+
+// Server attributes
+#define ZCL_IDENTIFY_TIME_ATTRIBUTE_ID (0x0000)
+#define ZCL_COMMISSION_STATE_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Groups
+
+// Client attributes
+
+// Server attributes
+#define ZCL_GROUP_NAME_SUPPORT_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Scenes
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SCENE_COUNT_ATTRIBUTE_ID (0x0000)
+#define ZCL_CURRENT_SCENE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CURRENT_GROUP_ATTRIBUTE_ID (0x0002)
+#define ZCL_SCENE_VALID_ATTRIBUTE_ID (0x0003)
+#define ZCL_SCENE_NAME_SUPPORT_ATTRIBUTE_ID (0x0004)
+#define ZCL_LAST_CONFIGURED_BY_ATTRIBUTE_ID (0x0005)
+
+// Attribute ids for cluster: On/off
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ON_OFF_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_2_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_3_ATTRIBUTE_ID (0x0001)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_4_ATTRIBUTE_ID (0x0001)
+#define ZCL_GLOBAL_SCENE_CONTROL_ATTRIBUTE_ID (0x4000)
+#define ZCL_ON_TIME_ATTRIBUTE_ID (0x4001)
+#define ZCL_OFF_WAIT_TIME_ATTRIBUTE_ID (0x4002)
+#define ZCL_START_UP_ON_OFF_ATTRIBUTE_ID (0x4003)
+
+// Attribute ids for cluster: On/off Switch Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SWITCH_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SWITCH_ACTIONS_ATTRIBUTE_ID (0x0010)
+
+// Attribute ids for cluster: Level Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CURRENT_LEVEL_ATTRIBUTE_ID (0x0000)
+#define ZCL_LEVEL_CONTROL_REMAINING_TIME_ATTRIBUTE_ID (0x0001)
+#define ZCL_OPTIONS_ATTRIBUTE_ID (0x000F)
+#define ZCL_ON_OFF_TRANSITION_TIME_ATTRIBUTE_ID (0x0010)
+#define ZCL_ON_LEVEL_ATTRIBUTE_ID (0x0011)
+#define ZCL_ON_TRANSITION_TIME_ATTRIBUTE_ID (0x0012)
+#define ZCL_OFF_TRANSITION_TIME_ATTRIBUTE_ID (0x0013)
+#define ZCL_DEFAULT_MOVE_RATE_ATTRIBUTE_ID (0x0014)
+#define ZCL_START_UP_CURRENT_LEVEL_ATTRIBUTE_ID (0x4000)
+
+// Attribute ids for cluster: Alarms
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ALARM_COUNT_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Time
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TIME_ATTRIBUTE_ID (0x0000)
+#define ZCL_TIME_STATUS_ATTRIBUTE_ID (0x0001)
+#define ZCL_TIME_ZONE_ATTRIBUTE_ID (0x0002)
+#define ZCL_DST_START_ATTRIBUTE_ID (0x0003)
+#define ZCL_DST_END_ATTRIBUTE_ID (0x0004)
+#define ZCL_DST_SHIFT_ATTRIBUTE_ID (0x0005)
+#define ZCL_STANDARD_TIME_ATTRIBUTE_ID (0x0006)
+#define ZCL_LOCAL_TIME_ATTRIBUTE_ID (0x0007)
+#define ZCL_LAST_SET_TIME_ATTRIBUTE_ID (0x0008)
+#define ZCL_VALID_UNTIL_TIME_ATTRIBUTE_ID (0x0009)
+
+// Attribute ids for cluster: RSSI Location
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOCATION_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LOCATION_METHOD_ATTRIBUTE_ID (0x0001)
+#define ZCL_LOCATION_AGE_ATTRIBUTE_ID (0x0002)
+#define ZCL_QUALITY_MEASURE_ATTRIBUTE_ID (0x0003)
+#define ZCL_NUMBER_OF_DEVICES_ATTRIBUTE_ID (0x0004)
+#define ZCL_COORDINATE1_ATTRIBUTE_ID (0x0010)
+#define ZCL_COORDINATE2_ATTRIBUTE_ID (0x0011)
+#define ZCL_COORDINATE3_ATTRIBUTE_ID (0x0012)
+#define ZCL_POWER_ATTRIBUTE_ID (0x0013)
+#define ZCL_PATH_LOSS_EXPONENT_ATTRIBUTE_ID (0x0014)
+#define ZCL_REPORTING_PERIOD_ATTRIBUTE_ID (0x0015)
+#define ZCL_CALCULATION_PERIOD_ATTRIBUTE_ID (0x0016)
+#define ZCL_NUMBER_RSSI_MEASUREMENTS_ATTRIBUTE_ID (0x0017)
+
+// Attribute ids for cluster: Binary Input (Basic)
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ACTIVE_TEXT_ATTRIBUTE_ID (0x0004)
+#define ZCL_DESCRIPTION_ATTRIBUTE_ID (0x001C)
+#define ZCL_INACTIVE_TEXT_ATTRIBUTE_ID (0x002E)
+#define ZCL_OUT_OF_SERVICE_ATTRIBUTE_ID (0x0051)
+#define ZCL_POLARITY_ATTRIBUTE_ID (0x0054)
+#define ZCL_PRESENT_VALUE_ATTRIBUTE_ID (0x0055)
+#define ZCL_RELIABILITY_ATTRIBUTE_ID (0x0067)
+#define ZCL_STATUS_FLAGS_ATTRIBUTE_ID (0x006F)
+#define ZCL_APPLICATION_TYPE_ATTRIBUTE_ID (0x0100)
+
+// Attribute ids for cluster: Commissioning
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SHORT_ADDRESS_ATTRIBUTE_ID (0x0000)
+#define ZCL_EXTENDED_PAN_ID_ATTRIBUTE_ID (0x0001)
+#define ZCL_PAN_ID_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHANNEL_MASK_ATTRIBUTE_ID (0x0003)
+#define ZCL_PROTOCOL_VERSION_ATTRIBUTE_ID (0x0004)
+#define ZCL_STACK_PROFILE_ATTRIBUTE_ID (0x0005)
+#define ZCL_STARTUP_CONTROL_ATTRIBUTE_ID (0x0006)
+#define ZCL_TRUST_CENTER_ADDRESS_ATTRIBUTE_ID (0x0010)
+#define ZCL_TRUST_CENTER_MASTER_KEY_ATTRIBUTE_ID (0x0011)
+#define ZCL_NETWORK_KEY_ATTRIBUTE_ID (0x0012)
+#define ZCL_USE_INSECURE_JOIN_ATTRIBUTE_ID (0x0013)
+#define ZCL_PRECONFIGURED_LINK_KEY_ATTRIBUTE_ID (0x0014)
+#define ZCL_NETWORK_KEY_SEQUENCE_NUMBER_ATTRIBUTE_ID (0x0015)
+#define ZCL_NETWORK_KEY_TYPE_ATTRIBUTE_ID (0x0016)
+#define ZCL_NETWORK_MANAGER_ADDRESS_ATTRIBUTE_ID (0x0017)
+#define ZCL_SCAN_ATTEMPTS_ATTRIBUTE_ID (0x0020)
+#define ZCL_TIME_BETWEEN_SCANS_ATTRIBUTE_ID (0x0021)
+#define ZCL_REJOIN_INTERVAL_ATTRIBUTE_ID (0x0022)
+#define ZCL_MAX_REJOIN_INTERVAL_ATTRIBUTE_ID (0x0023)
+#define ZCL_INDIRECT_POLL_RATE_ATTRIBUTE_ID (0x0030)
+#define ZCL_PARENT_RETRY_THRESHOLD_ATTRIBUTE_ID (0x0031)
+#define ZCL_CONCENTRATOR_FLAG_ATTRIBUTE_ID (0x0040)
+#define ZCL_CONCENTRATOR_RADIUS_ATTRIBUTE_ID (0x0041)
+#define ZCL_CONCENTRATOR_DISCOVERY_TIME_ATTRIBUTE_ID (0x0042)
+
+// Attribute ids for cluster: Partition
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PARTITION_MAXIMUM_INCOMING_TRANSFER_SIZE_ATTRIBUTE_ID (0x0000)
+#define ZCL_PARTITION_MAXIMUM_OUTGOING_TRANSFER_SIZE_ATTRIBUTE_ID (0x0001)
+#define ZCL_PARTIONED_FRAME_SIZE_ATTRIBUTE_ID (0x0002)
+#define ZCL_LARGE_FRAME_SIZE_ATTRIBUTE_ID (0x0003)
+#define ZCL_NUMBER_OF_ACK_FRAME_ATTRIBUTE_ID (0x0004)
+#define ZCL_NACK_TIMEOUT_ATTRIBUTE_ID (0x0005)
+#define ZCL_INTERFRAME_DELAY_ATTRIBUTE_ID (0x0006)
+#define ZCL_NUMBER_OF_SEND_RETRIES_ATTRIBUTE_ID (0x0007)
+#define ZCL_SENDER_TIMEOUT_ATTRIBUTE_ID (0x0008)
+#define ZCL_RECEIVER_TIMEOUT_ATTRIBUTE_ID (0x0009)
+
+// Attribute ids for cluster: Over the Air Bootloading
+
+// Client attributes
+#define ZCL_UPGRADE_SERVER_ID_ATTRIBUTE_ID (0x0000)
+#define ZCL_FILE_OFFSET_ATTRIBUTE_ID (0x0001)
+#define ZCL_CURRENT_FILE_VERSION_ATTRIBUTE_ID (0x0002)
+#define ZCL_CURRENT_ZIGBEE_STACK_VERSION_ATTRIBUTE_ID (0x0003)
+#define ZCL_DOWNLOADED_FILE_VERSION_ATTRIBUTE_ID (0x0004)
+#define ZCL_DOWNLOADED_ZIGBEE_STACK_VERSION_ATTRIBUTE_ID (0x0005)
+#define ZCL_IMAGE_UPGRADE_STATUS_ATTRIBUTE_ID (0x0006)
+#define ZCL_MANUFACTURER_ID_ATTRIBUTE_ID (0x0007)
+#define ZCL_IMAGE_TYPE_ID_ATTRIBUTE_ID (0x0008)
+#define ZCL_MINIMUM_BLOCK_REQUEST_PERIOD_ATTRIBUTE_ID (0x0009)
+#define ZCL_IMAGE_STAMP_ATTRIBUTE_ID (0x000A)
+#define ZCL_UPGRADE_ACTIVATION_POLICY_ATTRIBUTE_ID (0x000B)
+#define ZCL_UPGRADE_TIMEOUT_POLICY_ATTRIBUTE_ID (0x000C)
+
+// Server attributes
+
+// Attribute ids for cluster: Power Profile
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TOTAL_PROFILE_NUM_ATTRIBUTE_ID (0x0000)
+#define ZCL_MULTIPLE_SCHEDULING_ATTRIBUTE_ID (0x0001)
+#define ZCL_ENERGY_FORMATTING_ATTRIBUTE_ID (0x0002)
+#define ZCL_ENERGY_REMOTE_ATTRIBUTE_ID (0x0003)
+#define ZCL_SCHEDULE_MODE_ATTRIBUTE_ID (0x0004)
+
+// Attribute ids for cluster: Appliance Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_START_TIME_ATTRIBUTE_ID (0x0000)
+#define ZCL_FINISH_TIME_ATTRIBUTE_ID (0x0001)
+#define ZCL_REMAINING_TIME_ATTRIBUTE_ID (0x0002)
+
+// Attribute ids for cluster: Poll Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHECK_IN_INTERVAL_ATTRIBUTE_ID (0x0000)
+#define ZCL_LONG_POLL_INTERVAL_ATTRIBUTE_ID (0x0001)
+#define ZCL_SHORT_POLL_INTERVAL_ATTRIBUTE_ID (0x0002)
+#define ZCL_FAST_POLL_TIMEOUT_ATTRIBUTE_ID (0x0003)
+#define ZCL_CHECK_IN_INTERVAL_MIN_ATTRIBUTE_ID (0x0004)
+#define ZCL_LONG_POLL_INTERVAL_MIN_ATTRIBUTE_ID (0x0005)
+#define ZCL_FAST_POLL_TIMEOUT_MAX_ATTRIBUTE_ID (0x0006)
+
+// Attribute ids for cluster: Green Power
+
+// Client attributes
+#define ZCL_GP_CLIENT_GPP_MAX_PROXY_TABLE_ENTRIES_ATTRIBUTE_ID (0x0010)
+#define ZCL_GP_CLIENT_PROXY_TABLE_ATTRIBUTE_ID (0x0011)
+#define ZCL_GP_CLIENT_GPP_NOTIFICATION_RETRY_NUMBER_ATTRIBUTE_ID (0x0012)
+#define ZCL_GP_CLIENT_GPP_NOTIFICATION_RETRY_TIMER_ATTRIBUTE_ID (0x0013)
+#define ZCL_GP_CLIENT_GPP_MAX_SEARCH_COUNTER_ATTRIBUTE_ID (0x0014)
+#define ZCL_GP_CLIENT_GPP_BLOCKED_GPD_ID_ATTRIBUTE_ID (0x0015)
+#define ZCL_GP_CLIENT_GPP_FUNCTIONALITY_ATTRIBUTE_ID (0x0016)
+#define ZCL_GP_CLIENT_GPP_ACTIVE_FUNCTIONALITY_ATTRIBUTE_ID (0x0017)
+#define ZCL_GP_CLIENT_GP_SHARED_SECURITY_KEY_TYPE_ATTRIBUTE_ID (0x0020)
+#define ZCL_GP_CLIENT_GP_SHARED_SECURITY_KEY_ATTRIBUTE_ID (0x0021)
+#define ZCL_GP_CLIENT_GP_LINK_KEY_ATTRIBUTE_ID (0x0022)
+
+// Server attributes
+#define ZCL_GP_SERVER_GPS_MAX_SINK_TABLE_ENTRIES_ATTRIBUTE_ID (0x0000)
+#define ZCL_GP_SERVER_SINK_TABLE_ATTRIBUTE_ID (0x0001)
+#define ZCL_GP_SERVER_GPS_COMMUNICATION_MODE_ATTRIBUTE_ID (0x0002)
+#define ZCL_GP_SERVER_GPS_COMMISSIONING_EXIT_MODE_ATTRIBUTE_ID (0x0003)
+#define ZCL_GP_SERVER_GPS_COMMISSIONING_WINDOW_ATTRIBUTE_ID (0x0004)
+#define ZCL_GP_SERVER_GPS_SECURITY_LEVEL_ATTRIBUTE_ID (0x0005)
+#define ZCL_GP_SERVER_GPS_FUNCTIONALITY_ATTRIBUTE_ID (0x0006)
+#define ZCL_GP_SERVER_GPS_ACTIVE_FUNCTIONALITY_ATTRIBUTE_ID (0x0007)
+#define ZCL_GP_SERVER_GP_SHARED_SECURITY_KEY_TYPE_ATTRIBUTE_ID (0x0020)
+#define ZCL_GP_SERVER_GP_SHARED_SECURITY_KEY_ATTRIBUTE_ID (0x0021)
+#define ZCL_GP_SERVER_GP_LINK_KEY_ATTRIBUTE_ID (0x0022)
+
+// Attribute ids for cluster: Keep-Alive
+
+// Client attributes
+
+// Server attributes
+#define ZCL_KEEPALIVE_BASE_ATTRIBUTE_ID (0x0000)
+#define ZCL_KEEPALIVE_JITTER_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Shade Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SHADE_CONFIG_PHYSICAL_CLOSED_LIMIT_ATTRIBUTE_ID (0x0000)
+#define ZCL_SHADE_CONFIG_MOTOR_STEP_SIZE_ATTRIBUTE_ID (0x0001)
+#define ZCL_SHADE_CONFIG_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_SHADE_CONFIG_CLOSED_LIMIT_ATTRIBUTE_ID (0x0010)
+#define ZCL_SHADE_CONFIG_MODE_ATTRIBUTE_ID (0x0011)
+
+// Attribute ids for cluster: Door Lock
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOCK_STATE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LOCK_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ACTUATOR_ENABLED_ATTRIBUTE_ID (0x0002)
+#define ZCL_DOOR_STATE_ATTRIBUTE_ID (0x0003)
+#define ZCL_DOOR_OPEN_EVENTS_ATTRIBUTE_ID (0x0004)
+#define ZCL_DOOR_CLOSED_EVENTS_ATTRIBUTE_ID (0x0005)
+#define ZCL_OPEN_PERIOD_ATTRIBUTE_ID (0x0006)
+#define ZCL_NUM_LOCK_RECORDS_SUPPORTED_ATTRIBUTE_ID (0x0010)
+#define ZCL_NUM_TOTAL_USERS_SUPPORTED_ATTRIBUTE_ID (0x0011)
+#define ZCL_NUM_PIN_USERS_SUPPORTED_ATTRIBUTE_ID (0x0012)
+#define ZCL_NUM_RFID_USERS_SUPPORTED_ATTRIBUTE_ID (0x0013)
+#define ZCL_NUM_WEEKDAY_SCHEDULES_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x0014)
+#define ZCL_NUM_YEARDAY_SCHEDULES_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x0015)
+#define ZCL_NUM_HOLIDAY_SCHEDULES_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x0016)
+#define ZCL_MAX_PIN_LENGTH_ATTRIBUTE_ID (0x0017)
+#define ZCL_MIN_PIN_LENGTH_ATTRIBUTE_ID (0x0018)
+#define ZCL_MAX_RFID_CODE_LENGTH_ATTRIBUTE_ID (0x0019)
+#define ZCL_MIN_RFID_CODE_LENGTH_ATTRIBUTE_ID (0x001A)
+#define ZCL_ENABLE_LOGGING_ATTRIBUTE_ID (0x0020)
+#define ZCL_LANGUAGE_ATTRIBUTE_ID (0x0021)
+#define ZCL_LED_SETTINGS_ATTRIBUTE_ID (0x0022)
+#define ZCL_AUTO_RELOCK_TIME_ATTRIBUTE_ID (0x0023)
+#define ZCL_SOUND_VOLUME_ATTRIBUTE_ID (0x0024)
+#define ZCL_OPERATING_MODE_ATTRIBUTE_ID (0x0025)
+#define ZCL_SUPPORTED_OPERATING_MODES_ATTRIBUTE_ID (0x0026)
+#define ZCL_DEFAULT_CONFIGURATION_REGISTER_ATTRIBUTE_ID (0x0027)
+#define ZCL_ENABLE_LOCAL_PROGRAMMING_ATTRIBUTE_ID (0x0028)
+#define ZCL_ENABLE_ONE_TOUCH_LOCKING_ATTRIBUTE_ID (0x0029)
+#define ZCL_ENABLE_INSIDE_STATUS_LED_ATTRIBUTE_ID (0x002A)
+#define ZCL_ENABLE_PRIVACY_MODE_BUTTON_ATTRIBUTE_ID (0x002B)
+#define ZCL_WRONG_CODE_ENTRY_LIMIT_ATTRIBUTE_ID (0x0030)
+#define ZCL_USER_CODE_TEMPORARY_DISABLE_TIME_ATTRIBUTE_ID (0x0031)
+#define ZCL_SEND_PIN_OVER_THE_AIR_ATTRIBUTE_ID (0x0032)
+#define ZCL_REQUIRE_PIN_FOR_RF_OPERATION_ATTRIBUTE_ID (0x0033)
+#define ZCL_ZIGBEE_SECURITY_LEVEL_ATTRIBUTE_ID (0x0034)
+#define ZCL_DOOR_LOCK_ALARM_MASK_ATTRIBUTE_ID (0x0040)
+#define ZCL_KEYPAD_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x0041)
+#define ZCL_RF_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x0042)
+#define ZCL_MANUAL_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x0043)
+#define ZCL_RFID_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x0044)
+#define ZCL_KEYPAD_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x0045)
+#define ZCL_RF_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x0046)
+#define ZCL_RFID_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x0047)
+
+// Attribute ids for cluster: Window Covering
+
+// Client attributes
+
+// Server attributes
+#define ZCL_COVERING_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LIMIT_LIFT_ATTRIBUTE_ID (0x0001)
+#define ZCL_LIMIT_TILT_ATTRIBUTE_ID (0x0002)
+#define ZCL_CURRENT_LIFT_ATTRIBUTE_ID (0x0003)
+#define ZCL_CURRENT_TILT_ATTRIBUTE_ID (0x0004)
+#define ZCL_NUMBER_LIFT_ATTRIBUTE_ID (0x0005)
+#define ZCL_NUMBER_TILT_ATTRIBUTE_ID (0x0006)
+#define ZCL_CONFIG_STATUS_ATTRIBUTE_ID (0x0007)
+#define ZCL_CURRENT_LIFT_PERCENTAGE_ATTRIBUTE_ID (0x0008)
+#define ZCL_CURRENT_TILT_PERCENTAGE_ATTRIBUTE_ID (0x0009)
+#define ZCL_OPEN_LIMIT_LIFT_ATTRIBUTE_ID (0x0010)
+#define ZCL_CLOSED_LIMIT_LIFT_ATTRIBUTE_ID (0x0011)
+#define ZCL_OPEN_LIMIT_TILT_ATTRIBUTE_ID (0x0012)
+#define ZCL_CLOSED_LIMIT_TILT_ATTRIBUTE_ID (0x0013)
+#define ZCL_VELOCITY_LIFT_ATTRIBUTE_ID (0x0014)
+#define ZCL_ACCELERATION_LIFT_ATTRIBUTE_ID (0x0015)
+#define ZCL_DECELERATION_LIFT_ATTRIBUTE_ID (0x0016)
+#define ZCL_MODE_ATTRIBUTE_ID (0x0017)
+#define ZCL_SETPOINTS_LIFT_ATTRIBUTE_ID (0x0018)
+#define ZCL_SETPOINTS_TILT_ATTRIBUTE_ID (0x0019)
+
+// Attribute ids for cluster: Barrier Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BARRIER_MOVING_STATE_ATTRIBUTE_ID (0x0001)
+#define ZCL_BARRIER_SAFETY_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_BARRIER_CAPABILITIES_ATTRIBUTE_ID (0x0003)
+#define ZCL_BARRIER_OPEN_EVENTS_ATTRIBUTE_ID (0x0004)
+#define ZCL_BARRIER_CLOSE_EVENTS_ATTRIBUTE_ID (0x0005)
+#define ZCL_BARRIER_COMMAND_OPEN_EVENTS_ATTRIBUTE_ID (0x0006)
+#define ZCL_BARRIER_COMMAND_CLOSE_EVENTS_ATTRIBUTE_ID (0x0007)
+#define ZCL_BARRIER_OPEN_PERIOD_ATTRIBUTE_ID (0x0008)
+#define ZCL_BARRIER_CLOSE_PERIOD_ATTRIBUTE_ID (0x0009)
+#define ZCL_BARRIER_POSITION_ATTRIBUTE_ID (0x000A)
+
+// Attribute ids for cluster: Pump Configuration and Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MAX_PRESSURE_ATTRIBUTE_ID (0x0000)
+#define ZCL_MAX_SPEED_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAX_FLOW_ATTRIBUTE_ID (0x0002)
+#define ZCL_MIN_CONST_PRESSURE_ATTRIBUTE_ID (0x0003)
+#define ZCL_MAX_CONST_PRESSURE_ATTRIBUTE_ID (0x0004)
+#define ZCL_MIN_COMP_PRESSURE_ATTRIBUTE_ID (0x0005)
+#define ZCL_MAX_COMP_PRESSURE_ATTRIBUTE_ID (0x0006)
+#define ZCL_MIN_CONST_SPEED_ATTRIBUTE_ID (0x0007)
+#define ZCL_MAX_CONST_SPEED_ATTRIBUTE_ID (0x0008)
+#define ZCL_MIN_CONST_FLOW_ATTRIBUTE_ID (0x0009)
+#define ZCL_MAX_CONST_FLOW_ATTRIBUTE_ID (0x000A)
+#define ZCL_MIN_CONST_TEMP_ATTRIBUTE_ID (0x000B)
+#define ZCL_MAX_CONST_TEMP_ATTRIBUTE_ID (0x000C)
+#define ZCL_PUMP_STATUS_ATTRIBUTE_ID (0x0010)
+#define ZCL_EFFECTIVE_OPERATION_MODE_ATTRIBUTE_ID (0x0011)
+#define ZCL_EFFECTIVE_CONTROL_MODE_ATTRIBUTE_ID (0x0012)
+#define ZCL_CAPACITY_ATTRIBUTE_ID (0x0013)
+#define ZCL_SPEED_ATTRIBUTE_ID (0x0014)
+#define ZCL_LIFETIME_RUNNING_HOURS_ATTRIBUTE_ID (0x0015)
+#define ZCL_PUMP_POWER_ATTRIBUTE_ID (0x0016)
+#define ZCL_LIFETIME_ENERGY_CONSUMED_ATTRIBUTE_ID (0x0017)
+#define ZCL_OPERATION_MODE_ATTRIBUTE_ID (0x0020)
+#define ZCL_CONTROL_MODE_ATTRIBUTE_ID (0x0021)
+#define ZCL_PUMP_ALARM_MASK_ATTRIBUTE_ID (0x0022)
+
+// Attribute ids for cluster: Thermostat
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID (0x0000)
+#define ZCL_OUTDOOR_TEMPERATURE_ATTRIBUTE_ID (0x0001)
+#define ZCL_THERMOSTAT_OCCUPANCY_ATTRIBUTE_ID (0x0002)
+#define ZCL_ABS_MIN_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0003)
+#define ZCL_ABS_MAX_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0004)
+#define ZCL_ABS_MIN_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0005)
+#define ZCL_ABS_MAX_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0006)
+#define ZCL_PI_COOLING_DEMAND_ATTRIBUTE_ID (0x0007)
+#define ZCL_PI_HEATING_DEMAND_ATTRIBUTE_ID (0x0008)
+#define ZCL_HVAC_SYSTEM_TYPE_CONFIGURATION_ATTRIBUTE_ID (0x0009)
+#define ZCL_LOCAL_TEMPERATURE_CALIBRATION_ATTRIBUTE_ID (0x0010)
+#define ZCL_OCCUPIED_COOLING_SETPOINT_ATTRIBUTE_ID (0x0011)
+#define ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID (0x0012)
+#define ZCL_UNOCCUPIED_COOLING_SETPOINT_ATTRIBUTE_ID (0x0013)
+#define ZCL_UNOCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID (0x0014)
+#define ZCL_MIN_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0015)
+#define ZCL_MAX_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0016)
+#define ZCL_MIN_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0017)
+#define ZCL_MAX_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0018)
+#define ZCL_MIN_SETPOINT_DEAD_BAND_ATTRIBUTE_ID (0x0019)
+#define ZCL_REMOTE_SENSING_ATTRIBUTE_ID (0x001A)
+#define ZCL_CONTROL_SEQUENCE_OF_OPERATION_ATTRIBUTE_ID (0x001B)
+#define ZCL_SYSTEM_MODE_ATTRIBUTE_ID (0x001C)
+#define ZCL_THERMOSTAT_ALARM_MASK_ATTRIBUTE_ID (0x001D)
+#define ZCL_THERMOSTAT_RUNNING_MODE_ATTRIBUTE_ID (0x001E)
+#define ZCL_START_OF_WEEK_ATTRIBUTE_ID (0x0020)
+#define ZCL_NUMBER_OF_WEEKLY_TRANSITIONS_ATTRIBUTE_ID (0x0021)
+#define ZCL_NUMBER_OF_DAILY_TRANSITIONS_ATTRIBUTE_ID (0x0022)
+#define ZCL_TEMPERATURE_SETPOINT_HOLD_ATTRIBUTE_ID (0x0023)
+#define ZCL_TEMPERATURE_SETPOINT_HOLD_DURATION_ATTRIBUTE_ID (0x0024)
+#define ZCL_THERMOSTAT_PROGRAMMING_OPERATION_MODE_ATTRIBUTE_ID (0x0025)
+#define ZCL_THERMOSTAT_RUNNING_STATE_ATTRIBUTE_ID (0x0029)
+#define ZCL_SETPOINT_CHANGE_SOURCE_ATTRIBUTE_ID (0x0030)
+#define ZCL_SETPOINT_CHANGE_AMOUNT_ATTRIBUTE_ID (0x0031)
+#define ZCL_SETPOINT_CHANGE_SOURCE_TIMESTAMP_ATTRIBUTE_ID (0x0032)
+#define ZCL_AC_TYPE_ATTRIBUTE_ID (0x0040)
+#define ZCL_AC_CAPACITY_ATTRIBUTE_ID (0x0041)
+#define ZCL_AC_REFRIGERANT_TYPE_ATTRIBUTE_ID (0x0042)
+#define ZCL_AC_COMPRESSOR_ATTRIBUTE_ID (0x0043)
+#define ZCL_AC_ERROR_CODE_ATTRIBUTE_ID (0x0044)
+#define ZCL_AC_LOUVER_POSITION_ATTRIBUTE_ID (0x0045)
+#define ZCL_AC_COIL_TEMPERATURE_ATTRIBUTE_ID (0x0046)
+#define ZCL_AC_CAPACITY_FORMAT_ATTRIBUTE_ID (0x0047)
+
+// Attribute ids for cluster: Fan Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID (0x0000)
+#define ZCL_FAN_CONTROL_FAN_MODE_SEQUENCE_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Dehumidification Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_RELATIVE_HUMIDITY_ATTRIBUTE_ID (0x0000)
+#define ZCL_DEHUMIDIFICATION_COOLING_ATTRIBUTE_ID (0x0001)
+#define ZCL_RH_DEHUMIDIFICATION_SETPOINT_ATTRIBUTE_ID (0x0010)
+#define ZCL_RELATIVE_HUMIDITY_MODE_ATTRIBUTE_ID (0x0011)
+#define ZCL_DEHUMIDIFICATION_LOCKOUT_ATTRIBUTE_ID (0x0012)
+#define ZCL_DEHUMIDIFICATION_HYSTERESIS_ATTRIBUTE_ID (0x0013)
+#define ZCL_DEHUMIDIFICATION_MAX_COOL_ATTRIBUTE_ID (0x0014)
+#define ZCL_RELATIVE_HUMIDITY_DISPLAY_ATTRIBUTE_ID (0x0015)
+
+// Attribute ids for cluster: Thermostat User Interface Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TEMPERATURE_DISPLAY_MODE_ATTRIBUTE_ID (0x0000)
+#define ZCL_KEYPAD_LOCKOUT_ATTRIBUTE_ID (0x0001)
+#define ZCL_SCHEDULE_PROGRAMMING_VISIBILITY_ATTRIBUTE_ID (0x0002)
+
+// Attribute ids for cluster: Color Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_COLOR_CONTROL_CURRENT_HUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_COLOR_CONTROL_CURRENT_SATURATION_ATTRIBUTE_ID (0x0001)
+#define ZCL_COLOR_CONTROL_REMAINING_TIME_ATTRIBUTE_ID (0x0002)
+#define ZCL_COLOR_CONTROL_CURRENT_X_ATTRIBUTE_ID (0x0003)
+#define ZCL_COLOR_CONTROL_CURRENT_Y_ATTRIBUTE_ID (0x0004)
+#define ZCL_COLOR_CONTROL_DRIFT_COMPENSATION_ATTRIBUTE_ID (0x0005)
+#define ZCL_COLOR_CONTROL_COMPENSATION_TEXT_ATTRIBUTE_ID (0x0006)
+#define ZCL_COLOR_CONTROL_COLOR_TEMPERATURE_ATTRIBUTE_ID (0x0007)
+#define ZCL_COLOR_CONTROL_COLOR_MODE_ATTRIBUTE_ID (0x0008)
+#define ZCL_COLOR_CONTROL_OPTIONS_ATTRIBUTE_ID (0x000F)
+#define ZCL_COLOR_CONTROL_NUMBER_OF_PRIMARIES_ATTRIBUTE_ID (0x0010)
+#define ZCL_COLOR_CONTROL_PRIMARY_1_X_ATTRIBUTE_ID (0x0011)
+#define ZCL_COLOR_CONTROL_PRIMARY_1_Y_ATTRIBUTE_ID (0x0012)
+#define ZCL_COLOR_CONTROL_PRIMARY_1_INTENSITY_ATTRIBUTE_ID (0x0013)
+#define ZCL_COLOR_CONTROL_PRIMARY_2_X_ATTRIBUTE_ID (0x0015)
+#define ZCL_COLOR_CONTROL_PRIMARY_2_Y_ATTRIBUTE_ID (0x0016)
+#define ZCL_COLOR_CONTROL_PRIMARY_2_INTENSITY_ATTRIBUTE_ID (0x0017)
+#define ZCL_COLOR_CONTROL_PRIMARY_3_X_ATTRIBUTE_ID (0x0019)
+#define ZCL_COLOR_CONTROL_PRIMARY_3_Y_ATTRIBUTE_ID (0x001A)
+#define ZCL_COLOR_CONTROL_PRIMARY_3_INTENSITY_ATTRIBUTE_ID (0x001B)
+#define ZCL_COLOR_CONTROL_PRIMARY_4_X_ATTRIBUTE_ID (0x0020)
+#define ZCL_COLOR_CONTROL_PRIMARY_4_Y_ATTRIBUTE_ID (0x0021)
+#define ZCL_COLOR_CONTROL_PRIMARY_4_INTENSITY_ATTRIBUTE_ID (0x0022)
+#define ZCL_COLOR_CONTROL_PRIMARY_5_X_ATTRIBUTE_ID (0x0024)
+#define ZCL_COLOR_CONTROL_PRIMARY_5_Y_ATTRIBUTE_ID (0x0025)
+#define ZCL_COLOR_CONTROL_PRIMARY_5_INTENSITY_ATTRIBUTE_ID (0x0026)
+#define ZCL_COLOR_CONTROL_PRIMARY_6_X_ATTRIBUTE_ID (0x0028)
+#define ZCL_COLOR_CONTROL_PRIMARY_6_Y_ATTRIBUTE_ID (0x0029)
+#define ZCL_COLOR_CONTROL_PRIMARY_6_INTENSITY_ATTRIBUTE_ID (0x002A)
+#define ZCL_COLOR_CONTROL_WHITE_POINT_X_ATTRIBUTE_ID (0x0030)
+#define ZCL_COLOR_CONTROL_WHITE_POINT_Y_ATTRIBUTE_ID (0x0031)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_R_X_ATTRIBUTE_ID (0x0032)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_R_Y_ATTRIBUTE_ID (0x0033)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_R_INTENSITY_ATTRIBUTE_ID (0x0034)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_G_X_ATTRIBUTE_ID (0x0036)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_G_Y_ATTRIBUTE_ID (0x0037)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_G_INTENSITY_ATTRIBUTE_ID (0x0038)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_B_X_ATTRIBUTE_ID (0x003A)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_B_Y_ATTRIBUTE_ID (0x003B)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_B_INTENSITY_ATTRIBUTE_ID (0x003C)
+#define ZCL_COLOR_CONTROL_ENHANCED_CURRENT_HUE_ATTRIBUTE_ID (0x4000)
+#define ZCL_COLOR_CONTROL_ENHANCED_COLOR_MODE_ATTRIBUTE_ID (0x4001)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_ACTIVE_ATTRIBUTE_ID (0x4002)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_DIRECTION_ATTRIBUTE_ID (0x4003)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_TIME_ATTRIBUTE_ID (0x4004)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_START_ENHANCED_HUE_ATTRIBUTE_ID (0x4005)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_STORED_ENHANCED_HUE_ATTRIBUTE_ID (0x4006)
+#define ZCL_COLOR_CONTROL_COLOR_CAPABILITIES_ATTRIBUTE_ID (0x400A)
+#define ZCL_COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MIN_ATTRIBUTE_ID (0x400B)
+#define ZCL_COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MAX_ATTRIBUTE_ID (0x400C)
+#define ZCL_COLOR_CONTROL_TEMPERATURE_LEVEL_MIN_MIREDS_ATTRIBUTE_ID (0x400D)
+#define ZCL_START_UP_COLOR_TEMPERATURE_MIREDS_ATTRIBUTE_ID (0x4010)
+
+// Attribute ids for cluster: Ballast Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PHYSICAL_MIN_LEVEL_ATTRIBUTE_ID (0x0000)
+#define ZCL_PHYSICAL_MAX_LEVEL_ATTRIBUTE_ID (0x0001)
+#define ZCL_BALLAST_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_MIN_LEVEL_ATTRIBUTE_ID (0x0010)
+#define ZCL_MAX_LEVEL_ATTRIBUTE_ID (0x0011)
+#define ZCL_POWER_ON_LEVEL_ATTRIBUTE_ID (0x0012)
+#define ZCL_POWER_ON_FADE_TIME_ATTRIBUTE_ID (0x0013)
+#define ZCL_INTRINSIC_BALLAST_FACTOR_ATTRIBUTE_ID (0x0014)
+#define ZCL_BALLAST_FACTOR_ADJUSTMENT_ATTRIBUTE_ID (0x0015)
+#define ZCL_LAMP_QUALITY_ATTRIBUTE_ID (0x0020)
+#define ZCL_LAMP_TYPE_ATTRIBUTE_ID (0x0030)
+#define ZCL_LAMP_MANUFACTURER_ATTRIBUTE_ID (0x0031)
+#define ZCL_LAMP_RATED_HOURS_ATTRIBUTE_ID (0x0032)
+#define ZCL_LAMP_BURN_HOURS_ATTRIBUTE_ID (0x0033)
+#define ZCL_LAMP_ALARM_MODE_ATTRIBUTE_ID (0x0034)
+#define ZCL_LAMP_BURN_HOURS_TRIP_POINT_ATTRIBUTE_ID (0x0035)
+
+// Attribute ids for cluster: Illuminance Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ILLUM_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ILLUM_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ILLUM_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_ILLUM_TOLERANCE_ATTRIBUTE_ID (0x0003)
+#define ZCL_MEASUREMENT_LIGHT_SENSOR_TYPE_ATTRIBUTE_ID (0x0004)
+
+// Attribute ids for cluster: Illuminance Level Sensing
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LEVEL_STATUS_ATTRIBUTE_ID (0x0000)
+#define ZCL_SENSING_LIGHT_SENSOR_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ILLUMINANCE_TARGET_LEVEL_ATTRIBUTE_ID (0x0010)
+
+// Attribute ids for cluster: Temperature Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TEMP_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_TEMP_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_TEMP_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_TEMP_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Pressure Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PRESSURE_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_PRESSURE_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_PRESSURE_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_PRESSURE_TOLERANCE_ATTRIBUTE_ID (0x0003)
+#define ZCL_PRESSURE_SCALED_VALUE_ATTRIBUTE_ID (0x0010)
+#define ZCL_PRESSURE_MIN_SCALED_VALUE_ATTRIBUTE_ID (0x0011)
+#define ZCL_PRESSURE_MAX_SCALED_VALUE_ATTRIBUTE_ID (0x0012)
+#define ZCL_PRESSURE_SCALED_TOLERANCE_ATTRIBUTE_ID (0x0013)
+#define ZCL_PRESSURE_SCALE_ATTRIBUTE_ID (0x0014)
+
+// Attribute ids for cluster: Flow Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_FLOW_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_FLOW_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_FLOW_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_FLOW_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Relative Humidity Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_RELATIVE_HUMIDITY_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_RELATIVE_HUMIDITY_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_RELATIVE_HUMIDITY_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_RELATIVE_HUMIDITY_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Occupancy Sensing
+
+// Client attributes
+
+// Server attributes
+#define ZCL_OCCUPANCY_ATTRIBUTE_ID (0x0000)
+#define ZCL_OCCUPANCY_SENSOR_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_OCCUPANCY_SENSOR_TYPE_BITMAP_ATTRIBUTE_ID (0x0002)
+#define ZCL_PIR_OCCUPIED_TO_UNOCCUPIED_DELAY_ATTRIBUTE_ID (0x0010)
+#define ZCL_PIR_UNOCCUPIED_TO_OCCUPIED_DELAY_ATTRIBUTE_ID (0x0011)
+#define ZCL_PIR_UNOCCUPIED_TO_OCCUPIED_THRESHOLD_ATTRIBUTE_ID (0x0012)
+#define ZCL_ULTRASONIC_OCCUPIED_TO_UNOCCUPIED_DELAY_ATTRIBUTE_ID (0x0020)
+#define ZCL_ULTRASONIC_UNOCCUPIED_TO_OCCUPIED_DELAY_ATTRIBUTE_ID (0x0021)
+#define ZCL_ULTRASONIC_UNOCCUPIED_TO_OCCUPIED_THRESHOLD_ATTRIBUTE_ID (0x0022)
+#define ZCL_PHYSICAL_CONTACT_OCCUPIED_TO_UNOCCUPIED_DELAY_ATTRIBUTE_ID (0x0030)
+#define ZCL_PHYSICAL_CONTACT_UNOCCUPIED_TO_OCCUPIED_DELAY_ATTRIBUTE_ID (0x0031)
+#define ZCL_PHYSICAL_CONTACT_UNOCCUPIED_TO_OCCUPIED_THRESHOLD_ATTRIBUTE_ID (0x0032)
+
+// Attribute ids for cluster: Carbon Monoxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Carbon Dioxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Ethylene Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Ethylene Oxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Hydrogen Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Hydrogen Sulphide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Nitric Oxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Nitrogen Dioxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Oxygen Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Ozone Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Sulfur Dioxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Dissolved Oxygen Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Bromate Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Chloramines Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Chlorine Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Fecal coliform and E. Coli Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Fluoride Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Haloacetic Acids Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Total Trihalomethanes Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Total Coliform Bacteria Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Turbidity Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Copper Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Lead Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Manganese Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Sulfate Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Bromodichloromethane Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Bromoform Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Chlorodibromomethane Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Chloroform Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Sodium Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: IAS Zone
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ZONE_STATE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ZONE_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ZONE_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_IAS_CIE_ADDRESS_ATTRIBUTE_ID (0x0010)
+#define ZCL_ZONE_ID_ATTRIBUTE_ID (0x0011)
+#define ZCL_NUMBER_OF_ZONE_SENSITIVITY_LEVELS_SUPPORTED_ATTRIBUTE_ID (0x0012)
+#define ZCL_CURRENT_ZONE_SENSITIVITY_LEVEL_ATTRIBUTE_ID (0x0013)
+
+// Attribute ids for cluster: IAS ACE
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: IAS WD
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MAX_DURATION_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Generic Tunnel
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MAXIMUM_INCOMING_TRANSFER_SIZE_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAXIMUM_OUTGOING_TRANSFER_SIZE_ATTRIBUTE_ID (0x0002)
+#define ZCL_PROTOCOL_ADDRESS_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: BACnet Protocol Tunnel
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: 11073 Protocol Tunnel
+
+// Client attributes
+
+// Server attributes
+#define ZCL_DEVICE_ID_LIST_ATTRIBUTE_ID (0x0000)
+#define ZCL_MANAGER_TARGET_ATTRIBUTE_ID (0x0001)
+#define ZCL_MANAGER_ENDPOINT_ATTRIBUTE_ID (0x0002)
+#define ZCL_CONNECTED_ATTRIBUTE_ID (0x0003)
+#define ZCL_PREEMPTIBLE_ATTRIBUTE_ID (0x0004)
+#define ZCL_IDLE_TIMEOUT_ATTRIBUTE_ID (0x0005)
+
+// Attribute ids for cluster: ISO 7816 Protocol Tunnel
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ISO7816_PROTOCOL_TUNNEL_STATUS_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Price
+
+// Client attributes
+#define ZCL_PRICE_INCREASE_RANDOMIZE_MINUTES_ATTRIBUTE_ID (0x0000)
+#define ZCL_PRICE_DECREASE_RANDOMIZE_MINUTES_ATTRIBUTE_ID (0x0001)
+#define ZCL_COMMODITY_TYPE_CLIENT_ATTRIBUTE_ID (0x0002)
+
+// Server attributes
+#define ZCL_TIER1_PRICE_LABEL_ATTRIBUTE_ID (0x0000)
+#define ZCL_TIER2_PRICE_LABEL_ATTRIBUTE_ID (0x0001)
+#define ZCL_TIER3_PRICE_LABEL_ATTRIBUTE_ID (0x0002)
+#define ZCL_TIER4_PRICE_LABEL_ATTRIBUTE_ID (0x0003)
+#define ZCL_TIER5_PRICE_LABEL_ATTRIBUTE_ID (0x0004)
+#define ZCL_TIER6_PRICE_LABEL_ATTRIBUTE_ID (0x0005)
+#define ZCL_TIER7_PRICE_LABEL_ATTRIBUTE_ID (0x0006)
+#define ZCL_TIER8_PRICE_LABEL_ATTRIBUTE_ID (0x0007)
+#define ZCL_TIER9_PRICE_LABEL_ATTRIBUTE_ID (0x0008)
+#define ZCL_TIER10_PRICE_LABEL_ATTRIBUTE_ID (0x0009)
+#define ZCL_TIER11_PRICE_LABEL_ATTRIBUTE_ID (0x000A)
+#define ZCL_TIER12_PRICE_LABEL_ATTRIBUTE_ID (0x000B)
+#define ZCL_TIER13_PRICE_LABEL_ATTRIBUTE_ID (0x000C)
+#define ZCL_TIER14_PRICE_LABEL_ATTRIBUTE_ID (0x000D)
+#define ZCL_TIER15_PRICE_LABEL_ATTRIBUTE_ID (0x000E)
+#define ZCL_TIER16_PRICE_LABEL_ATTRIBUTE_ID (0x000F)
+#define ZCL_TIER17_PRICE_LABEL_ATTRIBUTE_ID (0x0010)
+#define ZCL_TIER18_PRICE_LABEL_ATTRIBUTE_ID (0x0011)
+#define ZCL_TIER19_PRICE_LABEL_ATTRIBUTE_ID (0x0012)
+#define ZCL_TIER20_PRICE_LABEL_ATTRIBUTE_ID (0x0013)
+#define ZCL_TIER21_PRICE_LABEL_ATTRIBUTE_ID (0x0014)
+#define ZCL_TIER22_PRICE_LABEL_ATTRIBUTE_ID (0x0015)
+#define ZCL_TIER23_PRICE_LABEL_ATTRIBUTE_ID (0x0016)
+#define ZCL_TIER24_PRICE_LABEL_ATTRIBUTE_ID (0x0017)
+#define ZCL_TIER25_PRICE_LABEL_ATTRIBUTE_ID (0x0018)
+#define ZCL_TIER26_PRICE_LABEL_ATTRIBUTE_ID (0x0019)
+#define ZCL_TIER27_PRICE_LABEL_ATTRIBUTE_ID (0x001A)
+#define ZCL_TIER28_PRICE_LABEL_ATTRIBUTE_ID (0x001B)
+#define ZCL_TIER29_PRICE_LABEL_ATTRIBUTE_ID (0x001C)
+#define ZCL_TIER30_PRICE_LABEL_ATTRIBUTE_ID (0x001D)
+#define ZCL_TIER31_PRICE_LABEL_ATTRIBUTE_ID (0x001E)
+#define ZCL_TIER32_PRICE_LABEL_ATTRIBUTE_ID (0x001F)
+#define ZCL_TIER33_PRICE_LABEL_ATTRIBUTE_ID (0x0020)
+#define ZCL_TIER34_PRICE_LABEL_ATTRIBUTE_ID (0x0021)
+#define ZCL_TIER35_PRICE_LABEL_ATTRIBUTE_ID (0x0022)
+#define ZCL_TIER36_PRICE_LABEL_ATTRIBUTE_ID (0x0023)
+#define ZCL_TIER37_PRICE_LABEL_ATTRIBUTE_ID (0x0024)
+#define ZCL_TIER38_PRICE_LABEL_ATTRIBUTE_ID (0x0025)
+#define ZCL_TIER39_PRICE_LABEL_ATTRIBUTE_ID (0x0026)
+#define ZCL_TIER40_PRICE_LABEL_ATTRIBUTE_ID (0x0027)
+#define ZCL_TIER41_PRICE_LABEL_ATTRIBUTE_ID (0x0028)
+#define ZCL_TIER42_PRICE_LABEL_ATTRIBUTE_ID (0x0029)
+#define ZCL_TIER43_PRICE_LABEL_ATTRIBUTE_ID (0x002A)
+#define ZCL_TIER44_PRICE_LABEL_ATTRIBUTE_ID (0x002B)
+#define ZCL_TIER45_PRICE_LABEL_ATTRIBUTE_ID (0x002C)
+#define ZCL_TIER46_PRICE_LABEL_ATTRIBUTE_ID (0x002D)
+#define ZCL_TIER47_PRICE_LABEL_ATTRIBUTE_ID (0x002E)
+#define ZCL_TIER48_PRICE_LABEL_ATTRIBUTE_ID (0x002F)
+#define ZCL_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0100)
+#define ZCL_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0101)
+#define ZCL_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0102)
+#define ZCL_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0103)
+#define ZCL_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0104)
+#define ZCL_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0105)
+#define ZCL_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0106)
+#define ZCL_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0107)
+#define ZCL_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0108)
+#define ZCL_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0109)
+#define ZCL_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x010A)
+#define ZCL_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x010B)
+#define ZCL_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x010C)
+#define ZCL_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x010D)
+#define ZCL_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x010E)
+#define ZCL_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x010F)
+#define ZCL_TIER1_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0110)
+#define ZCL_TIER1_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0111)
+#define ZCL_TIER1_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0112)
+#define ZCL_TIER1_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0113)
+#define ZCL_TIER1_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0114)
+#define ZCL_TIER1_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0115)
+#define ZCL_TIER1_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0116)
+#define ZCL_TIER1_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0117)
+#define ZCL_TIER1_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0118)
+#define ZCL_TIER1_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0119)
+#define ZCL_TIER1_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x011A)
+#define ZCL_TIER1_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x011B)
+#define ZCL_TIER1_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x011C)
+#define ZCL_TIER1_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x011D)
+#define ZCL_TIER1_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x011E)
+#define ZCL_TIER1_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x011F)
+#define ZCL_TIER2_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0120)
+#define ZCL_TIER2_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0121)
+#define ZCL_TIER2_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0122)
+#define ZCL_TIER2_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0123)
+#define ZCL_TIER2_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0124)
+#define ZCL_TIER2_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0125)
+#define ZCL_TIER2_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0126)
+#define ZCL_TIER2_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0127)
+#define ZCL_TIER2_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0128)
+#define ZCL_TIER2_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0129)
+#define ZCL_TIER2_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x012A)
+#define ZCL_TIER2_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x012B)
+#define ZCL_TIER2_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x012C)
+#define ZCL_TIER2_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x012D)
+#define ZCL_TIER2_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x012E)
+#define ZCL_TIER2_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x012F)
+#define ZCL_TIER3_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0130)
+#define ZCL_TIER3_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0131)
+#define ZCL_TIER3_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0132)
+#define ZCL_TIER3_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0133)
+#define ZCL_TIER3_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0134)
+#define ZCL_TIER3_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0135)
+#define ZCL_TIER3_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0136)
+#define ZCL_TIER3_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0137)
+#define ZCL_TIER3_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0138)
+#define ZCL_TIER3_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0139)
+#define ZCL_TIER3_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x013A)
+#define ZCL_TIER3_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x013B)
+#define ZCL_TIER3_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x013C)
+#define ZCL_TIER3_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x013D)
+#define ZCL_TIER3_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x013E)
+#define ZCL_TIER3_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x013F)
+#define ZCL_TIER4_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0140)
+#define ZCL_TIER4_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0141)
+#define ZCL_TIER4_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0142)
+#define ZCL_TIER4_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0143)
+#define ZCL_TIER4_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0144)
+#define ZCL_TIER4_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0145)
+#define ZCL_TIER4_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0146)
+#define ZCL_TIER4_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0147)
+#define ZCL_TIER4_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0148)
+#define ZCL_TIER4_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0149)
+#define ZCL_TIER4_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x014A)
+#define ZCL_TIER4_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x014B)
+#define ZCL_TIER4_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x014C)
+#define ZCL_TIER4_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x014D)
+#define ZCL_TIER4_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x014E)
+#define ZCL_TIER4_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x014F)
+#define ZCL_TIER5_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0150)
+#define ZCL_TIER5_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0151)
+#define ZCL_TIER5_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0152)
+#define ZCL_TIER5_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0153)
+#define ZCL_TIER5_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0154)
+#define ZCL_TIER5_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0155)
+#define ZCL_TIER5_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0156)
+#define ZCL_TIER5_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0157)
+#define ZCL_TIER5_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0158)
+#define ZCL_TIER5_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0159)
+#define ZCL_TIER5_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x015A)
+#define ZCL_TIER5_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x015B)
+#define ZCL_TIER5_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x015C)
+#define ZCL_TIER5_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x015D)
+#define ZCL_TIER5_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x015E)
+#define ZCL_TIER5_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x015F)
+#define ZCL_TIER6_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0160)
+#define ZCL_TIER6_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0161)
+#define ZCL_TIER6_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0162)
+#define ZCL_TIER6_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0163)
+#define ZCL_TIER6_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0164)
+#define ZCL_TIER6_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0165)
+#define ZCL_TIER6_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0166)
+#define ZCL_TIER6_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0167)
+#define ZCL_TIER6_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0168)
+#define ZCL_TIER6_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0169)
+#define ZCL_TIER6_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x016A)
+#define ZCL_TIER6_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x016B)
+#define ZCL_TIER6_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x016C)
+#define ZCL_TIER6_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x016D)
+#define ZCL_TIER6_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x016E)
+#define ZCL_TIER6_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x016F)
+#define ZCL_TIER7_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0170)
+#define ZCL_TIER7_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0171)
+#define ZCL_TIER7_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0172)
+#define ZCL_TIER7_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0173)
+#define ZCL_TIER7_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0174)
+#define ZCL_TIER7_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0175)
+#define ZCL_TIER7_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0176)
+#define ZCL_TIER7_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0177)
+#define ZCL_TIER7_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0178)
+#define ZCL_TIER7_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0179)
+#define ZCL_TIER7_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x017A)
+#define ZCL_TIER7_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x017B)
+#define ZCL_TIER7_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x017C)
+#define ZCL_TIER7_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x017D)
+#define ZCL_TIER7_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x017E)
+#define ZCL_TIER7_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x017F)
+#define ZCL_TIER8_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0180)
+#define ZCL_TIER8_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0181)
+#define ZCL_TIER8_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0182)
+#define ZCL_TIER8_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0183)
+#define ZCL_TIER8_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0184)
+#define ZCL_TIER8_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0185)
+#define ZCL_TIER8_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0186)
+#define ZCL_TIER8_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0187)
+#define ZCL_TIER8_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0188)
+#define ZCL_TIER8_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0189)
+#define ZCL_TIER8_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x018A)
+#define ZCL_TIER8_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x018B)
+#define ZCL_TIER8_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x018C)
+#define ZCL_TIER8_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x018D)
+#define ZCL_TIER8_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x018E)
+#define ZCL_TIER8_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x018F)
+#define ZCL_TIER9_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0190)
+#define ZCL_TIER9_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0191)
+#define ZCL_TIER9_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0192)
+#define ZCL_TIER9_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0193)
+#define ZCL_TIER9_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0194)
+#define ZCL_TIER9_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0195)
+#define ZCL_TIER9_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0196)
+#define ZCL_TIER9_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0197)
+#define ZCL_TIER9_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0198)
+#define ZCL_TIER9_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0199)
+#define ZCL_TIER9_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x019A)
+#define ZCL_TIER9_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x019B)
+#define ZCL_TIER9_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x019C)
+#define ZCL_TIER9_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x019D)
+#define ZCL_TIER9_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x019E)
+#define ZCL_TIER9_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x019F)
+#define ZCL_TIER10_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01A0)
+#define ZCL_TIER10_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01A1)
+#define ZCL_TIER10_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01A2)
+#define ZCL_TIER10_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01A3)
+#define ZCL_TIER10_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01A4)
+#define ZCL_TIER10_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01A5)
+#define ZCL_TIER10_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01A6)
+#define ZCL_TIER10_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01A7)
+#define ZCL_TIER10_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01A8)
+#define ZCL_TIER10_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01A9)
+#define ZCL_TIER10_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01AA)
+#define ZCL_TIER10_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01AB)
+#define ZCL_TIER10_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01AC)
+#define ZCL_TIER10_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01AD)
+#define ZCL_TIER10_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01AE)
+#define ZCL_TIER10_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01AF)
+#define ZCL_TIER11_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01B0)
+#define ZCL_TIER11_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01B1)
+#define ZCL_TIER11_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01B2)
+#define ZCL_TIER11_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01B3)
+#define ZCL_TIER11_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01B4)
+#define ZCL_TIER11_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01B5)
+#define ZCL_TIER11_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01B6)
+#define ZCL_TIER11_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01B7)
+#define ZCL_TIER11_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01B8)
+#define ZCL_TIER11_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01B9)
+#define ZCL_TIER11_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01BA)
+#define ZCL_TIER11_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01BB)
+#define ZCL_TIER11_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01BC)
+#define ZCL_TIER11_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01BD)
+#define ZCL_TIER11_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01BE)
+#define ZCL_TIER11_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01BF)
+#define ZCL_TIER12_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01C0)
+#define ZCL_TIER12_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01C1)
+#define ZCL_TIER12_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01C2)
+#define ZCL_TIER12_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01C3)
+#define ZCL_TIER12_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01C4)
+#define ZCL_TIER12_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01C5)
+#define ZCL_TIER12_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01C6)
+#define ZCL_TIER12_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01C7)
+#define ZCL_TIER12_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01C8)
+#define ZCL_TIER12_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01C9)
+#define ZCL_TIER12_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01CA)
+#define ZCL_TIER12_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01CB)
+#define ZCL_TIER12_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01CC)
+#define ZCL_TIER12_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01CD)
+#define ZCL_TIER12_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01CE)
+#define ZCL_TIER12_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01CF)
+#define ZCL_TIER13_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01D0)
+#define ZCL_TIER13_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01D1)
+#define ZCL_TIER13_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01D2)
+#define ZCL_TIER13_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01D3)
+#define ZCL_TIER13_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01D4)
+#define ZCL_TIER13_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01D5)
+#define ZCL_TIER13_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01D6)
+#define ZCL_TIER13_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01D7)
+#define ZCL_TIER13_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01D8)
+#define ZCL_TIER13_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01D9)
+#define ZCL_TIER13_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01DA)
+#define ZCL_TIER13_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01DB)
+#define ZCL_TIER13_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01DC)
+#define ZCL_TIER13_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01DD)
+#define ZCL_TIER13_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01DE)
+#define ZCL_TIER13_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01DF)
+#define ZCL_TIER14_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01E0)
+#define ZCL_TIER14_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01E1)
+#define ZCL_TIER14_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01E2)
+#define ZCL_TIER14_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01E3)
+#define ZCL_TIER14_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01E4)
+#define ZCL_TIER14_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01E5)
+#define ZCL_TIER14_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01E6)
+#define ZCL_TIER14_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01E7)
+#define ZCL_TIER14_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01E8)
+#define ZCL_TIER14_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01E9)
+#define ZCL_TIER14_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01EA)
+#define ZCL_TIER14_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01EB)
+#define ZCL_TIER14_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01EC)
+#define ZCL_TIER14_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01ED)
+#define ZCL_TIER14_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01EE)
+#define ZCL_TIER14_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01EF)
+#define ZCL_TIER15_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01F0)
+#define ZCL_TIER15_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01F1)
+#define ZCL_TIER15_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01F2)
+#define ZCL_TIER15_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01F3)
+#define ZCL_TIER15_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01F4)
+#define ZCL_TIER15_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01F5)
+#define ZCL_TIER15_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01F6)
+#define ZCL_TIER15_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01F7)
+#define ZCL_TIER15_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01F8)
+#define ZCL_TIER15_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01F9)
+#define ZCL_TIER15_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01FA)
+#define ZCL_TIER15_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01FB)
+#define ZCL_TIER15_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01FC)
+#define ZCL_TIER15_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01FD)
+#define ZCL_TIER15_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01FE)
+#define ZCL_TIER15_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01FF)
+#define ZCL_START_OF_BLOCK_PERIOD_ATTRIBUTE_ID (0x0200)
+#define ZCL_BLOCK_PERIOD_DURATION_MINUTES_ATTRIBUTE_ID (0x0201)
+#define ZCL_THRESHOLD_MULTIPLIER_ATTRIBUTE_ID (0x0202)
+#define ZCL_THRESHOLD_DIVISOR_ATTRIBUTE_ID (0x0203)
+#define ZCL_BLOCK_PERIOD_DURATION_TYPE_ATTRIBUTE_ID (0x0204)
+#define ZCL_COMMODITY_TYPE_SERVER_ATTRIBUTE_ID (0x0300)
+#define ZCL_STANDING_CHARGE_ATTRIBUTE_ID (0x0301)
+#define ZCL_CONVERSION_FACTOR_ATTRIBUTE_ID (0x0302)
+#define ZCL_CONVERSION_FACTOR_TRAILING_DIGIT_ATTRIBUTE_ID (0x0303)
+#define ZCL_CALORIFIC_VALUE_ATTRIBUTE_ID (0x0304)
+#define ZCL_CALORIFIC_VALUE_UNIT_ATTRIBUTE_ID (0x0305)
+#define ZCL_CALORIFIC_VALUE_TRAILING_DIGIT_ATTRIBUTE_ID (0x0306)
+#define ZCL_NO_TIER_BLOCK1_PRICE_ATTRIBUTE_ID (0x0400)
+#define ZCL_NO_TIER_BLOCK2_PRICE_ATTRIBUTE_ID (0x0401)
+#define ZCL_NO_TIER_BLOCK3_PRICE_ATTRIBUTE_ID (0x0402)
+#define ZCL_NO_TIER_BLOCK4_PRICE_ATTRIBUTE_ID (0x0403)
+#define ZCL_NO_TIER_BLOCK5_PRICE_ATTRIBUTE_ID (0x0404)
+#define ZCL_NO_TIER_BLOCK6_PRICE_ATTRIBUTE_ID (0x0405)
+#define ZCL_NO_TIER_BLOCK7_PRICE_ATTRIBUTE_ID (0x0406)
+#define ZCL_NO_TIER_BLOCK8_PRICE_ATTRIBUTE_ID (0x0407)
+#define ZCL_NO_TIER_BLOCK9_PRICE_ATTRIBUTE_ID (0x0408)
+#define ZCL_NO_TIER_BLOCK10_PRICE_ATTRIBUTE_ID (0x0409)
+#define ZCL_NO_TIER_BLOCK11_PRICE_ATTRIBUTE_ID (0x040A)
+#define ZCL_NO_TIER_BLOCK12_PRICE_ATTRIBUTE_ID (0x040B)
+#define ZCL_NO_TIER_BLOCK13_PRICE_ATTRIBUTE_ID (0x040C)
+#define ZCL_NO_TIER_BLOCK14_PRICE_ATTRIBUTE_ID (0x040D)
+#define ZCL_NO_TIER_BLOCK15_PRICE_ATTRIBUTE_ID (0x040E)
+#define ZCL_NO_TIER_BLOCK16_PRICE_ATTRIBUTE_ID (0x040F)
+#define ZCL_TIER1_BLOCK1_PRICE_ATTRIBUTE_ID (0x0410)
+#define ZCL_TIER1_BLOCK2_PRICE_ATTRIBUTE_ID (0x0411)
+#define ZCL_TIER1_BLOCK3_PRICE_ATTRIBUTE_ID (0x0412)
+#define ZCL_TIER1_BLOCK4_PRICE_ATTRIBUTE_ID (0x0413)
+#define ZCL_TIER1_BLOCK5_PRICE_ATTRIBUTE_ID (0x0414)
+#define ZCL_TIER1_BLOCK6_PRICE_ATTRIBUTE_ID (0x0415)
+#define ZCL_TIER1_BLOCK7_PRICE_ATTRIBUTE_ID (0x0416)
+#define ZCL_TIER1_BLOCK8_PRICE_ATTRIBUTE_ID (0x0417)
+#define ZCL_TIER1_BLOCK9_PRICE_ATTRIBUTE_ID (0x0418)
+#define ZCL_TIER1_BLOCK10_PRICE_ATTRIBUTE_ID (0x0419)
+#define ZCL_TIER1_BLOCK11_PRICE_ATTRIBUTE_ID (0x041A)
+#define ZCL_TIER1_BLOCK12_PRICE_ATTRIBUTE_ID (0x041B)
+#define ZCL_TIER1_BLOCK13_PRICE_ATTRIBUTE_ID (0x041C)
+#define ZCL_TIER1_BLOCK14_PRICE_ATTRIBUTE_ID (0x041D)
+#define ZCL_TIER1_BLOCK15_PRICE_ATTRIBUTE_ID (0x041E)
+#define ZCL_TIER1_BLOCK16_PRICE_ATTRIBUTE_ID (0x041F)
+#define ZCL_TIER2_BLOCK1_PRICE_ATTRIBUTE_ID (0x0420)
+#define ZCL_TIER2_BLOCK2_PRICE_ATTRIBUTE_ID (0x0421)
+#define ZCL_TIER2_BLOCK3_PRICE_ATTRIBUTE_ID (0x0422)
+#define ZCL_TIER2_BLOCK4_PRICE_ATTRIBUTE_ID (0x0423)
+#define ZCL_TIER2_BLOCK5_PRICE_ATTRIBUTE_ID (0x0424)
+#define ZCL_TIER2_BLOCK6_PRICE_ATTRIBUTE_ID (0x0425)
+#define ZCL_TIER2_BLOCK7_PRICE_ATTRIBUTE_ID (0x0426)
+#define ZCL_TIER2_BLOCK8_PRICE_ATTRIBUTE_ID (0x0427)
+#define ZCL_TIER2_BLOCK9_PRICE_ATTRIBUTE_ID (0x0428)
+#define ZCL_TIER2_BLOCK10_PRICE_ATTRIBUTE_ID (0x0429)
+#define ZCL_TIER2_BLOCK11_PRICE_ATTRIBUTE_ID (0x042A)
+#define ZCL_TIER2_BLOCK12_PRICE_ATTRIBUTE_ID (0x042B)
+#define ZCL_TIER2_BLOCK13_PRICE_ATTRIBUTE_ID (0x042C)
+#define ZCL_TIER2_BLOCK14_PRICE_ATTRIBUTE_ID (0x042D)
+#define ZCL_TIER2_BLOCK15_PRICE_ATTRIBUTE_ID (0x042E)
+#define ZCL_TIER2_BLOCK16_PRICE_ATTRIBUTE_ID (0x042F)
+#define ZCL_TIER3_BLOCK1_PRICE_ATTRIBUTE_ID (0x0430)
+#define ZCL_TIER3_BLOCK2_PRICE_ATTRIBUTE_ID (0x0431)
+#define ZCL_TIER3_BLOCK3_PRICE_ATTRIBUTE_ID (0x0432)
+#define ZCL_TIER3_BLOCK4_PRICE_ATTRIBUTE_ID (0x0433)
+#define ZCL_TIER3_BLOCK5_PRICE_ATTRIBUTE_ID (0x0434)
+#define ZCL_TIER3_BLOCK6_PRICE_ATTRIBUTE_ID (0x0435)
+#define ZCL_TIER3_BLOCK7_PRICE_ATTRIBUTE_ID (0x0436)
+#define ZCL_TIER3_BLOCK8_PRICE_ATTRIBUTE_ID (0x0437)
+#define ZCL_TIER3_BLOCK9_PRICE_ATTRIBUTE_ID (0x0438)
+#define ZCL_TIER3_BLOCK10_PRICE_ATTRIBUTE_ID (0x0439)
+#define ZCL_TIER3_BLOCK11_PRICE_ATTRIBUTE_ID (0x043A)
+#define ZCL_TIER3_BLOCK12_PRICE_ATTRIBUTE_ID (0x043B)
+#define ZCL_TIER3_BLOCK13_PRICE_ATTRIBUTE_ID (0x043C)
+#define ZCL_TIER3_BLOCK14_PRICE_ATTRIBUTE_ID (0x043D)
+#define ZCL_TIER3_BLOCK15_PRICE_ATTRIBUTE_ID (0x043E)
+#define ZCL_TIER3_BLOCK16_PRICE_ATTRIBUTE_ID (0x043F)
+#define ZCL_TIER4_BLOCK1_PRICE_ATTRIBUTE_ID (0x0440)
+#define ZCL_TIER4_BLOCK2_PRICE_ATTRIBUTE_ID (0x0441)
+#define ZCL_TIER4_BLOCK3_PRICE_ATTRIBUTE_ID (0x0442)
+#define ZCL_TIER4_BLOCK4_PRICE_ATTRIBUTE_ID (0x0443)
+#define ZCL_TIER4_BLOCK5_PRICE_ATTRIBUTE_ID (0x0444)
+#define ZCL_TIER4_BLOCK6_PRICE_ATTRIBUTE_ID (0x0445)
+#define ZCL_TIER4_BLOCK7_PRICE_ATTRIBUTE_ID (0x0446)
+#define ZCL_TIER4_BLOCK8_PRICE_ATTRIBUTE_ID (0x0447)
+#define ZCL_TIER4_BLOCK9_PRICE_ATTRIBUTE_ID (0x0448)
+#define ZCL_TIER4_BLOCK10_PRICE_ATTRIBUTE_ID (0x0449)
+#define ZCL_TIER4_BLOCK11_PRICE_ATTRIBUTE_ID (0x044A)
+#define ZCL_TIER4_BLOCK12_PRICE_ATTRIBUTE_ID (0x044B)
+#define ZCL_TIER4_BLOCK13_PRICE_ATTRIBUTE_ID (0x044C)
+#define ZCL_TIER4_BLOCK14_PRICE_ATTRIBUTE_ID (0x044D)
+#define ZCL_TIER4_BLOCK15_PRICE_ATTRIBUTE_ID (0x044E)
+#define ZCL_TIER4_BLOCK16_PRICE_ATTRIBUTE_ID (0x044F)
+#define ZCL_TIER5_BLOCK1_PRICE_ATTRIBUTE_ID (0x0450)
+#define ZCL_TIER5_BLOCK2_PRICE_ATTRIBUTE_ID (0x0451)
+#define ZCL_TIER5_BLOCK3_PRICE_ATTRIBUTE_ID (0x0452)
+#define ZCL_TIER5_BLOCK4_PRICE_ATTRIBUTE_ID (0x0453)
+#define ZCL_TIER5_BLOCK5_PRICE_ATTRIBUTE_ID (0x0454)
+#define ZCL_TIER5_BLOCK6_PRICE_ATTRIBUTE_ID (0x0455)
+#define ZCL_TIER5_BLOCK7_PRICE_ATTRIBUTE_ID (0x0456)
+#define ZCL_TIER5_BLOCK8_PRICE_ATTRIBUTE_ID (0x0457)
+#define ZCL_TIER5_BLOCK9_PRICE_ATTRIBUTE_ID (0x0458)
+#define ZCL_TIER5_BLOCK10_PRICE_ATTRIBUTE_ID (0x0459)
+#define ZCL_TIER5_BLOCK11_PRICE_ATTRIBUTE_ID (0x045A)
+#define ZCL_TIER5_BLOCK12_PRICE_ATTRIBUTE_ID (0x045B)
+#define ZCL_TIER5_BLOCK13_PRICE_ATTRIBUTE_ID (0x045C)
+#define ZCL_TIER5_BLOCK14_PRICE_ATTRIBUTE_ID (0x045D)
+#define ZCL_TIER5_BLOCK15_PRICE_ATTRIBUTE_ID (0x045E)
+#define ZCL_TIER5_BLOCK16_PRICE_ATTRIBUTE_ID (0x045F)
+#define ZCL_TIER6_BLOCK1_PRICE_ATTRIBUTE_ID (0x0460)
+#define ZCL_TIER6_BLOCK2_PRICE_ATTRIBUTE_ID (0x0461)
+#define ZCL_TIER6_BLOCK3_PRICE_ATTRIBUTE_ID (0x0462)
+#define ZCL_TIER6_BLOCK4_PRICE_ATTRIBUTE_ID (0x0463)
+#define ZCL_TIER6_BLOCK5_PRICE_ATTRIBUTE_ID (0x0464)
+#define ZCL_TIER6_BLOCK6_PRICE_ATTRIBUTE_ID (0x0465)
+#define ZCL_TIER6_BLOCK7_PRICE_ATTRIBUTE_ID (0x0466)
+#define ZCL_TIER6_BLOCK8_PRICE_ATTRIBUTE_ID (0x0467)
+#define ZCL_TIER6_BLOCK9_PRICE_ATTRIBUTE_ID (0x0468)
+#define ZCL_TIER6_BLOCK10_PRICE_ATTRIBUTE_ID (0x0469)
+#define ZCL_TIER6_BLOCK11_PRICE_ATTRIBUTE_ID (0x046A)
+#define ZCL_TIER6_BLOCK12_PRICE_ATTRIBUTE_ID (0x046B)
+#define ZCL_TIER6_BLOCK13_PRICE_ATTRIBUTE_ID (0x046C)
+#define ZCL_TIER6_BLOCK14_PRICE_ATTRIBUTE_ID (0x046D)
+#define ZCL_TIER6_BLOCK15_PRICE_ATTRIBUTE_ID (0x046E)
+#define ZCL_TIER6_BLOCK16_PRICE_ATTRIBUTE_ID (0x046F)
+#define ZCL_TIER7_BLOCK1_PRICE_ATTRIBUTE_ID (0x0470)
+#define ZCL_TIER7_BLOCK2_PRICE_ATTRIBUTE_ID (0x0471)
+#define ZCL_TIER7_BLOCK3_PRICE_ATTRIBUTE_ID (0x0472)
+#define ZCL_TIER7_BLOCK4_PRICE_ATTRIBUTE_ID (0x0473)
+#define ZCL_TIER7_BLOCK5_PRICE_ATTRIBUTE_ID (0x0474)
+#define ZCL_TIER7_BLOCK6_PRICE_ATTRIBUTE_ID (0x0475)
+#define ZCL_TIER7_BLOCK7_PRICE_ATTRIBUTE_ID (0x0476)
+#define ZCL_TIER7_BLOCK8_PRICE_ATTRIBUTE_ID (0x0477)
+#define ZCL_TIER7_BLOCK9_PRICE_ATTRIBUTE_ID (0x0478)
+#define ZCL_TIER7_BLOCK10_PRICE_ATTRIBUTE_ID (0x0479)
+#define ZCL_TIER7_BLOCK11_PRICE_ATTRIBUTE_ID (0x047A)
+#define ZCL_TIER7_BLOCK12_PRICE_ATTRIBUTE_ID (0x047B)
+#define ZCL_TIER7_BLOCK13_PRICE_ATTRIBUTE_ID (0x047C)
+#define ZCL_TIER7_BLOCK14_PRICE_ATTRIBUTE_ID (0x047D)
+#define ZCL_TIER7_BLOCK15_PRICE_ATTRIBUTE_ID (0x047E)
+#define ZCL_TIER7_BLOCK16_PRICE_ATTRIBUTE_ID (0x047F)
+#define ZCL_TIER8_BLOCK1_PRICE_ATTRIBUTE_ID (0x0480)
+#define ZCL_TIER8_BLOCK2_PRICE_ATTRIBUTE_ID (0x0481)
+#define ZCL_TIER8_BLOCK3_PRICE_ATTRIBUTE_ID (0x0482)
+#define ZCL_TIER8_BLOCK4_PRICE_ATTRIBUTE_ID (0x0483)
+#define ZCL_TIER8_BLOCK5_PRICE_ATTRIBUTE_ID (0x0484)
+#define ZCL_TIER8_BLOCK6_PRICE_ATTRIBUTE_ID (0x0485)
+#define ZCL_TIER8_BLOCK7_PRICE_ATTRIBUTE_ID (0x0486)
+#define ZCL_TIER8_BLOCK8_PRICE_ATTRIBUTE_ID (0x0487)
+#define ZCL_TIER8_BLOCK9_PRICE_ATTRIBUTE_ID (0x0488)
+#define ZCL_TIER8_BLOCK10_PRICE_ATTRIBUTE_ID (0x0489)
+#define ZCL_TIER8_BLOCK11_PRICE_ATTRIBUTE_ID (0x048A)
+#define ZCL_TIER8_BLOCK12_PRICE_ATTRIBUTE_ID (0x048B)
+#define ZCL_TIER8_BLOCK13_PRICE_ATTRIBUTE_ID (0x048C)
+#define ZCL_TIER8_BLOCK14_PRICE_ATTRIBUTE_ID (0x048D)
+#define ZCL_TIER8_BLOCK15_PRICE_ATTRIBUTE_ID (0x048E)
+#define ZCL_TIER8_BLOCK16_PRICE_ATTRIBUTE_ID (0x048F)
+#define ZCL_TIER9_BLOCK1_PRICE_ATTRIBUTE_ID (0x0490)
+#define ZCL_TIER9_BLOCK2_PRICE_ATTRIBUTE_ID (0x0491)
+#define ZCL_TIER9_BLOCK3_PRICE_ATTRIBUTE_ID (0x0492)
+#define ZCL_TIER9_BLOCK4_PRICE_ATTRIBUTE_ID (0x0493)
+#define ZCL_TIER9_BLOCK5_PRICE_ATTRIBUTE_ID (0x0494)
+#define ZCL_TIER9_BLOCK6_PRICE_ATTRIBUTE_ID (0x0495)
+#define ZCL_TIER9_BLOCK7_PRICE_ATTRIBUTE_ID (0x0496)
+#define ZCL_TIER9_BLOCK8_PRICE_ATTRIBUTE_ID (0x0497)
+#define ZCL_TIER9_BLOCK9_PRICE_ATTRIBUTE_ID (0x0498)
+#define ZCL_TIER9_BLOCK10_PRICE_ATTRIBUTE_ID (0x0499)
+#define ZCL_TIER9_BLOCK11_PRICE_ATTRIBUTE_ID (0x049A)
+#define ZCL_TIER9_BLOCK12_PRICE_ATTRIBUTE_ID (0x049B)
+#define ZCL_TIER9_BLOCK13_PRICE_ATTRIBUTE_ID (0x049C)
+#define ZCL_TIER9_BLOCK14_PRICE_ATTRIBUTE_ID (0x049D)
+#define ZCL_TIER9_BLOCK15_PRICE_ATTRIBUTE_ID (0x049E)
+#define ZCL_TIER9_BLOCK16_PRICE_ATTRIBUTE_ID (0x049F)
+#define ZCL_TIER10_BLOCK1_PRICE_ATTRIBUTE_ID (0x04A0)
+#define ZCL_TIER10_BLOCK2_PRICE_ATTRIBUTE_ID (0x04A1)
+#define ZCL_TIER10_BLOCK3_PRICE_ATTRIBUTE_ID (0x04A2)
+#define ZCL_TIER10_BLOCK4_PRICE_ATTRIBUTE_ID (0x04A3)
+#define ZCL_TIER10_BLOCK5_PRICE_ATTRIBUTE_ID (0x04A4)
+#define ZCL_TIER10_BLOCK6_PRICE_ATTRIBUTE_ID (0x04A5)
+#define ZCL_TIER10_BLOCK7_PRICE_ATTRIBUTE_ID (0x04A6)
+#define ZCL_TIER10_BLOCK8_PRICE_ATTRIBUTE_ID (0x04A7)
+#define ZCL_TIER10_BLOCK9_PRICE_ATTRIBUTE_ID (0x04A8)
+#define ZCL_TIER10_BLOCK10_PRICE_ATTRIBUTE_ID (0x04A9)
+#define ZCL_TIER10_BLOCK11_PRICE_ATTRIBUTE_ID (0x04AA)
+#define ZCL_TIER10_BLOCK12_PRICE_ATTRIBUTE_ID (0x04AB)
+#define ZCL_TIER10_BLOCK13_PRICE_ATTRIBUTE_ID (0x04AC)
+#define ZCL_TIER10_BLOCK14_PRICE_ATTRIBUTE_ID (0x04AD)
+#define ZCL_TIER10_BLOCK15_PRICE_ATTRIBUTE_ID (0x04AE)
+#define ZCL_TIER10_BLOCK16_PRICE_ATTRIBUTE_ID (0x04AF)
+#define ZCL_TIER11_BLOCK1_PRICE_ATTRIBUTE_ID (0x04B0)
+#define ZCL_TIER11_BLOCK2_PRICE_ATTRIBUTE_ID (0x04B1)
+#define ZCL_TIER11_BLOCK3_PRICE_ATTRIBUTE_ID (0x04B2)
+#define ZCL_TIER11_BLOCK4_PRICE_ATTRIBUTE_ID (0x04B3)
+#define ZCL_TIER11_BLOCK5_PRICE_ATTRIBUTE_ID (0x04B4)
+#define ZCL_TIER11_BLOCK6_PRICE_ATTRIBUTE_ID (0x04B5)
+#define ZCL_TIER11_BLOCK7_PRICE_ATTRIBUTE_ID (0x04B6)
+#define ZCL_TIER11_BLOCK8_PRICE_ATTRIBUTE_ID (0x04B7)
+#define ZCL_TIER11_BLOCK9_PRICE_ATTRIBUTE_ID (0x04B8)
+#define ZCL_TIER11_BLOCK10_PRICE_ATTRIBUTE_ID (0x04B9)
+#define ZCL_TIER11_BLOCK11_PRICE_ATTRIBUTE_ID (0x04BA)
+#define ZCL_TIER11_BLOCK12_PRICE_ATTRIBUTE_ID (0x04BB)
+#define ZCL_TIER11_BLOCK13_PRICE_ATTRIBUTE_ID (0x04BC)
+#define ZCL_TIER11_BLOCK14_PRICE_ATTRIBUTE_ID (0x04BD)
+#define ZCL_TIER11_BLOCK15_PRICE_ATTRIBUTE_ID (0x04BE)
+#define ZCL_TIER11_BLOCK16_PRICE_ATTRIBUTE_ID (0x04BF)
+#define ZCL_TIER12_BLOCK1_PRICE_ATTRIBUTE_ID (0x04C0)
+#define ZCL_TIER12_BLOCK2_PRICE_ATTRIBUTE_ID (0x04C1)
+#define ZCL_TIER12_BLOCK3_PRICE_ATTRIBUTE_ID (0x04C2)
+#define ZCL_TIER12_BLOCK4_PRICE_ATTRIBUTE_ID (0x04C3)
+#define ZCL_TIER12_BLOCK5_PRICE_ATTRIBUTE_ID (0x04C4)
+#define ZCL_TIER12_BLOCK6_PRICE_ATTRIBUTE_ID (0x04C5)
+#define ZCL_TIER12_BLOCK7_PRICE_ATTRIBUTE_ID (0x04C6)
+#define ZCL_TIER12_BLOCK8_PRICE_ATTRIBUTE_ID (0x04C7)
+#define ZCL_TIER12_BLOCK9_PRICE_ATTRIBUTE_ID (0x04C8)
+#define ZCL_TIER12_BLOCK10_PRICE_ATTRIBUTE_ID (0x04C9)
+#define ZCL_TIER12_BLOCK11_PRICE_ATTRIBUTE_ID (0x04CA)
+#define ZCL_TIER12_BLOCK12_PRICE_ATTRIBUTE_ID (0x04CB)
+#define ZCL_TIER12_BLOCK13_PRICE_ATTRIBUTE_ID (0x04CC)
+#define ZCL_TIER12_BLOCK14_PRICE_ATTRIBUTE_ID (0x04CD)
+#define ZCL_TIER12_BLOCK15_PRICE_ATTRIBUTE_ID (0x04CE)
+#define ZCL_TIER12_BLOCK16_PRICE_ATTRIBUTE_ID (0x04CF)
+#define ZCL_TIER13_BLOCK1_PRICE_ATTRIBUTE_ID (0x04D0)
+#define ZCL_TIER13_BLOCK2_PRICE_ATTRIBUTE_ID (0x04D1)
+#define ZCL_TIER13_BLOCK3_PRICE_ATTRIBUTE_ID (0x04D2)
+#define ZCL_TIER13_BLOCK4_PRICE_ATTRIBUTE_ID (0x04D3)
+#define ZCL_TIER13_BLOCK5_PRICE_ATTRIBUTE_ID (0x04D4)
+#define ZCL_TIER13_BLOCK6_PRICE_ATTRIBUTE_ID (0x04D5)
+#define ZCL_TIER13_BLOCK7_PRICE_ATTRIBUTE_ID (0x04D6)
+#define ZCL_TIER13_BLOCK8_PRICE_ATTRIBUTE_ID (0x04D7)
+#define ZCL_TIER13_BLOCK9_PRICE_ATTRIBUTE_ID (0x04D8)
+#define ZCL_TIER13_BLOCK10_PRICE_ATTRIBUTE_ID (0x04D9)
+#define ZCL_TIER13_BLOCK11_PRICE_ATTRIBUTE_ID (0x04DA)
+#define ZCL_TIER13_BLOCK12_PRICE_ATTRIBUTE_ID (0x04DB)
+#define ZCL_TIER13_BLOCK13_PRICE_ATTRIBUTE_ID (0x04DC)
+#define ZCL_TIER13_BLOCK14_PRICE_ATTRIBUTE_ID (0x04DD)
+#define ZCL_TIER13_BLOCK15_PRICE_ATTRIBUTE_ID (0x04DE)
+#define ZCL_TIER13_BLOCK16_PRICE_ATTRIBUTE_ID (0x04DF)
+#define ZCL_TIER14_BLOCK1_PRICE_ATTRIBUTE_ID (0x04E0)
+#define ZCL_TIER14_BLOCK2_PRICE_ATTRIBUTE_ID (0x04E1)
+#define ZCL_TIER14_BLOCK3_PRICE_ATTRIBUTE_ID (0x04E2)
+#define ZCL_TIER14_BLOCK4_PRICE_ATTRIBUTE_ID (0x04E3)
+#define ZCL_TIER14_BLOCK5_PRICE_ATTRIBUTE_ID (0x04E4)
+#define ZCL_TIER14_BLOCK6_PRICE_ATTRIBUTE_ID (0x04E5)
+#define ZCL_TIER14_BLOCK7_PRICE_ATTRIBUTE_ID (0x04E6)
+#define ZCL_TIER14_BLOCK8_PRICE_ATTRIBUTE_ID (0x04E7)
+#define ZCL_TIER14_BLOCK9_PRICE_ATTRIBUTE_ID (0x04E8)
+#define ZCL_TIER14_BLOCK10_PRICE_ATTRIBUTE_ID (0x04E9)
+#define ZCL_TIER14_BLOCK11_PRICE_ATTRIBUTE_ID (0x04EA)
+#define ZCL_TIER14_BLOCK12_PRICE_ATTRIBUTE_ID (0x04EB)
+#define ZCL_TIER14_BLOCK13_PRICE_ATTRIBUTE_ID (0x04EC)
+#define ZCL_TIER14_BLOCK14_PRICE_ATTRIBUTE_ID (0x04ED)
+#define ZCL_TIER14_BLOCK15_PRICE_ATTRIBUTE_ID (0x04EE)
+#define ZCL_TIER14_BLOCK16_PRICE_ATTRIBUTE_ID (0x04EF)
+#define ZCL_TIER15_BLOCK1_PRICE_ATTRIBUTE_ID (0x04F0)
+#define ZCL_TIER15_BLOCK2_PRICE_ATTRIBUTE_ID (0x04F1)
+#define ZCL_TIER15_BLOCK3_PRICE_ATTRIBUTE_ID (0x04F2)
+#define ZCL_TIER15_BLOCK4_PRICE_ATTRIBUTE_ID (0x04F3)
+#define ZCL_TIER15_BLOCK5_PRICE_ATTRIBUTE_ID (0x04F4)
+#define ZCL_TIER15_BLOCK6_PRICE_ATTRIBUTE_ID (0x04F5)
+#define ZCL_TIER15_BLOCK7_PRICE_ATTRIBUTE_ID (0x04F6)
+#define ZCL_TIER15_BLOCK8_PRICE_ATTRIBUTE_ID (0x04F7)
+#define ZCL_TIER15_BLOCK9_PRICE_ATTRIBUTE_ID (0x04F8)
+#define ZCL_TIER15_BLOCK10_PRICE_ATTRIBUTE_ID (0x04F9)
+#define ZCL_TIER15_BLOCK11_PRICE_ATTRIBUTE_ID (0x04FA)
+#define ZCL_TIER15_BLOCK12_PRICE_ATTRIBUTE_ID (0x04FB)
+#define ZCL_TIER15_BLOCK13_PRICE_ATTRIBUTE_ID (0x04FC)
+#define ZCL_TIER15_BLOCK14_PRICE_ATTRIBUTE_ID (0x04FD)
+#define ZCL_TIER15_BLOCK15_PRICE_ATTRIBUTE_ID (0x04FE)
+#define ZCL_TIER15_BLOCK16_PRICE_ATTRIBUTE_ID (0x04FF)
+#define ZCL_PRICE_TIER16_ATTRIBUTE_ID (0x050F)
+#define ZCL_PRICE_TIER17_ATTRIBUTE_ID (0x0510)
+#define ZCL_PRICE_TIER18_ATTRIBUTE_ID (0x0511)
+#define ZCL_PRICE_TIER19_ATTRIBUTE_ID (0x0512)
+#define ZCL_PRICE_TIER20_ATTRIBUTE_ID (0x0513)
+#define ZCL_PRICE_TIER21_ATTRIBUTE_ID (0x0514)
+#define ZCL_PRICE_TIER22_ATTRIBUTE_ID (0x0515)
+#define ZCL_PRICE_TIER23_ATTRIBUTE_ID (0x0516)
+#define ZCL_PRICE_TIER24_ATTRIBUTE_ID (0x0517)
+#define ZCL_PRICE_TIER25_ATTRIBUTE_ID (0x0518)
+#define ZCL_PRICE_TIER26_ATTRIBUTE_ID (0x0519)
+#define ZCL_PRICE_TIER27_ATTRIBUTE_ID (0x051A)
+#define ZCL_PRICE_TIER28_ATTRIBUTE_ID (0x051B)
+#define ZCL_PRICE_TIER29_ATTRIBUTE_ID (0x051C)
+#define ZCL_PRICE_TIER30_ATTRIBUTE_ID (0x051D)
+#define ZCL_PRICE_TIER31_ATTRIBUTE_ID (0x051E)
+#define ZCL_PRICE_TIER32_ATTRIBUTE_ID (0x051F)
+#define ZCL_PRICE_TIER33_ATTRIBUTE_ID (0x0520)
+#define ZCL_PRICE_TIER34_ATTRIBUTE_ID (0x0521)
+#define ZCL_PRICE_TIER35_ATTRIBUTE_ID (0x0522)
+#define ZCL_PRICE_TIER36_ATTRIBUTE_ID (0x0523)
+#define ZCL_PRICE_TIER37_ATTRIBUTE_ID (0x0524)
+#define ZCL_PRICE_TIER38_ATTRIBUTE_ID (0x0525)
+#define ZCL_PRICE_TIER39_ATTRIBUTE_ID (0x0526)
+#define ZCL_PRICE_TIER40_ATTRIBUTE_ID (0x0527)
+#define ZCL_PRICE_TIER41_ATTRIBUTE_ID (0x0528)
+#define ZCL_PRICE_TIER42_ATTRIBUTE_ID (0x0529)
+#define ZCL_PRICE_TIER43_ATTRIBUTE_ID (0x052A)
+#define ZCL_PRICE_TIER44_ATTRIBUTE_ID (0x052B)
+#define ZCL_PRICE_TIER45_ATTRIBUTE_ID (0x052C)
+#define ZCL_PRICE_TIER46_ATTRIBUTE_ID (0x052D)
+#define ZCL_PRICE_TIER47_ATTRIBUTE_ID (0x052E)
+#define ZCL_PRICE_TIER48_ATTRIBUTE_ID (0x052F)
+#define ZCL_CPP1_PRICE_ATTRIBUTE_ID (0x05FE)
+#define ZCL_CPP2_PRICE_ATTRIBUTE_ID (0x05FF)
+#define ZCL_TARIFF_LABEL_ATTRIBUTE_ID (0x0610)
+#define ZCL_NUMBER_OF_PRICE_TIERS_IN_USE_ATTRIBUTE_ID (0x0611)
+#define ZCL_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE_ATTRIBUTE_ID (0x0612)
+#define ZCL_TIER_BLOCK_MODE_ATTRIBUTE_ID (0x0613)
+#define ZCL_TARIFF_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0615)
+#define ZCL_TARIFF_CURRENCY_ATTRIBUTE_ID (0x0616)
+#define ZCL_TARIFF_PRICE_TRAILING_DIGIT_ATTRIBUTE_ID (0x0617)
+#define ZCL_TARIFF_RESOLUTION_PERIOD_ATTRIBUTE_ID (0x0619)
+#define ZCL_TARIFF_CO2_ATTRIBUTE_ID (0x0620)
+#define ZCL_TARIFF_CO2_UNIT_ATTRIBUTE_ID (0x0621)
+#define ZCL_TARIFF_CO2_TRAILING_DIGIT_ATTRIBUTE_ID (0x0622)
+#define ZCL_CURRENT_BILLING_PERIOD_START_ATTRIBUTE_ID (0x0700)
+#define ZCL_CURRENT_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x0701)
+#define ZCL_LAST_BILLING_PERIOD_START_ATTRIBUTE_ID (0x0702)
+#define ZCL_LAST_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x0703)
+#define ZCL_LAST_BILLING_PERIOD_CONSOLIDATED_BILL_ATTRIBUTE_ID (0x0704)
+#define ZCL_CREDIT_PAYMENT_DUE_DATE_ATTRIBUTE_ID (0x0800)
+#define ZCL_CREDIT_PAYMENT_STATUS_ATTRIBUTE_ID (0x0801)
+#define ZCL_CREDIT_PAYMENT_OVER_DUE_AMOUNT_ATTRIBUTE_ID (0x0802)
+#define ZCL_PAYMENT_DISCOUNT_ATTRIBUTE_ID (0x080A)
+#define ZCL_PAYMENT_DISCOUNT_PERIOD_ATTRIBUTE_ID (0x080B)
+#define ZCL_CREDIT_PAYMENT_1_ATTRIBUTE_ID (0x0810)
+#define ZCL_CREDIT_PAYMENT_DATE_1_ATTRIBUTE_ID (0x0811)
+#define ZCL_CREDIT_PAYMENT_REF_1_ATTRIBUTE_ID (0x0812)
+#define ZCL_CREDIT_PAYMENT_2_ATTRIBUTE_ID (0x0820)
+#define ZCL_CREDIT_PAYMENT_DATE_2_ATTRIBUTE_ID (0x0821)
+#define ZCL_CREDIT_PAYMENT_REF_2_ATTRIBUTE_ID (0x0822)
+#define ZCL_CREDIT_PAYMENT_3_ATTRIBUTE_ID (0x0830)
+#define ZCL_CREDIT_PAYMENT_DATE_3_ATTRIBUTE_ID (0x0831)
+#define ZCL_CREDIT_PAYMENT_REF_3_ATTRIBUTE_ID (0x0832)
+#define ZCL_CREDIT_PAYMENT_4_ATTRIBUTE_ID (0x0840)
+#define ZCL_CREDIT_PAYMENT_DATE_4_ATTRIBUTE_ID (0x0841)
+#define ZCL_CREDIT_PAYMENT_REF_4_ATTRIBUTE_ID (0x0842)
+#define ZCL_CREDIT_PAYMENT_5_ATTRIBUTE_ID (0x0850)
+#define ZCL_CREDIT_PAYMENT_DATE_5_ATTRIBUTE_ID (0x0851)
+#define ZCL_CREDIT_PAYMENT_REF_5_ATTRIBUTE_ID (0x0852)
+#define ZCL_RX_TIER1_PRICE_LABEL_ATTRIBUTE_ID (0x8000)
+#define ZCL_RX_TIER2_PRICE_LABEL_ATTRIBUTE_ID (0x8001)
+#define ZCL_RX_TIER3_PRICE_LABEL_ATTRIBUTE_ID (0x8002)
+#define ZCL_RX_TIER4_PRICE_LABEL_ATTRIBUTE_ID (0x8003)
+#define ZCL_RX_TIER5_PRICE_LABEL_ATTRIBUTE_ID (0x8004)
+#define ZCL_RX_TIER6_PRICE_LABEL_ATTRIBUTE_ID (0x8005)
+#define ZCL_RX_TIER7_PRICE_LABEL_ATTRIBUTE_ID (0x8006)
+#define ZCL_RX_TIER8_PRICE_LABEL_ATTRIBUTE_ID (0x8007)
+#define ZCL_RX_TIER9_PRICE_LABEL_ATTRIBUTE_ID (0x8008)
+#define ZCL_RX_TIER10_PRICE_LABEL_ATTRIBUTE_ID (0x8009)
+#define ZCL_RX_TIER11_PRICE_LABEL_ATTRIBUTE_ID (0x800A)
+#define ZCL_RX_TIER12_PRICE_LABEL_ATTRIBUTE_ID (0x800B)
+#define ZCL_RX_TIER13_PRICE_LABEL_ATTRIBUTE_ID (0x800C)
+#define ZCL_RX_TIER14_PRICE_LABEL_ATTRIBUTE_ID (0x800D)
+#define ZCL_RX_TIER15_PRICE_LABEL_ATTRIBUTE_ID (0x800E)
+#define ZCL_RX_TIER16_PRICE_LABEL_ATTRIBUTE_ID (0x800F)
+#define ZCL_RX_TIER17_PRICE_LABEL_ATTRIBUTE_ID (0x8010)
+#define ZCL_RX_TIER18_PRICE_LABEL_ATTRIBUTE_ID (0x8011)
+#define ZCL_RX_TIER19_PRICE_LABEL_ATTRIBUTE_ID (0x8012)
+#define ZCL_RX_TIER20_PRICE_LABEL_ATTRIBUTE_ID (0x8013)
+#define ZCL_RX_TIER21_PRICE_LABEL_ATTRIBUTE_ID (0x8014)
+#define ZCL_RX_TIER22_PRICE_LABEL_ATTRIBUTE_ID (0x8015)
+#define ZCL_RX_TIER23_PRICE_LABEL_ATTRIBUTE_ID (0x8016)
+#define ZCL_RX_TIER24_PRICE_LABEL_ATTRIBUTE_ID (0x8017)
+#define ZCL_RX_TIER25_PRICE_LABEL_ATTRIBUTE_ID (0x8018)
+#define ZCL_RX_TIER26_PRICE_LABEL_ATTRIBUTE_ID (0x8019)
+#define ZCL_RX_TIER27_PRICE_LABEL_ATTRIBUTE_ID (0x801A)
+#define ZCL_RX_TIER28_PRICE_LABEL_ATTRIBUTE_ID (0x801B)
+#define ZCL_RX_TIER29_PRICE_LABEL_ATTRIBUTE_ID (0x801C)
+#define ZCL_RX_TIER30_PRICE_LABEL_ATTRIBUTE_ID (0x801D)
+#define ZCL_RX_TIER31_PRICE_LABEL_ATTRIBUTE_ID (0x801E)
+#define ZCL_RX_TIER32_PRICE_LABEL_ATTRIBUTE_ID (0x801F)
+#define ZCL_RX_TIER33_PRICE_LABEL_ATTRIBUTE_ID (0x8020)
+#define ZCL_RX_TIER34_PRICE_LABEL_ATTRIBUTE_ID (0x8021)
+#define ZCL_RX_TIER35_PRICE_LABEL_ATTRIBUTE_ID (0x8022)
+#define ZCL_RX_TIER36_PRICE_LABEL_ATTRIBUTE_ID (0x8023)
+#define ZCL_RX_TIER37_PRICE_LABEL_ATTRIBUTE_ID (0x8024)
+#define ZCL_RX_TIER38_PRICE_LABEL_ATTRIBUTE_ID (0x8025)
+#define ZCL_RX_TIER39_PRICE_LABEL_ATTRIBUTE_ID (0x8026)
+#define ZCL_RX_TIER40_PRICE_LABEL_ATTRIBUTE_ID (0x8027)
+#define ZCL_RX_TIER41_PRICE_LABEL_ATTRIBUTE_ID (0x8028)
+#define ZCL_RX_TIER42_PRICE_LABEL_ATTRIBUTE_ID (0x8029)
+#define ZCL_RX_TIER43_PRICE_LABEL_ATTRIBUTE_ID (0x802A)
+#define ZCL_RX_TIER44_PRICE_LABEL_ATTRIBUTE_ID (0x802B)
+#define ZCL_RX_TIER45_PRICE_LABEL_ATTRIBUTE_ID (0x802C)
+#define ZCL_RX_TIER46_PRICE_LABEL_ATTRIBUTE_ID (0x802D)
+#define ZCL_RX_TIER47_PRICE_LABEL_ATTRIBUTE_ID (0x802E)
+#define ZCL_RX_TIER48_PRICE_LABEL_ATTRIBUTE_ID (0x802F)
+#define ZCL_RX_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x8100)
+#define ZCL_RX_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x8101)
+#define ZCL_RX_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x8102)
+#define ZCL_RX_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x8103)
+#define ZCL_RX_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x8104)
+#define ZCL_RX_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x8105)
+#define ZCL_RX_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x8106)
+#define ZCL_RX_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x8107)
+#define ZCL_RX_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x8108)
+#define ZCL_RX_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x8109)
+#define ZCL_RX_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x810A)
+#define ZCL_RX_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x810B)
+#define ZCL_RX_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x810C)
+#define ZCL_RX_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x810D)
+#define ZCL_RX_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x810E)
+#define ZCL_RX_START_OF_BLOCK_PERIOD_ATTRIBUTE_ID (0x8200)
+#define ZCL_RX_BLOCK_PERIOD_DURATION_ATTRIBUTE_ID (0x8201)
+#define ZCL_RX_THRESHOLD_MULTIPLIER_ATTRIBUTE_ID (0x8202)
+#define ZCL_RX_THRESHOLD_DIVISOR_ATTRIBUTE_ID (0x8203)
+#define ZCL_RX_NO_TIER_BLOCK1_PRICE_ATTRIBUTE_ID (0x8400)
+#define ZCL_RX_NO_TIER_BLOCK2_PRICE_ATTRIBUTE_ID (0x8401)
+#define ZCL_RX_NO_TIER_BLOCK3_PRICE_ATTRIBUTE_ID (0x8402)
+#define ZCL_RX_NO_TIER_BLOCK4_PRICE_ATTRIBUTE_ID (0x8403)
+#define ZCL_RX_NO_TIER_BLOCK5_PRICE_ATTRIBUTE_ID (0x8404)
+#define ZCL_RX_NO_TIER_BLOCK6_PRICE_ATTRIBUTE_ID (0x8405)
+#define ZCL_RX_NO_TIER_BLOCK7_PRICE_ATTRIBUTE_ID (0x8406)
+#define ZCL_RX_NO_TIER_BLOCK8_PRICE_ATTRIBUTE_ID (0x8407)
+#define ZCL_RX_NO_TIER_BLOCK9_PRICE_ATTRIBUTE_ID (0x8408)
+#define ZCL_RX_NO_TIER_BLOCK10_PRICE_ATTRIBUTE_ID (0x8409)
+#define ZCL_RX_NO_TIER_BLOCK11_PRICE_ATTRIBUTE_ID (0x840A)
+#define ZCL_RX_NO_TIER_BLOCK12_PRICE_ATTRIBUTE_ID (0x840B)
+#define ZCL_RX_NO_TIER_BLOCK13_PRICE_ATTRIBUTE_ID (0x840C)
+#define ZCL_RX_NO_TIER_BLOCK14_PRICE_ATTRIBUTE_ID (0x840D)
+#define ZCL_RX_NO_TIER_BLOCK15_PRICE_ATTRIBUTE_ID (0x840E)
+#define ZCL_RX_NO_TIER_BLOCK16_PRICE_ATTRIBUTE_ID (0x840F)
+#define ZCL_RX_TIER1_BLOCK1_PRICE_ATTRIBUTE_ID (0x8410)
+#define ZCL_RX_TIER1_BLOCK2_PRICE_ATTRIBUTE_ID (0x8411)
+#define ZCL_RX_TIER1_BLOCK3_PRICE_ATTRIBUTE_ID (0x8412)
+#define ZCL_RX_TIER1_BLOCK4_PRICE_ATTRIBUTE_ID (0x8413)
+#define ZCL_RX_TIER1_BLOCK5_PRICE_ATTRIBUTE_ID (0x8414)
+#define ZCL_RX_TIER1_BLOCK6_PRICE_ATTRIBUTE_ID (0x8415)
+#define ZCL_RX_TIER1_BLOCK7_PRICE_ATTRIBUTE_ID (0x8416)
+#define ZCL_RX_TIER1_BLOCK8_PRICE_ATTRIBUTE_ID (0x8417)
+#define ZCL_RX_TIER1_BLOCK9_PRICE_ATTRIBUTE_ID (0x8418)
+#define ZCL_RX_TIER1_BLOCK10_PRICE_ATTRIBUTE_ID (0x8419)
+#define ZCL_RX_TIER1_BLOCK11_PRICE_ATTRIBUTE_ID (0x841A)
+#define ZCL_RX_TIER1_BLOCK12_PRICE_ATTRIBUTE_ID (0x841B)
+#define ZCL_RX_TIER1_BLOCK13_PRICE_ATTRIBUTE_ID (0x841C)
+#define ZCL_RX_TIER1_BLOCK14_PRICE_ATTRIBUTE_ID (0x841D)
+#define ZCL_RX_TIER1_BLOCK15_PRICE_ATTRIBUTE_ID (0x841E)
+#define ZCL_RX_TIER1_BLOCK16_PRICE_ATTRIBUTE_ID (0x841F)
+#define ZCL_RX_TIER2_BLOCK1_PRICE_ATTRIBUTE_ID (0x8420)
+#define ZCL_RX_TIER2_BLOCK2_PRICE_ATTRIBUTE_ID (0x8421)
+#define ZCL_RX_TIER2_BLOCK3_PRICE_ATTRIBUTE_ID (0x8422)
+#define ZCL_RX_TIER2_BLOCK4_PRICE_ATTRIBUTE_ID (0x8423)
+#define ZCL_RX_TIER2_BLOCK5_PRICE_ATTRIBUTE_ID (0x8424)
+#define ZCL_RX_TIER2_BLOCK6_PRICE_ATTRIBUTE_ID (0x8425)
+#define ZCL_RX_TIER2_BLOCK7_PRICE_ATTRIBUTE_ID (0x8426)
+#define ZCL_RX_TIER2_BLOCK8_PRICE_ATTRIBUTE_ID (0x8427)
+#define ZCL_RX_TIER2_BLOCK9_PRICE_ATTRIBUTE_ID (0x8428)
+#define ZCL_RX_TIER2_BLOCK10_PRICE_ATTRIBUTE_ID (0x8429)
+#define ZCL_RX_TIER2_BLOCK11_PRICE_ATTRIBUTE_ID (0x842A)
+#define ZCL_RX_TIER2_BLOCK12_PRICE_ATTRIBUTE_ID (0x842B)
+#define ZCL_RX_TIER2_BLOCK13_PRICE_ATTRIBUTE_ID (0x842C)
+#define ZCL_RX_TIER2_BLOCK14_PRICE_ATTRIBUTE_ID (0x842D)
+#define ZCL_RX_TIER2_BLOCK15_PRICE_ATTRIBUTE_ID (0x842E)
+#define ZCL_RX_TIER2_BLOCK16_PRICE_ATTRIBUTE_ID (0x842F)
+#define ZCL_RX_TIER3_BLOCK1_PRICE_ATTRIBUTE_ID (0x8430)
+#define ZCL_RX_TIER3_BLOCK2_PRICE_ATTRIBUTE_ID (0x8431)
+#define ZCL_RX_TIER3_BLOCK3_PRICE_ATTRIBUTE_ID (0x8432)
+#define ZCL_RX_TIER3_BLOCK4_PRICE_ATTRIBUTE_ID (0x8433)
+#define ZCL_RX_TIER3_BLOCK5_PRICE_ATTRIBUTE_ID (0x8434)
+#define ZCL_RX_TIER3_BLOCK6_PRICE_ATTRIBUTE_ID (0x8435)
+#define ZCL_RX_TIER3_BLOCK7_PRICE_ATTRIBUTE_ID (0x8436)
+#define ZCL_RX_TIER3_BLOCK8_PRICE_ATTRIBUTE_ID (0x8437)
+#define ZCL_RX_TIER3_BLOCK9_PRICE_ATTRIBUTE_ID (0x8438)
+#define ZCL_RX_TIER3_BLOCK10_PRICE_ATTRIBUTE_ID (0x8439)
+#define ZCL_RX_TIER3_BLOCK11_PRICE_ATTRIBUTE_ID (0x843A)
+#define ZCL_RX_TIER3_BLOCK12_PRICE_ATTRIBUTE_ID (0x843B)
+#define ZCL_RX_TIER3_BLOCK13_PRICE_ATTRIBUTE_ID (0x843C)
+#define ZCL_RX_TIER3_BLOCK14_PRICE_ATTRIBUTE_ID (0x843D)
+#define ZCL_RX_TIER3_BLOCK15_PRICE_ATTRIBUTE_ID (0x843E)
+#define ZCL_RX_TIER3_BLOCK16_PRICE_ATTRIBUTE_ID (0x843F)
+#define ZCL_RX_TIER4_BLOCK1_PRICE_ATTRIBUTE_ID (0x8440)
+#define ZCL_RX_TIER4_BLOCK2_PRICE_ATTRIBUTE_ID (0x8441)
+#define ZCL_RX_TIER4_BLOCK3_PRICE_ATTRIBUTE_ID (0x8442)
+#define ZCL_RX_TIER4_BLOCK4_PRICE_ATTRIBUTE_ID (0x8443)
+#define ZCL_RX_TIER4_BLOCK5_PRICE_ATTRIBUTE_ID (0x8444)
+#define ZCL_RX_TIER4_BLOCK6_PRICE_ATTRIBUTE_ID (0x8445)
+#define ZCL_RX_TIER4_BLOCK7_PRICE_ATTRIBUTE_ID (0x8446)
+#define ZCL_RX_TIER4_BLOCK8_PRICE_ATTRIBUTE_ID (0x8447)
+#define ZCL_RX_TIER4_BLOCK9_PRICE_ATTRIBUTE_ID (0x8448)
+#define ZCL_RX_TIER4_BLOCK10_PRICE_ATTRIBUTE_ID (0x8449)
+#define ZCL_RX_TIER4_BLOCK11_PRICE_ATTRIBUTE_ID (0x844A)
+#define ZCL_RX_TIER4_BLOCK12_PRICE_ATTRIBUTE_ID (0x844B)
+#define ZCL_RX_TIER4_BLOCK13_PRICE_ATTRIBUTE_ID (0x844C)
+#define ZCL_RX_TIER4_BLOCK14_PRICE_ATTRIBUTE_ID (0x844D)
+#define ZCL_RX_TIER4_BLOCK15_PRICE_ATTRIBUTE_ID (0x844E)
+#define ZCL_RX_TIER4_BLOCK16_PRICE_ATTRIBUTE_ID (0x844F)
+#define ZCL_RX_TIER5_BLOCK1_PRICE_ATTRIBUTE_ID (0x8450)
+#define ZCL_RX_TIER5_BLOCK2_PRICE_ATTRIBUTE_ID (0x8451)
+#define ZCL_RX_TIER5_BLOCK3_PRICE_ATTRIBUTE_ID (0x8452)
+#define ZCL_RX_TIER5_BLOCK4_PRICE_ATTRIBUTE_ID (0x8453)
+#define ZCL_RX_TIER5_BLOCK5_PRICE_ATTRIBUTE_ID (0x8454)
+#define ZCL_RX_TIER5_BLOCK6_PRICE_ATTRIBUTE_ID (0x8455)
+#define ZCL_RX_TIER5_BLOCK7_PRICE_ATTRIBUTE_ID (0x8456)
+#define ZCL_RX_TIER5_BLOCK8_PRICE_ATTRIBUTE_ID (0x8457)
+#define ZCL_RX_TIER5_BLOCK9_PRICE_ATTRIBUTE_ID (0x8458)
+#define ZCL_RX_TIER5_BLOCK10_PRICE_ATTRIBUTE_ID (0x8459)
+#define ZCL_RX_TIER5_BLOCK11_PRICE_ATTRIBUTE_ID (0x845A)
+#define ZCL_RX_TIER5_BLOCK12_PRICE_ATTRIBUTE_ID (0x845B)
+#define ZCL_RX_TIER5_BLOCK13_PRICE_ATTRIBUTE_ID (0x845C)
+#define ZCL_RX_TIER5_BLOCK14_PRICE_ATTRIBUTE_ID (0x845D)
+#define ZCL_RX_TIER5_BLOCK15_PRICE_ATTRIBUTE_ID (0x845E)
+#define ZCL_RX_TIER5_BLOCK16_PRICE_ATTRIBUTE_ID (0x845F)
+#define ZCL_RX_TIER6_BLOCK1_PRICE_ATTRIBUTE_ID (0x8460)
+#define ZCL_RX_TIER6_BLOCK2_PRICE_ATTRIBUTE_ID (0x8461)
+#define ZCL_RX_TIER6_BLOCK3_PRICE_ATTRIBUTE_ID (0x8462)
+#define ZCL_RX_TIER6_BLOCK4_PRICE_ATTRIBUTE_ID (0x8463)
+#define ZCL_RX_TIER6_BLOCK5_PRICE_ATTRIBUTE_ID (0x8464)
+#define ZCL_RX_TIER6_BLOCK6_PRICE_ATTRIBUTE_ID (0x8465)
+#define ZCL_RX_TIER6_BLOCK7_PRICE_ATTRIBUTE_ID (0x8466)
+#define ZCL_RX_TIER6_BLOCK8_PRICE_ATTRIBUTE_ID (0x8467)
+#define ZCL_RX_TIER6_BLOCK9_PRICE_ATTRIBUTE_ID (0x8468)
+#define ZCL_RX_TIER6_BLOCK10_PRICE_ATTRIBUTE_ID (0x8469)
+#define ZCL_RX_TIER6_BLOCK11_PRICE_ATTRIBUTE_ID (0x846A)
+#define ZCL_RX_TIER6_BLOCK12_PRICE_ATTRIBUTE_ID (0x846B)
+#define ZCL_RX_TIER6_BLOCK13_PRICE_ATTRIBUTE_ID (0x846C)
+#define ZCL_RX_TIER6_BLOCK14_PRICE_ATTRIBUTE_ID (0x846D)
+#define ZCL_RX_TIER6_BLOCK15_PRICE_ATTRIBUTE_ID (0x846E)
+#define ZCL_RX_TIER6_BLOCK16_PRICE_ATTRIBUTE_ID (0x846F)
+#define ZCL_RX_TIER7_BLOCK1_PRICE_ATTRIBUTE_ID (0x8470)
+#define ZCL_RX_TIER7_BLOCK2_PRICE_ATTRIBUTE_ID (0x8471)
+#define ZCL_RX_TIER7_BLOCK3_PRICE_ATTRIBUTE_ID (0x8472)
+#define ZCL_RX_TIER7_BLOCK4_PRICE_ATTRIBUTE_ID (0x8473)
+#define ZCL_RX_TIER7_BLOCK5_PRICE_ATTRIBUTE_ID (0x8474)
+#define ZCL_RX_TIER7_BLOCK6_PRICE_ATTRIBUTE_ID (0x8475)
+#define ZCL_RX_TIER7_BLOCK7_PRICE_ATTRIBUTE_ID (0x8476)
+#define ZCL_RX_TIER7_BLOCK8_PRICE_ATTRIBUTE_ID (0x8477)
+#define ZCL_RX_TIER7_BLOCK9_PRICE_ATTRIBUTE_ID (0x8478)
+#define ZCL_RX_TIER7_BLOCK10_PRICE_ATTRIBUTE_ID (0x8479)
+#define ZCL_RX_TIER7_BLOCK11_PRICE_ATTRIBUTE_ID (0x847A)
+#define ZCL_RX_TIER7_BLOCK12_PRICE_ATTRIBUTE_ID (0x847B)
+#define ZCL_RX_TIER7_BLOCK13_PRICE_ATTRIBUTE_ID (0x847C)
+#define ZCL_RX_TIER7_BLOCK14_PRICE_ATTRIBUTE_ID (0x847D)
+#define ZCL_RX_TIER7_BLOCK15_PRICE_ATTRIBUTE_ID (0x847E)
+#define ZCL_RX_TIER7_BLOCK16_PRICE_ATTRIBUTE_ID (0x847F)
+#define ZCL_RX_TIER8_BLOCK1_PRICE_ATTRIBUTE_ID (0x8480)
+#define ZCL_RX_TIER8_BLOCK2_PRICE_ATTRIBUTE_ID (0x8481)
+#define ZCL_RX_TIER8_BLOCK3_PRICE_ATTRIBUTE_ID (0x8482)
+#define ZCL_RX_TIER8_BLOCK4_PRICE_ATTRIBUTE_ID (0x8483)
+#define ZCL_RX_TIER8_BLOCK5_PRICE_ATTRIBUTE_ID (0x8484)
+#define ZCL_RX_TIER8_BLOCK6_PRICE_ATTRIBUTE_ID (0x8485)
+#define ZCL_RX_TIER8_BLOCK7_PRICE_ATTRIBUTE_ID (0x8486)
+#define ZCL_RX_TIER8_BLOCK8_PRICE_ATTRIBUTE_ID (0x8487)
+#define ZCL_RX_TIER8_BLOCK9_PRICE_ATTRIBUTE_ID (0x8488)
+#define ZCL_RX_TIER8_BLOCK10_PRICE_ATTRIBUTE_ID (0x8489)
+#define ZCL_RX_TIER8_BLOCK11_PRICE_ATTRIBUTE_ID (0x848A)
+#define ZCL_RX_TIER8_BLOCK12_PRICE_ATTRIBUTE_ID (0x848B)
+#define ZCL_RX_TIER8_BLOCK13_PRICE_ATTRIBUTE_ID (0x848C)
+#define ZCL_RX_TIER8_BLOCK14_PRICE_ATTRIBUTE_ID (0x848D)
+#define ZCL_RX_TIER8_BLOCK15_PRICE_ATTRIBUTE_ID (0x848E)
+#define ZCL_RX_TIER8_BLOCK16_PRICE_ATTRIBUTE_ID (0x848F)
+#define ZCL_RX_TIER9_BLOCK1_PRICE_ATTRIBUTE_ID (0x8490)
+#define ZCL_RX_TIER9_BLOCK2_PRICE_ATTRIBUTE_ID (0x8491)
+#define ZCL_RX_TIER9_BLOCK3_PRICE_ATTRIBUTE_ID (0x8492)
+#define ZCL_RX_TIER9_BLOCK4_PRICE_ATTRIBUTE_ID (0x8493)
+#define ZCL_RX_TIER9_BLOCK5_PRICE_ATTRIBUTE_ID (0x8494)
+#define ZCL_RX_TIER9_BLOCK6_PRICE_ATTRIBUTE_ID (0x8495)
+#define ZCL_RX_TIER9_BLOCK7_PRICE_ATTRIBUTE_ID (0x8496)
+#define ZCL_RX_TIER9_BLOCK8_PRICE_ATTRIBUTE_ID (0x8497)
+#define ZCL_RX_TIER9_BLOCK9_PRICE_ATTRIBUTE_ID (0x8498)
+#define ZCL_RX_TIER9_BLOCK10_PRICE_ATTRIBUTE_ID (0x8499)
+#define ZCL_RX_TIER9_BLOCK11_PRICE_ATTRIBUTE_ID (0x849A)
+#define ZCL_RX_TIER9_BLOCK12_PRICE_ATTRIBUTE_ID (0x849B)
+#define ZCL_RX_TIER9_BLOCK13_PRICE_ATTRIBUTE_ID (0x849C)
+#define ZCL_RX_TIER9_BLOCK14_PRICE_ATTRIBUTE_ID (0x849D)
+#define ZCL_RX_TIER9_BLOCK15_PRICE_ATTRIBUTE_ID (0x849E)
+#define ZCL_RX_TIER9_BLOCK16_PRICE_ATTRIBUTE_ID (0x849F)
+#define ZCL_RX_TIER10_BLOCK1_PRICE_ATTRIBUTE_ID (0x84A0)
+#define ZCL_RX_TIER10_BLOCK2_PRICE_ATTRIBUTE_ID (0x84A1)
+#define ZCL_RX_TIER10_BLOCK3_PRICE_ATTRIBUTE_ID (0x84A2)
+#define ZCL_RX_TIER10_BLOCK4_PRICE_ATTRIBUTE_ID (0x84A3)
+#define ZCL_RX_TIER10_BLOCK5_PRICE_ATTRIBUTE_ID (0x84A4)
+#define ZCL_RX_TIER10_BLOCK6_PRICE_ATTRIBUTE_ID (0x84A5)
+#define ZCL_RX_TIER10_BLOCK7_PRICE_ATTRIBUTE_ID (0x84A6)
+#define ZCL_RX_TIER10_BLOCK8_PRICE_ATTRIBUTE_ID (0x84A7)
+#define ZCL_RX_TIER10_BLOCK9_PRICE_ATTRIBUTE_ID (0x84A8)
+#define ZCL_RX_TIER10_BLOCK10_PRICE_ATTRIBUTE_ID (0x84A9)
+#define ZCL_RX_TIER10_BLOCK11_PRICE_ATTRIBUTE_ID (0x84AA)
+#define ZCL_RX_TIER10_BLOCK12_PRICE_ATTRIBUTE_ID (0x84AB)
+#define ZCL_RX_TIER10_BLOCK13_PRICE_ATTRIBUTE_ID (0x84AC)
+#define ZCL_RX_TIER10_BLOCK14_PRICE_ATTRIBUTE_ID (0x84AD)
+#define ZCL_RX_TIER10_BLOCK15_PRICE_ATTRIBUTE_ID (0x84AE)
+#define ZCL_RX_TIER10_BLOCK16_PRICE_ATTRIBUTE_ID (0x84AF)
+#define ZCL_RX_TIER11_BLOCK1_PRICE_ATTRIBUTE_ID (0x84B0)
+#define ZCL_RX_TIER11_BLOCK2_PRICE_ATTRIBUTE_ID (0x84B1)
+#define ZCL_RX_TIER11_BLOCK3_PRICE_ATTRIBUTE_ID (0x84B2)
+#define ZCL_RX_TIER11_BLOCK4_PRICE_ATTRIBUTE_ID (0x84B3)
+#define ZCL_RX_TIER11_BLOCK5_PRICE_ATTRIBUTE_ID (0x84B4)
+#define ZCL_RX_TIER11_BLOCK6_PRICE_ATTRIBUTE_ID (0x84B5)
+#define ZCL_RX_TIER11_BLOCK7_PRICE_ATTRIBUTE_ID (0x84B6)
+#define ZCL_RX_TIER11_BLOCK8_PRICE_ATTRIBUTE_ID (0x84B7)
+#define ZCL_RX_TIER11_BLOCK9_PRICE_ATTRIBUTE_ID (0x84B8)
+#define ZCL_RX_TIER11_BLOCK10_PRICE_ATTRIBUTE_ID (0x84B9)
+#define ZCL_RX_TIER11_BLOCK11_PRICE_ATTRIBUTE_ID (0x84BA)
+#define ZCL_RX_TIER11_BLOCK12_PRICE_ATTRIBUTE_ID (0x84BB)
+#define ZCL_RX_TIER11_BLOCK13_PRICE_ATTRIBUTE_ID (0x84BC)
+#define ZCL_RX_TIER11_BLOCK14_PRICE_ATTRIBUTE_ID (0x84BD)
+#define ZCL_RX_TIER11_BLOCK15_PRICE_ATTRIBUTE_ID (0x84BE)
+#define ZCL_RX_TIER11_BLOCK16_PRICE_ATTRIBUTE_ID (0x84BF)
+#define ZCL_RX_TIER12_BLOCK1_PRICE_ATTRIBUTE_ID (0x84C0)
+#define ZCL_RX_TIER12_BLOCK2_PRICE_ATTRIBUTE_ID (0x84C1)
+#define ZCL_RX_TIER12_BLOCK3_PRICE_ATTRIBUTE_ID (0x84C2)
+#define ZCL_RX_TIER12_BLOCK4_PRICE_ATTRIBUTE_ID (0x84C3)
+#define ZCL_RX_TIER12_BLOCK5_PRICE_ATTRIBUTE_ID (0x84C4)
+#define ZCL_RX_TIER12_BLOCK6_PRICE_ATTRIBUTE_ID (0x84C5)
+#define ZCL_RX_TIER12_BLOCK7_PRICE_ATTRIBUTE_ID (0x84C6)
+#define ZCL_RX_TIER12_BLOCK8_PRICE_ATTRIBUTE_ID (0x84C7)
+#define ZCL_RX_TIER12_BLOCK9_PRICE_ATTRIBUTE_ID (0x84C8)
+#define ZCL_RX_TIER12_BLOCK10_PRICE_ATTRIBUTE_ID (0x84C9)
+#define ZCL_RX_TIER12_BLOCK11_PRICE_ATTRIBUTE_ID (0x84CA)
+#define ZCL_RX_TIER12_BLOCK12_PRICE_ATTRIBUTE_ID (0x84CB)
+#define ZCL_RX_TIER12_BLOCK13_PRICE_ATTRIBUTE_ID (0x84CC)
+#define ZCL_RX_TIER12_BLOCK14_PRICE_ATTRIBUTE_ID (0x84CD)
+#define ZCL_RX_TIER12_BLOCK15_PRICE_ATTRIBUTE_ID (0x84CE)
+#define ZCL_RX_TIER12_BLOCK16_PRICE_ATTRIBUTE_ID (0x84CF)
+#define ZCL_RX_TIER13_BLOCK1_PRICE_ATTRIBUTE_ID (0x84D0)
+#define ZCL_RX_TIER13_BLOCK2_PRICE_ATTRIBUTE_ID (0x84D1)
+#define ZCL_RX_TIER13_BLOCK3_PRICE_ATTRIBUTE_ID (0x84D2)
+#define ZCL_RX_TIER13_BLOCK4_PRICE_ATTRIBUTE_ID (0x84D3)
+#define ZCL_RX_TIER13_BLOCK5_PRICE_ATTRIBUTE_ID (0x84D4)
+#define ZCL_RX_TIER13_BLOCK6_PRICE_ATTRIBUTE_ID (0x84D5)
+#define ZCL_RX_TIER13_BLOCK7_PRICE_ATTRIBUTE_ID (0x84D6)
+#define ZCL_RX_TIER13_BLOCK8_PRICE_ATTRIBUTE_ID (0x84D7)
+#define ZCL_RX_TIER13_BLOCK9_PRICE_ATTRIBUTE_ID (0x84D8)
+#define ZCL_RX_TIER13_BLOCK10_PRICE_ATTRIBUTE_ID (0x84D9)
+#define ZCL_RX_TIER13_BLOCK11_PRICE_ATTRIBUTE_ID (0x84DA)
+#define ZCL_RX_TIER13_BLOCK12_PRICE_ATTRIBUTE_ID (0x84DB)
+#define ZCL_RX_TIER13_BLOCK13_PRICE_ATTRIBUTE_ID (0x84DC)
+#define ZCL_RX_TIER13_BLOCK14_PRICE_ATTRIBUTE_ID (0x84DD)
+#define ZCL_RX_TIER13_BLOCK15_PRICE_ATTRIBUTE_ID (0x84DE)
+#define ZCL_RX_TIER13_BLOCK16_PRICE_ATTRIBUTE_ID (0x84DF)
+#define ZCL_RX_TIER14_BLOCK1_PRICE_ATTRIBUTE_ID (0x84E0)
+#define ZCL_RX_TIER14_BLOCK2_PRICE_ATTRIBUTE_ID (0x84E1)
+#define ZCL_RX_TIER14_BLOCK3_PRICE_ATTRIBUTE_ID (0x84E2)
+#define ZCL_RX_TIER14_BLOCK4_PRICE_ATTRIBUTE_ID (0x84E3)
+#define ZCL_RX_TIER14_BLOCK5_PRICE_ATTRIBUTE_ID (0x84E4)
+#define ZCL_RX_TIER14_BLOCK6_PRICE_ATTRIBUTE_ID (0x84E5)
+#define ZCL_RX_TIER14_BLOCK7_PRICE_ATTRIBUTE_ID (0x84E6)
+#define ZCL_RX_TIER14_BLOCK8_PRICE_ATTRIBUTE_ID (0x84E7)
+#define ZCL_RX_TIER14_BLOCK9_PRICE_ATTRIBUTE_ID (0x84E8)
+#define ZCL_RX_TIER14_BLOCK10_PRICE_ATTRIBUTE_ID (0x84E9)
+#define ZCL_RX_TIER14_BLOCK11_PRICE_ATTRIBUTE_ID (0x84EA)
+#define ZCL_RX_TIER14_BLOCK12_PRICE_ATTRIBUTE_ID (0x84EB)
+#define ZCL_RX_TIER14_BLOCK13_PRICE_ATTRIBUTE_ID (0x84EC)
+#define ZCL_RX_TIER14_BLOCK14_PRICE_ATTRIBUTE_ID (0x84ED)
+#define ZCL_RX_TIER14_BLOCK15_PRICE_ATTRIBUTE_ID (0x84EE)
+#define ZCL_RX_TIER14_BLOCK16_PRICE_ATTRIBUTE_ID (0x84EF)
+#define ZCL_RX_TIER15_BLOCK1_PRICE_ATTRIBUTE_ID (0x84F0)
+#define ZCL_RX_TIER15_BLOCK2_PRICE_ATTRIBUTE_ID (0x84F1)
+#define ZCL_RX_TIER15_BLOCK3_PRICE_ATTRIBUTE_ID (0x84F2)
+#define ZCL_RX_TIER15_BLOCK4_PRICE_ATTRIBUTE_ID (0x84F3)
+#define ZCL_RX_TIER15_BLOCK5_PRICE_ATTRIBUTE_ID (0x84F4)
+#define ZCL_RX_TIER15_BLOCK6_PRICE_ATTRIBUTE_ID (0x84F5)
+#define ZCL_RX_TIER15_BLOCK7_PRICE_ATTRIBUTE_ID (0x84F6)
+#define ZCL_RX_TIER15_BLOCK8_PRICE_ATTRIBUTE_ID (0x84F7)
+#define ZCL_RX_TIER15_BLOCK9_PRICE_ATTRIBUTE_ID (0x84F8)
+#define ZCL_RX_TIER15_BLOCK10_PRICE_ATTRIBUTE_ID (0x84F9)
+#define ZCL_RX_TIER15_BLOCK11_PRICE_ATTRIBUTE_ID (0x84FA)
+#define ZCL_RX_TIER15_BLOCK12_PRICE_ATTRIBUTE_ID (0x84FB)
+#define ZCL_RX_TIER15_BLOCK13_PRICE_ATTRIBUTE_ID (0x84FC)
+#define ZCL_RX_TIER15_BLOCK14_PRICE_ATTRIBUTE_ID (0x84FD)
+#define ZCL_RX_TIER15_BLOCK15_PRICE_ATTRIBUTE_ID (0x84FE)
+#define ZCL_RX_TIER15_BLOCK16_PRICE_ATTRIBUTE_ID (0x84FF)
+#define ZCL_RX_PRICE_TIER16_ATTRIBUTE_ID (0x850F)
+#define ZCL_RX_PRICE_TIER17_ATTRIBUTE_ID (0x8510)
+#define ZCL_RX_PRICE_TIER18_ATTRIBUTE_ID (0x8511)
+#define ZCL_RX_PRICE_TIER19_ATTRIBUTE_ID (0x8512)
+#define ZCL_RX_PRICE_TIER20_ATTRIBUTE_ID (0x8513)
+#define ZCL_RX_PRICE_TIER21_ATTRIBUTE_ID (0x8514)
+#define ZCL_RX_PRICE_TIER22_ATTRIBUTE_ID (0x8515)
+#define ZCL_RX_PRICE_TIER23_ATTRIBUTE_ID (0x8516)
+#define ZCL_RX_PRICE_TIER24_ATTRIBUTE_ID (0x8517)
+#define ZCL_RX_PRICE_TIER25_ATTRIBUTE_ID (0x8518)
+#define ZCL_RX_PRICE_TIER26_ATTRIBUTE_ID (0x8519)
+#define ZCL_RX_PRICE_TIER27_ATTRIBUTE_ID (0x851A)
+#define ZCL_RX_PRICE_TIER28_ATTRIBUTE_ID (0x851B)
+#define ZCL_RX_PRICE_TIER29_ATTRIBUTE_ID (0x851C)
+#define ZCL_RX_PRICE_TIER30_ATTRIBUTE_ID (0x851D)
+#define ZCL_RX_PRICE_TIER31_ATTRIBUTE_ID (0x851E)
+#define ZCL_RX_PRICE_TIER32_ATTRIBUTE_ID (0x851F)
+#define ZCL_RX_PRICE_TIER33_ATTRIBUTE_ID (0x8520)
+#define ZCL_RX_PRICE_TIER34_ATTRIBUTE_ID (0x8521)
+#define ZCL_RX_PRICE_TIER35_ATTRIBUTE_ID (0x8522)
+#define ZCL_RX_PRICE_TIER36_ATTRIBUTE_ID (0x8523)
+#define ZCL_RX_PRICE_TIER37_ATTRIBUTE_ID (0x8524)
+#define ZCL_RX_PRICE_TIER38_ATTRIBUTE_ID (0x8525)
+#define ZCL_RX_PRICE_TIER39_ATTRIBUTE_ID (0x8526)
+#define ZCL_RX_PRICE_TIER40_ATTRIBUTE_ID (0x8527)
+#define ZCL_RX_PRICE_TIER41_ATTRIBUTE_ID (0x8528)
+#define ZCL_RX_PRICE_TIER42_ATTRIBUTE_ID (0x8529)
+#define ZCL_RX_PRICE_TIER43_ATTRIBUTE_ID (0x852A)
+#define ZCL_RX_PRICE_TIER44_ATTRIBUTE_ID (0x852B)
+#define ZCL_RX_PRICE_TIER45_ATTRIBUTE_ID (0x852C)
+#define ZCL_RX_PRICE_TIER46_ATTRIBUTE_ID (0x852D)
+#define ZCL_RX_PRICE_TIER47_ATTRIBUTE_ID (0x852E)
+#define ZCL_RX_PRICE_TIER48_ATTRIBUTE_ID (0x852F)
+#define ZCL_RX_TARIFF_LABEL_ATTRIBUTE_ID (0x8610)
+#define ZCL_RX_NUMBER_OF_PRICE_TIERS_IN_USE_ATTRIBUTE_ID (0x8611)
+#define ZCL_RX_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE_ATTRIBUTE_ID (0x8612)
+#define ZCL_RX_TIER_BLOCK_MODE_ATTRIBUTE_ID (0x8613)
+#define ZCL_RX_TARIFF_RESOLUTION_PERIOD_ATTRIBUTE_ID (0x8615)
+#define ZCL_RX_CO2_ATTRIBUTE_ID (0x8625)
+#define ZCL_RX_CO2_UNIT_ATTRIBUTE_ID (0x8626)
+#define ZCL_RX_CO2_TRAILING_DIGIT_ATTRIBUTE_ID (0x8627)
+#define ZCL_RX_CURRENT_BILLING_PERIOD_START_ATTRIBUTE_ID (0x8700)
+#define ZCL_RX_CURRENT_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x8701)
+#define ZCL_RX_LAST_BILLING_PERIOD_START_ATTRIBUTE_ID (0x8702)
+#define ZCL_RX_LAST_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x8703)
+#define ZCL_RX_LAST_BILLING_PERIOD_CONSOLIDATED_BILL_ATTRIBUTE_ID (0x8704)
+
+// Attribute ids for cluster: Demand Response and Load Control
+
+// Client attributes
+#define ZCL_UTILITY_ENROLLMENT_GROUP_ATTRIBUTE_ID (0x0000)
+#define ZCL_START_RANDOMIZATION_MINUTES_ATTRIBUTE_ID (0x0001)
+#define ZCL_DURATION_RANDOMIZATION_MINUTES_ATTRIBUTE_ID (0x0002)
+#define ZCL_DEVICE_CLASS_VALUE_ATTRIBUTE_ID (0x0003)
+
+// Server attributes
+
+// Attribute ids for cluster: Simple Metering
+
+// Client attributes
+#define ZCL_FUNCTIONAL_NOTIFICATION_FLAGS_ATTRIBUTE_ID (0x0000)
+#define ZCL_NOTIFICATION_FLAGS_2_ATTRIBUTE_ID (0x0001)
+#define ZCL_NOTIFICATION_FLAGS_3_ATTRIBUTE_ID (0x0002)
+#define ZCL_NOTIFICATION_FLAGS_4_ATTRIBUTE_ID (0x0003)
+#define ZCL_NOTIFICATION_FLAGS_5_ATTRIBUTE_ID (0x0004)
+#define ZCL_NOTIFICATION_FLAGS_6_ATTRIBUTE_ID (0x0005)
+#define ZCL_NOTIFICATION_FLAGS_7_ATTRIBUTE_ID (0x0006)
+#define ZCL_NOTIFICATION_FLAGS_8_ATTRIBUTE_ID (0x0007)
+
+// Server attributes
+#define ZCL_CURRENT_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0000)
+#define ZCL_CURRENT_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0001)
+#define ZCL_CURRENT_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0002)
+#define ZCL_CURRENT_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x0003)
+#define ZCL_DFT_SUMMATION_ATTRIBUTE_ID (0x0004)
+#define ZCL_DAILY_FREEZE_TIME_ATTRIBUTE_ID (0x0005)
+#define ZCL_POWER_FACTOR_ATTRIBUTE_ID (0x0006)
+#define ZCL_READING_SNAP_SHOT_TIME_ATTRIBUTE_ID (0x0007)
+#define ZCL_CURRENT_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x0008)
+#define ZCL_CURRENT_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0009)
+#define ZCL_DEFAULT_UPDATE_PERIOD_ATTRIBUTE_ID (0x000A)
+#define ZCL_FAST_POLL_UPDATE_PERIOD_ATTRIBUTE_ID (0x000B)
+#define ZCL_CURRENT_BLOCK_PERIOD_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x000C)
+#define ZCL_DAILY_CONSUMPTION_TARGET_ATTRIBUTE_ID (0x000D)
+#define ZCL_CURRENT_BLOCK_ATTRIBUTE_ID (0x000E)
+#define ZCL_PROFILE_INTERVAL_PERIOD_ATTRIBUTE_ID (0x000F)
+#define ZCL_INTERVAL_READ_REPORTING_PERIOD_ATTRIBUTE_ID (0x0010)
+#define ZCL_PRESET_READING_TIME_ATTRIBUTE_ID (0x0011)
+#define ZCL_VOLUME_PER_REPORT_ATTRIBUTE_ID (0x0012)
+#define ZCL_FLOW_RESTRICTION_ATTRIBUTE_ID (0x0013)
+#define ZCL_SUPPLY_STATUS_ATTRIBUTE_ID (0x0014)
+#define ZCL_CURRENT_INLET_ENERGY_CARRIER_SUMMATION_ATTRIBUTE_ID (0x0015)
+#define ZCL_CURRENT_OUTLET_ENERGY_CARRIER_SUMMATION_ATTRIBUTE_ID (0x0016)
+#define ZCL_INLET_TEMPERATURE_ATTRIBUTE_ID (0x0017)
+#define ZCL_OUTLET_TEMPERATURE_ATTRIBUTE_ID (0x0018)
+#define ZCL_CONTROL_TEMPERATURE_ATTRIBUTE_ID (0x0019)
+#define ZCL_CURRENT_INLET_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x001A)
+#define ZCL_CURRENT_OUTLET_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x001B)
+#define ZCL_PREVIOUS_BLOCK_PERIOD_CONSUMIPTION_DELIVERED_ATTRIBUTE_ID (0x001C)
+#define ZCL_CURRENT_BLOCK_PERIOD_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x001D)
+#define ZCL_CURRENT_BLOCK_RECEIVED_ATTRIBUTE_ID (0x001E)
+#define ZCL_DFT_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x001F)
+#define ZCL_ACTIVE_REGISTER_TIER_DELIVERED_ATTRIBUTE_ID (0x0020)
+#define ZCL_ACTIVE_REGISTER_TIER_RECEIVED_ATTRIBUTE_ID (0x0021)
+#define ZCL_LAST_BLOCK_SWITCH_TIME_ATTRIBUTE_ID (0x0022)
+#define ZCL_CURRENT_TIER1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0100)
+#define ZCL_CURRENT_TIER1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0101)
+#define ZCL_CURRENT_TIER2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0102)
+#define ZCL_CURRENT_TIER2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0103)
+#define ZCL_CURRENT_TIER3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0104)
+#define ZCL_CURRENT_TIER3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0105)
+#define ZCL_CURRENT_TIER4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0106)
+#define ZCL_CURRENT_TIER4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0107)
+#define ZCL_CURRENT_TIER5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0108)
+#define ZCL_CURRENT_TIER5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0109)
+#define ZCL_CURRENT_TIER6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x010A)
+#define ZCL_CURRENT_TIER6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x010B)
+#define ZCL_CURRENT_TIER7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x010C)
+#define ZCL_CURRENT_TIER7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x010D)
+#define ZCL_CURRENT_TIER8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x010E)
+#define ZCL_CURRENT_TIER8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x010F)
+#define ZCL_CURRENT_TIER9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0110)
+#define ZCL_CURRENT_TIER9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0111)
+#define ZCL_CURRENT_TIER10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0112)
+#define ZCL_CURRENT_TIER10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0113)
+#define ZCL_CURRENT_TIER11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0114)
+#define ZCL_CURRENT_TIER11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0115)
+#define ZCL_CURRENT_TIER12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0116)
+#define ZCL_CURRENT_TIER12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0117)
+#define ZCL_CURRENT_TIER13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0118)
+#define ZCL_CURRENT_TIER13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0119)
+#define ZCL_CURRENT_TIER14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x011A)
+#define ZCL_CURRENT_TIER14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x011B)
+#define ZCL_CURRENT_TIER15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x011C)
+#define ZCL_CURRENT_TIER15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x011D)
+#define ZCL_CURRENT_TIER16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x011E)
+#define ZCL_CURRENT_TIER16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x011F)
+#define ZCL_CURRENT_TIER17_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0120)
+#define ZCL_CURRENT_TIER17_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0121)
+#define ZCL_CURRENT_TIER18_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0122)
+#define ZCL_CURRENT_TIER18_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0123)
+#define ZCL_CURRENT_TIER19_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0124)
+#define ZCL_CURRENT_TIER19_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0125)
+#define ZCL_CURRENT_TIER20_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0126)
+#define ZCL_CURRENT_TIER20_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0127)
+#define ZCL_CURRENT_TIER21_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0128)
+#define ZCL_CURRENT_TIER21_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0129)
+#define ZCL_CURRENT_TIER22_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x012A)
+#define ZCL_CURRENT_TIER22_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x012B)
+#define ZCL_CURRENT_TIER23_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x012C)
+#define ZCL_CURRENT_TIER23_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x012D)
+#define ZCL_CURRENT_TIER24_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x012E)
+#define ZCL_CURRENT_TIER24_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x012F)
+#define ZCL_CURRENT_TIER25_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0130)
+#define ZCL_CURRENT_TIER25_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0131)
+#define ZCL_CURRENT_TIER26_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0132)
+#define ZCL_CURRENT_TIER26_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0133)
+#define ZCL_CURRENT_TIER27_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0134)
+#define ZCL_CURRENT_TIER27_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0135)
+#define ZCL_CURRENT_TIER28_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0136)
+#define ZCL_CURRENT_TIER28_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0137)
+#define ZCL_CURRENT_TIER29_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0138)
+#define ZCL_CURRENT_TIER29_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0139)
+#define ZCL_CURRENT_TIER30_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x013A)
+#define ZCL_CURRENT_TIER30_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x013B)
+#define ZCL_CURRENT_TIER31_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x013C)
+#define ZCL_CURRENT_TIER31_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x013D)
+#define ZCL_CURRENT_TIER32_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x013E)
+#define ZCL_CURRENT_TIER32_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x013F)
+#define ZCL_CURRENT_TIER33_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0140)
+#define ZCL_CURRENT_TIER33_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0141)
+#define ZCL_CURRENT_TIER34_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0142)
+#define ZCL_CURRENT_TIER34_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0143)
+#define ZCL_CURRENT_TIER35_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0144)
+#define ZCL_CURRENT_TIER35_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0145)
+#define ZCL_CURRENT_TIER36_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0146)
+#define ZCL_CURRENT_TIER36_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0147)
+#define ZCL_CURRENT_TIER37_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0148)
+#define ZCL_CURRENT_TIER37_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0149)
+#define ZCL_CURRENT_TIER38_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x014A)
+#define ZCL_CURRENT_TIER38_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x014B)
+#define ZCL_CURRENT_TIER39_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x014C)
+#define ZCL_CURRENT_TIER39_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x014D)
+#define ZCL_CURRENT_TIER40_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x014E)
+#define ZCL_CURRENT_TIER40_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x014F)
+#define ZCL_CURRENT_TIER41_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0150)
+#define ZCL_CURRENT_TIER41_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0151)
+#define ZCL_CURRENT_TIER42_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0152)
+#define ZCL_CURRENT_TIER42_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0153)
+#define ZCL_CURRENT_TIER43_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0154)
+#define ZCL_CURRENT_TIER43_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0155)
+#define ZCL_CURRENT_TIER44_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0156)
+#define ZCL_CURRENT_TIER44_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0157)
+#define ZCL_CURRENT_TIER45_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0158)
+#define ZCL_CURRENT_TIER45_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0159)
+#define ZCL_CURRENT_TIER46_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x015A)
+#define ZCL_CURRENT_TIER46_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x015B)
+#define ZCL_CURRENT_TIER47_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x015C)
+#define ZCL_CURRENT_TIER47_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x015D)
+#define ZCL_CURRENT_TIER48_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x015E)
+#define ZCL_CURRENT_TIER48_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x015F)
+#define ZCL_CPP1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x01FC)
+#define ZCL_CPP2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x01FE)
+#define ZCL_STATUS_ATTRIBUTE_ID (0x0200)
+#define ZCL_REMAINING_BATTERY_LIFE_ATTRIBUTE_ID (0x0201)
+#define ZCL_HOURS_IN_OPERATION_ATTRIBUTE_ID (0x0202)
+#define ZCL_HOURS_IN_FAULT_ATTRIBUTE_ID (0x0203)
+#define ZCL_EXTENDED_STATUS_ATTRIBUTE_ID (0x0204)
+#define ZCL_REMAINING_BATTERY_LIFE_IN_DAYS_ATTRIBUTE_ID (0x0205)
+#define ZCL_CURRENT_METER_ID_ATTRIBUTE_ID (0x0206)
+#define ZCL_AMBIENT_CONSUMPTION_INDICATOR_ATTRIBUTE_ID (0x0207)
+#define ZCL_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0300)
+#define ZCL_MULTIPLIER_ATTRIBUTE_ID (0x0301)
+#define ZCL_DIVISOR_ATTRIBUTE_ID (0x0302)
+#define ZCL_SUMMATION_FORMATTING_ATTRIBUTE_ID (0x0303)
+#define ZCL_DEMAND_FORMATTING_ATTRIBUTE_ID (0x0304)
+#define ZCL_HISTORICAL_CONSUMPTION_FORMATTING_ATTRIBUTE_ID (0x0305)
+#define ZCL_METERING_DEVICE_TYPE_ATTRIBUTE_ID (0x0306)
+#define ZCL_SITE_ID_ATTRIBUTE_ID (0x0307)
+#define ZCL_METER_SERIAL_NUMBER_ATTRIBUTE_ID (0x0308)
+#define ZCL_ENERGY_CARRIER_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0309)
+#define ZCL_ENERGY_CARRIER_SUMMATION_FORMATTING_ATTRIBUTE_ID (0x030A)
+#define ZCL_ENERGY_CARRIER_DEMAND_FORMATTING_ATTRIBUTE_ID (0x030B)
+#define ZCL_TEMPERATURE_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x030C)
+#define ZCL_TEMPERATURE_FORMATTING_ATTRIBUTE_ID (0x030D)
+#define ZCL_MODULE_SERIAL_NUMBER_ATTRIBUTE_ID (0x030E)
+#define ZCL_OPERATING_TARIFF_LABEL_DELIVERED_ATTRIBUTE_ID (0x030F)
+#define ZCL_OPERATING_TARIFF_LABEL_RECEIVED_ATTRIBUTE_ID (0x0310)
+#define ZCL_CUSTOMER_ID_NUMBER_ATTRIBUTE_ID (0x0311)
+#define ZCL_ALTERNATIVE_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0312)
+#define ZCL_ALTERNATIVE_DEMAND_FORMATTING_ATTRIBUTE_ID (0x0313)
+#define ZCL_ALTERNATIVE_CONSUMPTION_FORMATTING_ATTRIBUTE_ID (0x0314)
+#define ZCL_INSTANTANEOUS_DEMAND_ATTRIBUTE_ID (0x0400)
+#define ZCL_CURRENT_DAY_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0401)
+#define ZCL_CURRENT_DAY_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0402)
+#define ZCL_PREVIOUS_DAY_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0403)
+#define ZCL_PREVIOUS_DAY_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0404)
+#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_START_TIME_DELIVERED_ATTRIBUTE_ID (0x0405)
+#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_START_TIME_RECEIVED_ATTRIBUTE_ID (0x0406)
+#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_VALUE_DELIVERED_ATTRIBUTE_ID (0x0407)
+#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_VALUE_RECEIVED_ATTRIBUTE_ID (0x0408)
+#define ZCL_CURRENT_DAY_MAX_PRESSURE_ATTRIBUTE_ID (0x0409)
+#define ZCL_CURRENT_DAY_MIN_PRESSURE_ATTRIBUTE_ID (0x040A)
+#define ZCL_PREVIOUS_DAY_MAX_PRESSURE_ATTRIBUTE_ID (0x040B)
+#define ZCL_PREVIOUS_DAY_MIN_PRESSURE_ATTRIBUTE_ID (0x040C)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_ATTRIBUTE_ID (0x040D)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_ATTRIBUTE_ID (0x040E)
+#define ZCL_CURRENT_MONTH_MAX_DEMAND_ATTRIBUTE_ID (0x040F)
+#define ZCL_CURRENT_YEAR_MAX_DEMAND_ATTRIBUTE_ID (0x0410)
+#define ZCL_CURRENT_DAY_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0411)
+#define ZCL_PREVIOUS_DAY_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0412)
+#define ZCL_CURRENT_MONTH_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0413)
+#define ZCL_CURRENT_MONTH_MIN_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0414)
+#define ZCL_CURRENT_YEAR_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0415)
+#define ZCL_CURRENT_YEAR_MIN_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0416)
+#define ZCL_PREVIOUS_DAY2_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0420)
+#define ZCL_PREVIOUS_DAY2_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0421)
+#define ZCL_PREVIOUS_DAY3_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0422)
+#define ZCL_PREVIOUS_DAY3_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0423)
+#define ZCL_PREVIOUS_DAY4_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0424)
+#define ZCL_PREVIOUS_DAY4_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0425)
+#define ZCL_PREVIOUS_DAY5_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0426)
+#define ZCL_PREVIOUS_DAY5_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0427)
+#define ZCL_PREVIOUS_DAY6_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0428)
+#define ZCL_PREVIOUS_DAY6_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0429)
+#define ZCL_PREVIOUS_DAY7_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x042A)
+#define ZCL_PREVIOUS_DAY7_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x042B)
+#define ZCL_PREVIOUS_DAY8_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x042C)
+#define ZCL_PREVIOUS_DAY8_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x042D)
+#define ZCL_CURRENT_WEEK_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0430)
+#define ZCL_CURRENT_WEEK_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0431)
+#define ZCL_PREVIOUS_WEEK_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0432)
+#define ZCL_PREVIOUS_WEEK_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0433)
+#define ZCL_PREVIOUS_WEEK2_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0434)
+#define ZCL_PREVIOUS_WEEK2_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0435)
+#define ZCL_PREVIOUS_WEEK3_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0436)
+#define ZCL_PREVIOUS_WEEK3_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0437)
+#define ZCL_PREVIOUS_WEEK4_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0438)
+#define ZCL_PREVIOUS_WEEK4_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0439)
+#define ZCL_PREVIOUS_WEEK5_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x043A)
+#define ZCL_PREVIOUS_WEEK5_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x043B)
+#define ZCL_CURRENT_MONTH_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0440)
+#define ZCL_CURRENT_MONTH_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0441)
+#define ZCL_PREVIOUS_MONTH_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0442)
+#define ZCL_PREVIOUS_MONTH_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0443)
+#define ZCL_PREVIOUS_MONTH2_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0444)
+#define ZCL_PREVIOUS_MONTH2_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0445)
+#define ZCL_PREVIOUS_MONTH3_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0446)
+#define ZCL_PREVIOUS_MONTH3_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0447)
+#define ZCL_PREVIOUS_MONTH4_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0448)
+#define ZCL_PREVIOUS_MONTH4_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0449)
+#define ZCL_PREVIOUS_MONTH5_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x044A)
+#define ZCL_PREVIOUS_MONTH5_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x044B)
+#define ZCL_PREVIOUS_MONTH6_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x044C)
+#define ZCL_PREVIOUS_MONTH6_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x044D)
+#define ZCL_PREVIOUS_MONTH7_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x044E)
+#define ZCL_PREVIOUS_MONTH7_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x044F)
+#define ZCL_PREVIOUS_MONTH8_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0450)
+#define ZCL_PREVIOUS_MONTH8_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0451)
+#define ZCL_PREVIOUS_MONTH9_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0452)
+#define ZCL_PREVIOUS_MONTH9_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0453)
+#define ZCL_PREVIOUS_MONTH10_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0454)
+#define ZCL_PREVIOUS_MONTH10_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0455)
+#define ZCL_PREVIOUS_MONTH11_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0456)
+#define ZCL_PREVIOUS_MONTH11_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0457)
+#define ZCL_PREVIOUS_MONTH12_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0458)
+#define ZCL_PREVIOUS_MONTH12_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0459)
+#define ZCL_PREVIOUS_MONTH13_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x045A)
+#define ZCL_PREVIOUS_MONTH13_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x045B)
+#define ZCL_METERING_HISTORICAL_FREEZE_TIME_ATTRIBUTE_ID (0x045C)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x045D)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x045E)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x045F)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0460)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0461)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x0462)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x0463)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0464)
+#define ZCL_MAX_NUMBER_OF_PERIODS_DELIVERED_ATTRIBUTE_ID (0x0500)
+#define ZCL_CURRENT_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0600)
+#define ZCL_DEMAND_LIMIT_ATTRIBUTE_ID (0x0601)
+#define ZCL_DEMAND_INTEGRATION_PERIOD_ATTRIBUTE_ID (0x0602)
+#define ZCL_NUMBER_OF_DEMAND_SUBINTERVALS_ATTRIBUTE_ID (0x0603)
+#define ZCL_DEMAND_LIMIT_ARM_DURATION_IN_MINUTES_ATTRIBUTE_ID (0x0604)
+#define ZCL_LOAD_LIMIT_SUPPLY_STATE_ATTRIBUTE_ID (0x0605)
+#define ZCL_LOAD_LIMIT_COUNTER_ATTRIBUTE_ID (0x0606)
+#define ZCL_SUPPLY_TAMPER_STATE_ATTRIBUTE_ID (0x0607)
+#define ZCL_SUPPLY_DEPLETION_STATE_ATTRIBUTE_ID (0x0608)
+#define ZCL_SUPPLY_UNCONTROLLED_FLOW_STATE_ATTRIBUTE_ID (0x0609)
+#define ZCL_CURRENT_NO_TIER_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0700)
+#define ZCL_CURRENT_NO_TIER_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0701)
+#define ZCL_CURRENT_NO_TIER_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0702)
+#define ZCL_CURRENT_NO_TIER_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0703)
+#define ZCL_CURRENT_NO_TIER_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0704)
+#define ZCL_CURRENT_NO_TIER_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0705)
+#define ZCL_CURRENT_NO_TIER_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0706)
+#define ZCL_CURRENT_NO_TIER_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0707)
+#define ZCL_CURRENT_NO_TIER_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0708)
+#define ZCL_CURRENT_NO_TIER_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0709)
+#define ZCL_CURRENT_NO_TIER_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070A)
+#define ZCL_CURRENT_NO_TIER_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070B)
+#define ZCL_CURRENT_NO_TIER_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070C)
+#define ZCL_CURRENT_NO_TIER_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070D)
+#define ZCL_CURRENT_NO_TIER_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070E)
+#define ZCL_CURRENT_NO_TIER_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070F)
+#define ZCL_CURRENT_TIER1_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0710)
+#define ZCL_CURRENT_TIER1_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0711)
+#define ZCL_CURRENT_TIER1_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0712)
+#define ZCL_CURRENT_TIER1_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0713)
+#define ZCL_CURRENT_TIER1_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0714)
+#define ZCL_CURRENT_TIER1_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0715)
+#define ZCL_CURRENT_TIER1_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0716)
+#define ZCL_CURRENT_TIER1_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0717)
+#define ZCL_CURRENT_TIER1_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0718)
+#define ZCL_CURRENT_TIER1_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0719)
+#define ZCL_CURRENT_TIER1_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071A)
+#define ZCL_CURRENT_TIER1_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071B)
+#define ZCL_CURRENT_TIER1_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071C)
+#define ZCL_CURRENT_TIER1_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071D)
+#define ZCL_CURRENT_TIER1_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071E)
+#define ZCL_CURRENT_TIER1_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071F)
+#define ZCL_CURRENT_TIER2_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0720)
+#define ZCL_CURRENT_TIER2_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0721)
+#define ZCL_CURRENT_TIER2_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0722)
+#define ZCL_CURRENT_TIER2_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0723)
+#define ZCL_CURRENT_TIER2_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0724)
+#define ZCL_CURRENT_TIER2_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0725)
+#define ZCL_CURRENT_TIER2_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0726)
+#define ZCL_CURRENT_TIER2_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0727)
+#define ZCL_CURRENT_TIER2_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0728)
+#define ZCL_CURRENT_TIER2_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0729)
+#define ZCL_CURRENT_TIER2_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072A)
+#define ZCL_CURRENT_TIER2_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072B)
+#define ZCL_CURRENT_TIER2_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072C)
+#define ZCL_CURRENT_TIER2_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072D)
+#define ZCL_CURRENT_TIER2_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072E)
+#define ZCL_CURRENT_TIER2_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072F)
+#define ZCL_CURRENT_TIER3_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0730)
+#define ZCL_CURRENT_TIER3_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0731)
+#define ZCL_CURRENT_TIER3_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0732)
+#define ZCL_CURRENT_TIER3_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0733)
+#define ZCL_CURRENT_TIER3_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0734)
+#define ZCL_CURRENT_TIER3_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0735)
+#define ZCL_CURRENT_TIER3_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0736)
+#define ZCL_CURRENT_TIER3_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0737)
+#define ZCL_CURRENT_TIER3_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0738)
+#define ZCL_CURRENT_TIER3_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0739)
+#define ZCL_CURRENT_TIER3_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073A)
+#define ZCL_CURRENT_TIER3_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073B)
+#define ZCL_CURRENT_TIER3_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073C)
+#define ZCL_CURRENT_TIER3_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073D)
+#define ZCL_CURRENT_TIER3_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073E)
+#define ZCL_CURRENT_TIER3_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073F)
+#define ZCL_CURRENT_TIER4_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0740)
+#define ZCL_CURRENT_TIER4_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0741)
+#define ZCL_CURRENT_TIER4_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0742)
+#define ZCL_CURRENT_TIER4_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0743)
+#define ZCL_CURRENT_TIER4_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0744)
+#define ZCL_CURRENT_TIER4_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0745)
+#define ZCL_CURRENT_TIER4_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0746)
+#define ZCL_CURRENT_TIER4_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0747)
+#define ZCL_CURRENT_TIER4_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0748)
+#define ZCL_CURRENT_TIER4_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0749)
+#define ZCL_CURRENT_TIER4_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074A)
+#define ZCL_CURRENT_TIER4_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074B)
+#define ZCL_CURRENT_TIER4_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074C)
+#define ZCL_CURRENT_TIER4_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074D)
+#define ZCL_CURRENT_TIER4_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074E)
+#define ZCL_CURRENT_TIER4_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074F)
+#define ZCL_CURRENT_TIER5_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0750)
+#define ZCL_CURRENT_TIER5_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0751)
+#define ZCL_CURRENT_TIER5_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0752)
+#define ZCL_CURRENT_TIER5_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0753)
+#define ZCL_CURRENT_TIER5_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0754)
+#define ZCL_CURRENT_TIER5_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0755)
+#define ZCL_CURRENT_TIER5_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0756)
+#define ZCL_CURRENT_TIER5_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0757)
+#define ZCL_CURRENT_TIER5_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0758)
+#define ZCL_CURRENT_TIER5_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0759)
+#define ZCL_CURRENT_TIER5_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075A)
+#define ZCL_CURRENT_TIER5_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075B)
+#define ZCL_CURRENT_TIER5_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075C)
+#define ZCL_CURRENT_TIER5_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075D)
+#define ZCL_CURRENT_TIER5_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075E)
+#define ZCL_CURRENT_TIER5_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075F)
+#define ZCL_CURRENT_TIER6_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0760)
+#define ZCL_CURRENT_TIER6_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0761)
+#define ZCL_CURRENT_TIER6_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0762)
+#define ZCL_CURRENT_TIER6_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0763)
+#define ZCL_CURRENT_TIER6_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0764)
+#define ZCL_CURRENT_TIER6_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0765)
+#define ZCL_CURRENT_TIER6_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0766)
+#define ZCL_CURRENT_TIER6_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0767)
+#define ZCL_CURRENT_TIER6_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0768)
+#define ZCL_CURRENT_TIER6_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0769)
+#define ZCL_CURRENT_TIER6_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076A)
+#define ZCL_CURRENT_TIER6_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076B)
+#define ZCL_CURRENT_TIER6_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076C)
+#define ZCL_CURRENT_TIER6_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076D)
+#define ZCL_CURRENT_TIER6_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076E)
+#define ZCL_CURRENT_TIER6_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076F)
+#define ZCL_CURRENT_TIER7_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0770)
+#define ZCL_CURRENT_TIER7_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0771)
+#define ZCL_CURRENT_TIER7_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0772)
+#define ZCL_CURRENT_TIER7_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0773)
+#define ZCL_CURRENT_TIER7_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0774)
+#define ZCL_CURRENT_TIER7_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0775)
+#define ZCL_CURRENT_TIER7_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0776)
+#define ZCL_CURRENT_TIER7_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0777)
+#define ZCL_CURRENT_TIER7_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0778)
+#define ZCL_CURRENT_TIER7_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0779)
+#define ZCL_CURRENT_TIER7_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077A)
+#define ZCL_CURRENT_TIER7_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077B)
+#define ZCL_CURRENT_TIER7_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077C)
+#define ZCL_CURRENT_TIER7_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077D)
+#define ZCL_CURRENT_TIER7_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077E)
+#define ZCL_CURRENT_TIER7_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077F)
+#define ZCL_CURRENT_TIER8_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0780)
+#define ZCL_CURRENT_TIER8_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0781)
+#define ZCL_CURRENT_TIER8_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0782)
+#define ZCL_CURRENT_TIER8_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0783)
+#define ZCL_CURRENT_TIER8_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0784)
+#define ZCL_CURRENT_TIER8_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0785)
+#define ZCL_CURRENT_TIER8_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0786)
+#define ZCL_CURRENT_TIER8_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0787)
+#define ZCL_CURRENT_TIER8_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0788)
+#define ZCL_CURRENT_TIER8_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0789)
+#define ZCL_CURRENT_TIER8_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078A)
+#define ZCL_CURRENT_TIER8_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078B)
+#define ZCL_CURRENT_TIER8_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078C)
+#define ZCL_CURRENT_TIER8_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078D)
+#define ZCL_CURRENT_TIER8_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078E)
+#define ZCL_CURRENT_TIER8_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078F)
+#define ZCL_CURRENT_TIER9_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0790)
+#define ZCL_CURRENT_TIER9_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0791)
+#define ZCL_CURRENT_TIER9_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0792)
+#define ZCL_CURRENT_TIER9_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0793)
+#define ZCL_CURRENT_TIER9_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0794)
+#define ZCL_CURRENT_TIER9_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0795)
+#define ZCL_CURRENT_TIER9_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0796)
+#define ZCL_CURRENT_TIER9_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0797)
+#define ZCL_CURRENT_TIER9_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0798)
+#define ZCL_CURRENT_TIER9_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0799)
+#define ZCL_CURRENT_TIER9_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079A)
+#define ZCL_CURRENT_TIER9_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079B)
+#define ZCL_CURRENT_TIER9_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079C)
+#define ZCL_CURRENT_TIER9_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079D)
+#define ZCL_CURRENT_TIER9_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079E)
+#define ZCL_CURRENT_TIER9_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079F)
+#define ZCL_CURRENT_TIER10_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A0)
+#define ZCL_CURRENT_TIER10_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A1)
+#define ZCL_CURRENT_TIER10_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A2)
+#define ZCL_CURRENT_TIER10_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A3)
+#define ZCL_CURRENT_TIER10_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A4)
+#define ZCL_CURRENT_TIER10_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A5)
+#define ZCL_CURRENT_TIER10_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A6)
+#define ZCL_CURRENT_TIER10_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A7)
+#define ZCL_CURRENT_TIER10_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A8)
+#define ZCL_CURRENT_TIER10_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A9)
+#define ZCL_CURRENT_TIER10_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AA)
+#define ZCL_CURRENT_TIER10_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AB)
+#define ZCL_CURRENT_TIER10_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AC)
+#define ZCL_CURRENT_TIER10_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AD)
+#define ZCL_CURRENT_TIER10_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AE)
+#define ZCL_CURRENT_TIER10_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AF)
+#define ZCL_CURRENT_TIER11_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B0)
+#define ZCL_CURRENT_TIER11_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B1)
+#define ZCL_CURRENT_TIER11_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B2)
+#define ZCL_CURRENT_TIER11_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B3)
+#define ZCL_CURRENT_TIER11_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B4)
+#define ZCL_CURRENT_TIER11_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B5)
+#define ZCL_CURRENT_TIER11_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B6)
+#define ZCL_CURRENT_TIER11_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B7)
+#define ZCL_CURRENT_TIER11_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B8)
+#define ZCL_CURRENT_TIER11_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B9)
+#define ZCL_CURRENT_TIER11_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BA)
+#define ZCL_CURRENT_TIER11_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BB)
+#define ZCL_CURRENT_TIER11_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BC)
+#define ZCL_CURRENT_TIER11_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BD)
+#define ZCL_CURRENT_TIER11_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BE)
+#define ZCL_CURRENT_TIER11_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BF)
+#define ZCL_CURRENT_TIER12_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C0)
+#define ZCL_CURRENT_TIER12_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C1)
+#define ZCL_CURRENT_TIER12_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C2)
+#define ZCL_CURRENT_TIER12_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C3)
+#define ZCL_CURRENT_TIER12_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C4)
+#define ZCL_CURRENT_TIER12_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C5)
+#define ZCL_CURRENT_TIER12_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C6)
+#define ZCL_CURRENT_TIER12_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C7)
+#define ZCL_CURRENT_TIER12_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C8)
+#define ZCL_CURRENT_TIER12_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C9)
+#define ZCL_CURRENT_TIER12_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CA)
+#define ZCL_CURRENT_TIER12_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CB)
+#define ZCL_CURRENT_TIER12_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CC)
+#define ZCL_CURRENT_TIER12_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CD)
+#define ZCL_CURRENT_TIER12_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CE)
+#define ZCL_CURRENT_TIER12_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CF)
+#define ZCL_CURRENT_TIER13_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D0)
+#define ZCL_CURRENT_TIER13_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D1)
+#define ZCL_CURRENT_TIER13_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D2)
+#define ZCL_CURRENT_TIER13_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D3)
+#define ZCL_CURRENT_TIER13_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D4)
+#define ZCL_CURRENT_TIER13_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D5)
+#define ZCL_CURRENT_TIER13_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D6)
+#define ZCL_CURRENT_TIER13_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D7)
+#define ZCL_CURRENT_TIER13_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D8)
+#define ZCL_CURRENT_TIER13_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D9)
+#define ZCL_CURRENT_TIER13_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DA)
+#define ZCL_CURRENT_TIER13_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DB)
+#define ZCL_CURRENT_TIER13_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DC)
+#define ZCL_CURRENT_TIER13_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DD)
+#define ZCL_CURRENT_TIER13_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DE)
+#define ZCL_CURRENT_TIER13_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DF)
+#define ZCL_CURRENT_TIER14_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E0)
+#define ZCL_CURRENT_TIER14_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E1)
+#define ZCL_CURRENT_TIER14_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E2)
+#define ZCL_CURRENT_TIER14_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E3)
+#define ZCL_CURRENT_TIER14_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E4)
+#define ZCL_CURRENT_TIER14_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E5)
+#define ZCL_CURRENT_TIER14_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E6)
+#define ZCL_CURRENT_TIER14_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E7)
+#define ZCL_CURRENT_TIER14_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E8)
+#define ZCL_CURRENT_TIER14_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E9)
+#define ZCL_CURRENT_TIER14_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EA)
+#define ZCL_CURRENT_TIER14_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EB)
+#define ZCL_CURRENT_TIER14_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EC)
+#define ZCL_CURRENT_TIER14_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07ED)
+#define ZCL_CURRENT_TIER14_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EE)
+#define ZCL_CURRENT_TIER14_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EF)
+#define ZCL_CURRENT_TIER15_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F0)
+#define ZCL_CURRENT_TIER15_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F1)
+#define ZCL_CURRENT_TIER15_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F2)
+#define ZCL_CURRENT_TIER15_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F3)
+#define ZCL_CURRENT_TIER15_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F4)
+#define ZCL_CURRENT_TIER15_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F5)
+#define ZCL_CURRENT_TIER15_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F6)
+#define ZCL_CURRENT_TIER15_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F7)
+#define ZCL_CURRENT_TIER15_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F8)
+#define ZCL_CURRENT_TIER15_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F9)
+#define ZCL_CURRENT_TIER15_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FA)
+#define ZCL_CURRENT_TIER15_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FB)
+#define ZCL_CURRENT_TIER15_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FC)
+#define ZCL_CURRENT_TIER15_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FD)
+#define ZCL_CURRENT_TIER15_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FE)
+#define ZCL_CURRENT_TIER15_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FF)
+#define ZCL_GENERIC_ALARM_MASK_ATTRIBUTE_ID (0x0800)
+#define ZCL_ELECTRICITY_ALARM_MASK_ATTRIBUTE_ID (0x0801)
+#define ZCL_GENERIC_FLOW_PRESSURE_ALARM_MASK_ATTRIBUTE_ID (0x0802)
+#define ZCL_WATER_SPECIFIC_ALARM_MASK_ATTRIBUTE_ID (0x0803)
+#define ZCL_HEAT_AND_COOLING_SPECIFIC_ALARM_MASK_ATTRIBUTE_ID (0x0804)
+#define ZCL_GAS_SPECIFIC_ALARM_MASK_ATTRIBUTE_ID (0x0805)
+#define ZCL_METERING_EXTENDED_GENERIC_ALARM_MASK_ATTRIBUTE_ID (0x0806)
+#define ZCL_METERING_MANUFACTURE_ALARM_MASK_ATTRIBUTE_ID (0x0807)
+#define ZCL_CURRENT_NO_TIER_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0900)
+#define ZCL_CURRENT_NO_TIER_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0901)
+#define ZCL_CURRENT_NO_TIER_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0902)
+#define ZCL_CURRENT_NO_TIER_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0903)
+#define ZCL_CURRENT_NO_TIER_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0904)
+#define ZCL_CURRENT_NO_TIER_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0905)
+#define ZCL_CURRENT_NO_TIER_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0906)
+#define ZCL_CURRENT_NO_TIER_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0907)
+#define ZCL_CURRENT_NO_TIER_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0908)
+#define ZCL_CURRENT_NO_TIER_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0909)
+#define ZCL_CURRENT_NO_TIER_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090A)
+#define ZCL_CURRENT_NO_TIER_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090B)
+#define ZCL_CURRENT_NO_TIER_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090C)
+#define ZCL_CURRENT_NO_TIER_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090D)
+#define ZCL_CURRENT_NO_TIER_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090E)
+#define ZCL_CURRENT_NO_TIER_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090F)
+#define ZCL_CURRENT_TIER1_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0910)
+#define ZCL_CURRENT_TIER1_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0911)
+#define ZCL_CURRENT_TIER1_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0912)
+#define ZCL_CURRENT_TIER1_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0913)
+#define ZCL_CURRENT_TIER1_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0914)
+#define ZCL_CURRENT_TIER1_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0915)
+#define ZCL_CURRENT_TIER1_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0916)
+#define ZCL_CURRENT_TIER1_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0917)
+#define ZCL_CURRENT_TIER1_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0918)
+#define ZCL_CURRENT_TIER1_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0919)
+#define ZCL_CURRENT_TIER1_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091A)
+#define ZCL_CURRENT_TIER1_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091B)
+#define ZCL_CURRENT_TIER1_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091C)
+#define ZCL_CURRENT_TIER1_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091D)
+#define ZCL_CURRENT_TIER1_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091E)
+#define ZCL_CURRENT_TIER1_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091F)
+#define ZCL_CURRENT_TIER2_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0920)
+#define ZCL_CURRENT_TIER2_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0921)
+#define ZCL_CURRENT_TIER2_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0922)
+#define ZCL_CURRENT_TIER2_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0923)
+#define ZCL_CURRENT_TIER2_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0924)
+#define ZCL_CURRENT_TIER2_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0925)
+#define ZCL_CURRENT_TIER2_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0926)
+#define ZCL_CURRENT_TIER2_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0927)
+#define ZCL_CURRENT_TIER2_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0928)
+#define ZCL_CURRENT_TIER2_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0929)
+#define ZCL_CURRENT_TIER2_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092A)
+#define ZCL_CURRENT_TIER2_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092B)
+#define ZCL_CURRENT_TIER2_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092C)
+#define ZCL_CURRENT_TIER2_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092D)
+#define ZCL_CURRENT_TIER2_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092E)
+#define ZCL_CURRENT_TIER2_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092F)
+#define ZCL_CURRENT_TIER3_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0930)
+#define ZCL_CURRENT_TIER3_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0931)
+#define ZCL_CURRENT_TIER3_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0932)
+#define ZCL_CURRENT_TIER3_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0933)
+#define ZCL_CURRENT_TIER3_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0934)
+#define ZCL_CURRENT_TIER3_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0935)
+#define ZCL_CURRENT_TIER3_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0936)
+#define ZCL_CURRENT_TIER3_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0937)
+#define ZCL_CURRENT_TIER3_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0938)
+#define ZCL_CURRENT_TIER3_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0939)
+#define ZCL_CURRENT_TIER3_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093A)
+#define ZCL_CURRENT_TIER3_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093B)
+#define ZCL_CURRENT_TIER3_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093C)
+#define ZCL_CURRENT_TIER3_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093D)
+#define ZCL_CURRENT_TIER3_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093E)
+#define ZCL_CURRENT_TIER3_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093F)
+#define ZCL_CURRENT_TIER4_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0940)
+#define ZCL_CURRENT_TIER4_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0941)
+#define ZCL_CURRENT_TIER4_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0942)
+#define ZCL_CURRENT_TIER4_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0943)
+#define ZCL_CURRENT_TIER4_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0944)
+#define ZCL_CURRENT_TIER4_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0945)
+#define ZCL_CURRENT_TIER4_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0946)
+#define ZCL_CURRENT_TIER4_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0947)
+#define ZCL_CURRENT_TIER4_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0948)
+#define ZCL_CURRENT_TIER4_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0949)
+#define ZCL_CURRENT_TIER4_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094A)
+#define ZCL_CURRENT_TIER4_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094B)
+#define ZCL_CURRENT_TIER4_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094C)
+#define ZCL_CURRENT_TIER4_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094D)
+#define ZCL_CURRENT_TIER4_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094E)
+#define ZCL_CURRENT_TIER4_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094F)
+#define ZCL_CURRENT_TIER5_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0950)
+#define ZCL_CURRENT_TIER5_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0951)
+#define ZCL_CURRENT_TIER5_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0952)
+#define ZCL_CURRENT_TIER5_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0953)
+#define ZCL_CURRENT_TIER5_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0954)
+#define ZCL_CURRENT_TIER5_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0955)
+#define ZCL_CURRENT_TIER5_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0956)
+#define ZCL_CURRENT_TIER5_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0957)
+#define ZCL_CURRENT_TIER5_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0958)
+#define ZCL_CURRENT_TIER5_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0959)
+#define ZCL_CURRENT_TIER5_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095A)
+#define ZCL_CURRENT_TIER5_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095B)
+#define ZCL_CURRENT_TIER5_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095C)
+#define ZCL_CURRENT_TIER5_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095D)
+#define ZCL_CURRENT_TIER5_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095E)
+#define ZCL_CURRENT_TIER5_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095F)
+#define ZCL_CURRENT_TIER6_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0960)
+#define ZCL_CURRENT_TIER6_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0961)
+#define ZCL_CURRENT_TIER6_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0962)
+#define ZCL_CURRENT_TIER6_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0963)
+#define ZCL_CURRENT_TIER6_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0964)
+#define ZCL_CURRENT_TIER6_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0965)
+#define ZCL_CURRENT_TIER6_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0966)
+#define ZCL_CURRENT_TIER6_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0967)
+#define ZCL_CURRENT_TIER6_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0968)
+#define ZCL_CURRENT_TIER6_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0969)
+#define ZCL_CURRENT_TIER6_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096A)
+#define ZCL_CURRENT_TIER6_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096B)
+#define ZCL_CURRENT_TIER6_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096C)
+#define ZCL_CURRENT_TIER6_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096D)
+#define ZCL_CURRENT_TIER6_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096E)
+#define ZCL_CURRENT_TIER6_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096F)
+#define ZCL_CURRENT_TIER7_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0970)
+#define ZCL_CURRENT_TIER7_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0971)
+#define ZCL_CURRENT_TIER7_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0972)
+#define ZCL_CURRENT_TIER7_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0973)
+#define ZCL_CURRENT_TIER7_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0974)
+#define ZCL_CURRENT_TIER7_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0975)
+#define ZCL_CURRENT_TIER7_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0976)
+#define ZCL_CURRENT_TIER7_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0977)
+#define ZCL_CURRENT_TIER7_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0978)
+#define ZCL_CURRENT_TIER7_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0979)
+#define ZCL_CURRENT_TIER7_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097A)
+#define ZCL_CURRENT_TIER7_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097B)
+#define ZCL_CURRENT_TIER7_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097C)
+#define ZCL_CURRENT_TIER7_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097D)
+#define ZCL_CURRENT_TIER7_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097E)
+#define ZCL_CURRENT_TIER7_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097F)
+#define ZCL_CURRENT_TIER8_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0980)
+#define ZCL_CURRENT_TIER8_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0981)
+#define ZCL_CURRENT_TIER8_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0982)
+#define ZCL_CURRENT_TIER8_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0983)
+#define ZCL_CURRENT_TIER8_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0984)
+#define ZCL_CURRENT_TIER8_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0985)
+#define ZCL_CURRENT_TIER8_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0986)
+#define ZCL_CURRENT_TIER8_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0987)
+#define ZCL_CURRENT_TIER8_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0988)
+#define ZCL_CURRENT_TIER8_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0989)
+#define ZCL_CURRENT_TIER8_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098A)
+#define ZCL_CURRENT_TIER8_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098B)
+#define ZCL_CURRENT_TIER8_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098C)
+#define ZCL_CURRENT_TIER8_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098D)
+#define ZCL_CURRENT_TIER8_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098E)
+#define ZCL_CURRENT_TIER8_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098F)
+#define ZCL_CURRENT_TIER9_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0990)
+#define ZCL_CURRENT_TIER9_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0991)
+#define ZCL_CURRENT_TIER9_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0992)
+#define ZCL_CURRENT_TIER9_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0993)
+#define ZCL_CURRENT_TIER9_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0994)
+#define ZCL_CURRENT_TIER9_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0995)
+#define ZCL_CURRENT_TIER9_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0996)
+#define ZCL_CURRENT_TIER9_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0997)
+#define ZCL_CURRENT_TIER9_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0998)
+#define ZCL_CURRENT_TIER9_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0999)
+#define ZCL_CURRENT_TIER9_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099A)
+#define ZCL_CURRENT_TIER9_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099B)
+#define ZCL_CURRENT_TIER9_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099C)
+#define ZCL_CURRENT_TIER9_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099D)
+#define ZCL_CURRENT_TIER9_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099E)
+#define ZCL_CURRENT_TIER9_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099F)
+#define ZCL_CURRENT_TIER10_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A0)
+#define ZCL_CURRENT_TIER10_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A1)
+#define ZCL_CURRENT_TIER10_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A2)
+#define ZCL_CURRENT_TIER10_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A3)
+#define ZCL_CURRENT_TIER10_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A4)
+#define ZCL_CURRENT_TIER10_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A5)
+#define ZCL_CURRENT_TIER10_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A6)
+#define ZCL_CURRENT_TIER10_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A7)
+#define ZCL_CURRENT_TIER10_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A8)
+#define ZCL_CURRENT_TIER10_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A9)
+#define ZCL_CURRENT_TIER10_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AA)
+#define ZCL_CURRENT_TIER10_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AB)
+#define ZCL_CURRENT_TIER10_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AC)
+#define ZCL_CURRENT_TIER10_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AD)
+#define ZCL_CURRENT_TIER10_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AE)
+#define ZCL_CURRENT_TIER10_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AF)
+#define ZCL_CURRENT_TIER11_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B0)
+#define ZCL_CURRENT_TIER11_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B1)
+#define ZCL_CURRENT_TIER11_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B2)
+#define ZCL_CURRENT_TIER11_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B3)
+#define ZCL_CURRENT_TIER11_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B4)
+#define ZCL_CURRENT_TIER11_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B5)
+#define ZCL_CURRENT_TIER11_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B6)
+#define ZCL_CURRENT_TIER11_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B7)
+#define ZCL_CURRENT_TIER11_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B8)
+#define ZCL_CURRENT_TIER11_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B9)
+#define ZCL_CURRENT_TIER11_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BA)
+#define ZCL_CURRENT_TIER11_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BB)
+#define ZCL_CURRENT_TIER11_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BC)
+#define ZCL_CURRENT_TIER11_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BD)
+#define ZCL_CURRENT_TIER11_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BE)
+#define ZCL_CURRENT_TIER11_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BF)
+#define ZCL_CURRENT_TIER12_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C0)
+#define ZCL_CURRENT_TIER12_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C1)
+#define ZCL_CURRENT_TIER12_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C2)
+#define ZCL_CURRENT_TIER12_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C3)
+#define ZCL_CURRENT_TIER12_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C4)
+#define ZCL_CURRENT_TIER12_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C5)
+#define ZCL_CURRENT_TIER12_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C6)
+#define ZCL_CURRENT_TIER12_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C7)
+#define ZCL_CURRENT_TIER12_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C8)
+#define ZCL_CURRENT_TIER12_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C9)
+#define ZCL_CURRENT_TIER12_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CA)
+#define ZCL_CURRENT_TIER12_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CB)
+#define ZCL_CURRENT_TIER12_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CC)
+#define ZCL_CURRENT_TIER12_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CD)
+#define ZCL_CURRENT_TIER12_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CE)
+#define ZCL_CURRENT_TIER12_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CF)
+#define ZCL_CURRENT_TIER13_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D0)
+#define ZCL_CURRENT_TIER13_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D1)
+#define ZCL_CURRENT_TIER13_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D2)
+#define ZCL_CURRENT_TIER13_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D3)
+#define ZCL_CURRENT_TIER13_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D4)
+#define ZCL_CURRENT_TIER13_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D5)
+#define ZCL_CURRENT_TIER13_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D6)
+#define ZCL_CURRENT_TIER13_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D7)
+#define ZCL_CURRENT_TIER13_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D8)
+#define ZCL_CURRENT_TIER13_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D9)
+#define ZCL_CURRENT_TIER13_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DA)
+#define ZCL_CURRENT_TIER13_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DB)
+#define ZCL_CURRENT_TIER13_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DC)
+#define ZCL_CURRENT_TIER13_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DD)
+#define ZCL_CURRENT_TIER13_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DE)
+#define ZCL_CURRENT_TIER13_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DF)
+#define ZCL_CURRENT_TIER14_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E0)
+#define ZCL_CURRENT_TIER14_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E1)
+#define ZCL_CURRENT_TIER14_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E2)
+#define ZCL_CURRENT_TIER14_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E3)
+#define ZCL_CURRENT_TIER14_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E4)
+#define ZCL_CURRENT_TIER14_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E5)
+#define ZCL_CURRENT_TIER14_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E6)
+#define ZCL_CURRENT_TIER14_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E7)
+#define ZCL_CURRENT_TIER14_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E8)
+#define ZCL_CURRENT_TIER14_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E9)
+#define ZCL_CURRENT_TIER14_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EA)
+#define ZCL_CURRENT_TIER14_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EB)
+#define ZCL_CURRENT_TIER14_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EC)
+#define ZCL_CURRENT_TIER14_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09ED)
+#define ZCL_CURRENT_TIER14_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EE)
+#define ZCL_CURRENT_TIER14_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EF)
+#define ZCL_CURRENT_TIER15_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F0)
+#define ZCL_CURRENT_TIER15_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F1)
+#define ZCL_CURRENT_TIER15_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F2)
+#define ZCL_CURRENT_TIER15_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F3)
+#define ZCL_CURRENT_TIER15_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F4)
+#define ZCL_CURRENT_TIER15_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F5)
+#define ZCL_CURRENT_TIER15_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F6)
+#define ZCL_CURRENT_TIER15_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F7)
+#define ZCL_CURRENT_TIER15_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F8)
+#define ZCL_CURRENT_TIER15_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F9)
+#define ZCL_CURRENT_TIER15_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FA)
+#define ZCL_CURRENT_TIER15_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FB)
+#define ZCL_CURRENT_TIER15_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FC)
+#define ZCL_CURRENT_TIER15_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FD)
+#define ZCL_CURRENT_TIER15_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FE)
+#define ZCL_CURRENT_TIER15_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FF)
+#define ZCL_BILL_TO_DATE_DELIVERED_ATTRIBUTE_ID (0x0A00)
+#define ZCL_BILL_TO_DATE_TIME_STAMP_DELIVERED_ATTRIBUTE_ID (0x0A01)
+#define ZCL_PROJECTED_BILL_DELIVERED_ATTRIBUTE_ID (0x0A02)
+#define ZCL_PROJECTED_BILL_TIME_STAMP_DELIVERED_ATTRIBUTE_ID (0x0A03)
+#define ZCL_BILL_DELIVERED_TRAILING_DIGIT_ATTRIBUTE_ID (0x0A04)
+#define ZCL_BILL_TO_DATE_RECEIVED_ATTRIBUTE_ID (0x0A10)
+#define ZCL_BILL_TO_DATE_TIME_STAMP_RECEIVED_ATTRIBUTE_ID (0x0A11)
+#define ZCL_PROJECTED_BILL_RECEIVED_ATTRIBUTE_ID (0x0A12)
+#define ZCL_PROJECTED_BILL_TIME_STAMP_RECEIVED_ATTRIBUTE_ID (0x0A13)
+#define ZCL_BILL_RECEIVED_TRAILING_DIGIT_ATTRIBUTE_ID (0x0A14)
+#define ZCL_PROPOSED_CHANGE_SUPPLY_IMPLEMENTATION_TIME_ATTRIBUTE_ID (0x0B00)
+#define ZCL_PROPOSED_CHANGE_SUPPLY_STATUS_ATTRIBUTE_ID (0x0B01)
+#define ZCL_UNCONTROLLED_FLOW_THESHOLD_ATTRIBUTE_ID (0x0B10)
+#define ZCL_UNCONTROLLED_FLOW_THESHOLD_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0B11)
+#define ZCL_UNCONTROLLED_FLOW_MULTIPLIER_ATTRIBUTE_ID (0x0B12)
+#define ZCL_UNCONTROLLED_FLOW_DIVISOR_ATTRIBUTE_ID (0x0B13)
+#define ZCL_FLOW_STABILIZATION_PERIOD_ATTRIBUTE_ID (0x0B14)
+#define ZCL_FLOW_MEASUREMENT_PERIOD_ATTRIBUTE_ID (0x0B15)
+#define ZCL_ALTERNATIVE_INSTANTANEOUS_DEMAND_ATTRIBUTE_ID (0x0C00)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C01)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C02)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C03)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C04)
+#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_START_TIME_DELIVERED_ATTRIBUTE_ID (0x0C05)
+#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_START_TIME_RECEIVED_ATTRIBUTE_ID (0x0C06)
+#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_VALUE_DELIVERED_ATTRIBUTE_ID (0x0C07)
+#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_VALUE_RECEIVED_ATTRIBUTE_ID (0x0C08)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_MAX_PRESSURE_ATTRIBUTE_ID (0x0C09)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_MIN_PRESSURE_ATTRIBUTE_ID (0x0C0A)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_PRESSURE_ATTRIBUTE_ID (0x0C0B)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MIN_PRESSURE_ATTRIBUTE_ID (0x0C0C)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_ALTERNATIVE_MAX_DEMAND_ATTRIBUTE_ID (0x0C0D)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_ATTRIBUTE_ID (0x0C0E)
+#define ZCL_CURRENT_ALTERNATIVE_MONTH_MAX_DEMAND_ATTRIBUTE_ID (0x0C0F)
+#define ZCL_CURRENT_ALTERNATIVE_YEAR_MAX_DEMAND_ATTRIBUTE_ID (0x0C10)
+#define ZCL_PREVIOUS_DAY2_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C20)
+#define ZCL_PREVIOUS_DAY2_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C21)
+#define ZCL_PREVIOUS_DAY3_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C22)
+#define ZCL_PREVIOUS_DAY3_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C23)
+#define ZCL_PREVIOUS_DAY4_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C24)
+#define ZCL_PREVIOUS_DAY4_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C25)
+#define ZCL_PREVIOUS_DAY5_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C26)
+#define ZCL_PREVIOUS_DAY5_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C27)
+#define ZCL_PREVIOUS_DAY6_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C28)
+#define ZCL_PREVIOUS_DAY6_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C29)
+#define ZCL_PREVIOUS_DAY7_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C2A)
+#define ZCL_PREVIOUS_DAY7_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C2B)
+#define ZCL_PREVIOUS_DAY8_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C2C)
+#define ZCL_PREVIOUS_DAY8_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C2D)
+#define ZCL_CURRENT_WEEK_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C30)
+#define ZCL_CURRENT_WEEK_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C31)
+#define ZCL_PREVIOUS_WEEK_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C32)
+#define ZCL_PREVIOUS_WEEK_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C33)
+#define ZCL_PREVIOUS_WEEK2_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C34)
+#define ZCL_PREVIOUS_WEEK2_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C35)
+#define ZCL_PREVIOUS_WEEK3_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C36)
+#define ZCL_PREVIOUS_WEEK3_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C37)
+#define ZCL_PREVIOUS_WEEK4_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C38)
+#define ZCL_PREVIOUS_WEEK4_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C39)
+#define ZCL_PREVIOUS_WEEK5_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C3A)
+#define ZCL_PREVIOUS_WEEK5_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C3B)
+#define ZCL_CURRENT_MONTH_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C40)
+#define ZCL_CURRENT_MONTH_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C41)
+#define ZCL_PREVIOUS_MONTH_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C42)
+#define ZCL_PREVIOUS_MONTH_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C43)
+#define ZCL_PREVIOUS_MONTH2_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C44)
+#define ZCL_PREVIOUS_MONTH2_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C45)
+#define ZCL_PREVIOUS_MONTH3_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C46)
+#define ZCL_PREVIOUS_MONTH3_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C47)
+#define ZCL_PREVIOUS_MONTH4_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C48)
+#define ZCL_PREVIOUS_MONTH4_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C49)
+#define ZCL_PREVIOUS_MONTH5_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C4A)
+#define ZCL_PREVIOUS_MONTH5_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C4B)
+#define ZCL_PREVIOUS_MONTH6_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C4C)
+#define ZCL_PREVIOUS_MONTH6_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C4D)
+#define ZCL_PREVIOUS_MONTH7_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C4E)
+#define ZCL_PREVIOUS_MONTH7_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C4F)
+#define ZCL_PREVIOUS_MONTH8_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C50)
+#define ZCL_PREVIOUS_MONTH8_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C51)
+#define ZCL_PREVIOUS_MONTH9_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C52)
+#define ZCL_PREVIOUS_MONTH9_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C53)
+#define ZCL_PREVIOUS_MONTH10_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C54)
+#define ZCL_PREVIOUS_MONTH10_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C55)
+#define ZCL_PREVIOUS_MONTH11_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C56)
+#define ZCL_PREVIOUS_MONTH11_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C57)
+#define ZCL_PREVIOUS_MONTH12_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C58)
+#define ZCL_PREVIOUS_MONTH12_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C59)
+#define ZCL_PREVIOUS_MONTH13_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C5A)
+#define ZCL_PREVIOUS_MONTH13_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C5B)
+#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0C5C)
+#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x0C5D)
+#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x0C5E)
+#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0C5F)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0C60)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x0C61)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x0C62)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0C63)
+#define ZCL_CURRENT_ACTIVE_SUMMATION_Q1_ATTRIBUTE_ID (0x0D01)
+#define ZCL_CURRENT_ACTIVE_SUMMATION_Q2_ATTRIBUTE_ID (0x0D02)
+#define ZCL_CURRENT_ACTIVE_SUMMATION_Q3_ATTRIBUTE_ID (0x0D03)
+#define ZCL_CURRENT_ACTIVE_SUMMATION_Q4_ATTRIBUTE_ID (0x0D04)
+#define ZCL_CURRENT_REACTIVE_SUMMATION_Q1_ATTRIBUTE_ID (0x0D05)
+#define ZCL_CURRENT_REACTIVE_SUMMATION_Q2_ATTRIBUTE_ID (0x0D06)
+#define ZCL_CURRENT_REACTIVE_SUMMATION_Q3_ATTRIBUTE_ID (0x0D07)
+#define ZCL_CURRENT_REACTIVE_SUMMATION_Q4_ATTRIBUTE_ID (0x0D08)
+
+// Attribute ids for cluster: Messaging
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Tunneling
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CLOSE_TUNNEL_TIMEOUT_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Prepayment
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PAYMENT_CONTROL_CONFIGURATION_ATTRIBUTE_ID (0x0000)
+#define ZCL_CREDIT_REMAINING_ATTRIBUTE_ID (0x0001)
+#define ZCL_EMERGENCY_CREDIT_REMAINING_ATTRIBUTE_ID (0x0002)
+#define ZCL_CREDIT_STATUS_ATTRIBUTE_ID (0x0003)
+#define ZCL_CREDIT_REMAINING_TIMESTAMP_ATTRIBUTE_ID (0x0004)
+#define ZCL_ACCUMULATED_DEBT_ATTRIBUTE_ID (0x0005)
+#define ZCL_OVERALL_DEBT_CAP_ATTRIBUTE_ID (0x0006)
+#define ZCL_EMERGENCY_CREDIT_LIMIT_ALLOWANCE_ATTRIBUTE_ID (0x0010)
+#define ZCL_EMERGENCY_CREDIT_THRESHOLD_ATTRIBUTE_ID (0x0011)
+#define ZCL_TOTAL_CREDIT_ADDED_ATTRIBUTE_ID (0x0020)
+#define ZCL_MAX_CREDIT_LIMIT_ATTRIBUTE_ID (0x0021)
+#define ZCL_MAX_CREDIT_PER_TOP_UP_ATTRIBUTE_ID (0x0022)
+#define ZCL_FRIENDLY_CREDIT_WARNING_ATTRIBUTE_ID (0x0030)
+#define ZCL_LOW_CREDIT_WARNING_ATTRIBUTE_ID (0x0031)
+#define ZCL_IHD_LOW_CREDIT_WARNING_ATTRIBUTE_ID (0x0032)
+#define ZCL_INTERRUPT_SUSPEND_TIME_ATTRIBUTE_ID (0x0033)
+#define ZCL_REMAINING_FRIENDLY_CREDIT_TIME_ATTRIBUTE_ID (0x0034)
+#define ZCL_NEXT_FRIENDLY_CREDIT_PERIOD_ATTRIBUTE_ID (0x0035)
+#define ZCL_CUT_OFF_VALUE_ATTRIBUTE_ID (0x0040)
+#define ZCL_TOKEN_CARRIER_ID_ATTRIBUTE_ID (0x0080)
+#define ZCL_TOP_UP_DATE_TIME_1_ATTRIBUTE_ID (0x0100)
+#define ZCL_TOP_UP_AMOUNT_1_ATTRIBUTE_ID (0x0101)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_1_ATTRIBUTE_ID (0x0102)
+#define ZCL_TOP_UP_CODE_1_ATTRIBUTE_ID (0x0103)
+#define ZCL_TOP_UP_DATE_TIME_2_ATTRIBUTE_ID (0x0110)
+#define ZCL_TOP_UP_AMOUNT_2_ATTRIBUTE_ID (0x0111)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_2_ATTRIBUTE_ID (0x0112)
+#define ZCL_TOP_UP_CODE_2_ATTRIBUTE_ID (0x0113)
+#define ZCL_TOP_UP_DATE_TIME_3_ATTRIBUTE_ID (0x0120)
+#define ZCL_TOP_UP_AMOUNT_3_ATTRIBUTE_ID (0x0121)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_3_ATTRIBUTE_ID (0x0122)
+#define ZCL_TOP_UP_CODE_3_ATTRIBUTE_ID (0x0123)
+#define ZCL_TOP_UP_DATE_TIME_4_ATTRIBUTE_ID (0x0130)
+#define ZCL_TOP_UP_AMOUNT_4_ATTRIBUTE_ID (0x0131)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_4_ATTRIBUTE_ID (0x0132)
+#define ZCL_TOP_UP_CODE_4_ATTRIBUTE_ID (0x0133)
+#define ZCL_TOP_UP_DATE_TIME_5_ATTRIBUTE_ID (0x0140)
+#define ZCL_TOP_UP_AMOUNT_5_ATTRIBUTE_ID (0x0141)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_5_ATTRIBUTE_ID (0x0142)
+#define ZCL_TOP_UP_CODE_5_ATTRIBUTE_ID (0x0143)
+#define ZCL_DEBT_LABEL_1_ATTRIBUTE_ID (0x0210)
+#define ZCL_DEBT_AMOUNT_1_ATTRIBUTE_ID (0x0211)
+#define ZCL_DEBT_RECOVERY_METHOD_1_ATTRIBUTE_ID (0x0212)
+#define ZCL_DEBT_RECOVERY_START_TIME_1_ATTRIBUTE_ID (0x0213)
+#define ZCL_DEBT_RECOVERY_COLLECTION_TIME_1_ATTRIBUTE_ID (0x0214)
+#define ZCL_DEBT_RECOVERY_FREQUENCY_1_ATTRIBUTE_ID (0x0216)
+#define ZCL_DEBT_RECOVERY_AMOUNT_1_ATTRIBUTE_ID (0x0217)
+#define ZCL_DEBT_RECOVERY_TOP_UP_PERCENTAGE_1_ATTRIBUTE_ID (0x0219)
+#define ZCL_DEBT_LABEL_2_ATTRIBUTE_ID (0x0220)
+#define ZCL_DEBT_AMOUNT_2_ATTRIBUTE_ID (0x0221)
+#define ZCL_DEBT_RECOVERY_METHOD_2_ATTRIBUTE_ID (0x0222)
+#define ZCL_DEBT_RECOVERY_START_TIME_2_ATTRIBUTE_ID (0x0223)
+#define ZCL_DEBT_RECOVERY_COLLECTION_TIME_2_ATTRIBUTE_ID (0x0224)
+#define ZCL_DEBT_RECOVERY_FREQUENCY_2_ATTRIBUTE_ID (0x0226)
+#define ZCL_DEBT_RECOVERY_AMOUNT_2_ATTRIBUTE_ID (0x0227)
+#define ZCL_DEBT_RECOVERY_TOP_UP_PERCENTAGE_2_ATTRIBUTE_ID (0x0229)
+#define ZCL_DEBT_LABEL_3_ATTRIBUTE_ID (0x0230)
+#define ZCL_DEBT_AMOUNT_3_ATTRIBUTE_ID (0x0231)
+#define ZCL_DEBT_RECOVERY_METHOD_3_ATTRIBUTE_ID (0x0232)
+#define ZCL_DEBT_RECOVERY_START_TIME_3_ATTRIBUTE_ID (0x0233)
+#define ZCL_DEBT_RECOVERY_COLLECTION_TIME_3_ATTRIBUTE_ID (0x0234)
+#define ZCL_DEBT_RECOVERY_FREQUENCY_3_ATTRIBUTE_ID (0x0236)
+#define ZCL_DEBT_RECOVERY_AMOUNT_3_ATTRIBUTE_ID (0x0237)
+#define ZCL_DEBT_RECOVERY_TOP_UP_PERCENTAGE_3_ATTRIBUTE_ID (0x0239)
+#define ZCL_PREPAYMENT_ALARM_STATUS_ATTRIBUTE_ID (0x0400)
+#define ZCL_PREPAY_GENERIC_ALARM_MASK_ATTRIBUTE_ID (0x0401)
+#define ZCL_PREPAY_SWITCH_ALARM_MASK_ATTRIBUTE_ID (0x0402)
+#define ZCL_PREPAY_EVENT_ALARM_MASK_ATTRIBUTE_ID (0x0403)
+#define ZCL_HISTORICAL_COST_CONSUMPTION_FORMATTING_ATTRIBUTE_ID (0x0500)
+#define ZCL_CONSUMPTION_UNIT_OF_MEASUREMENT_ATTRIBUTE_ID (0x0501)
+#define ZCL_CURRENCY_SCALING_FACTOR_ATTRIBUTE_ID (0x0502)
+#define ZCL_PREPAYMANT_CURRENCY_ATTRIBUTE_ID (0x0503)
+#define ZCL_CURRENT_DAY_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x051C)
+#define ZCL_CURRENT_DAY_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x051D)
+#define ZCL_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x051E)
+#define ZCL_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x051F)
+#define ZCL_PREVIOUS_DAY_2_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0520)
+#define ZCL_PREVIOUS_DAY_2_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0521)
+#define ZCL_PREVIOUS_DAY_3_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0522)
+#define ZCL_PREVIOUS_DAY_3_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0523)
+#define ZCL_PREVIOUS_DAY_4_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0524)
+#define ZCL_PREVIOUS_DAY_4_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0525)
+#define ZCL_PREVIOUS_DAY_5_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0526)
+#define ZCL_PREVIOUS_DAY_5_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0527)
+#define ZCL_PREVIOUS_DAY_6_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0528)
+#define ZCL_PREVIOUS_DAY_6_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0529)
+#define ZCL_PREVIOUS_DAY_7_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x052A)
+#define ZCL_PREVIOUS_DAY_7_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x052B)
+#define ZCL_PREVIOUS_DAY_8_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x052C)
+#define ZCL_PREVIOUS_DAY_8_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x052D)
+#define ZCL_CURRENT_WEEK_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0530)
+#define ZCL_CURRENT_WEEK_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0531)
+#define ZCL_PREVIOUS_WEEK_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0532)
+#define ZCL_PREVIOUS_WEEK_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0533)
+#define ZCL_PREVIOUS_WEEK_2_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0534)
+#define ZCL_PREVIOUS_WEEK_2_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0535)
+#define ZCL_PREVIOUS_WEEK_3_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0536)
+#define ZCL_PREVIOUS_WEEK_3_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0537)
+#define ZCL_PREVIOUS_WEEK_4_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0538)
+#define ZCL_PREVIOUS_WEEK_4_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0539)
+#define ZCL_PREVIOUS_WEEK_5_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x053A)
+#define ZCL_PREVIOUS_WEEK_5_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x053B)
+#define ZCL_CURRENT_MONTH_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0540)
+#define ZCL_CURRENT_MONTH_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0541)
+#define ZCL_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0542)
+#define ZCL_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0543)
+#define ZCL_PREVIOUS_MONTH_2_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0544)
+#define ZCL_PREVIOUS_MONTH_2_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0545)
+#define ZCL_PREVIOUS_MONTH_3_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0546)
+#define ZCL_PREVIOUS_MONTH_3_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0547)
+#define ZCL_PREVIOUS_MONTH_4_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0548)
+#define ZCL_PREVIOUS_MONTH_4_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0549)
+#define ZCL_PREVIOUS_MONTH_5_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x054A)
+#define ZCL_PREVIOUS_MONTH_5_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x054B)
+#define ZCL_PREVIOUS_MONTH_6_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x054C)
+#define ZCL_PREVIOUS_MONTH_6_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x054D)
+#define ZCL_PREVIOUS_MONTH_7_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x054E)
+#define ZCL_PREVIOUS_MONTH_7_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x054F)
+#define ZCL_PREVIOUS_MONTH_8_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0550)
+#define ZCL_PREVIOUS_MONTH_8_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0551)
+#define ZCL_PREVIOUS_MONTH_9_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0552)
+#define ZCL_PREVIOUS_MONTH_9_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0553)
+#define ZCL_PREVIOUS_MONTH_10_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0554)
+#define ZCL_PREVIOUS_MONTH_10_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0555)
+#define ZCL_PREVIOUS_MONTH_11_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0556)
+#define ZCL_PREVIOUS_MONTH_11_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0557)
+#define ZCL_PREVIOUS_MONTH_12_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0558)
+#define ZCL_PREVIOUS_MONTH_12_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0559)
+#define ZCL_PREVIOUS_MONTH_13_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x055A)
+#define ZCL_PREVIOUS_MONTH_13_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x055B)
+#define ZCL_PREPAYMENT_HISTORICAL_FREEZE_TIME_ATTRIBUTE_ID (0x055C)
+
+// Attribute ids for cluster: Energy Management
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOAD_CONTROL_STATE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CURRENT_EVENT_ID_ATTRIBUTE_ID (0x0001)
+#define ZCL_CURRENT_EVENT_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_CONFORMANCE_LEVEL_ATTRIBUTE_ID (0x0003)
+#define ZCL_MINIMUM_OFF_TIME_ATTRIBUTE_ID (0x0004)
+#define ZCL_MINIMUM_ON_TIME_ATTRIBUTE_ID (0x0005)
+#define ZCL_MINIMUM_CYCLE_PERIOD_ATTRIBUTE_ID (0x0006)
+
+// Attribute ids for cluster: Calendar
+
+// Client attributes
+
+// Server attributes
+#define ZCL_AUXILIARY_SWITCH_1_LABEL_ATTRIBUTE_ID (0x0000)
+#define ZCL_AUXILIARY_SWITCH_2_LABEL_ATTRIBUTE_ID (0x0001)
+#define ZCL_AUXILIARY_SWITCH_3_LABEL_ATTRIBUTE_ID (0x0002)
+#define ZCL_AUXILIARY_SWITCH_4_LABEL_ATTRIBUTE_ID (0x0003)
+#define ZCL_AUXILIARY_SWITCH_5_LABEL_ATTRIBUTE_ID (0x0004)
+#define ZCL_AUXILIARY_SWITCH_6_LABEL_ATTRIBUTE_ID (0x0005)
+#define ZCL_AUXILIARY_SWITCH_7_LABEL_ATTRIBUTE_ID (0x0006)
+#define ZCL_AUXILIARY_SWITCH_8_LABEL_ATTRIBUTE_ID (0x0007)
+
+// Attribute ids for cluster: Device Management
+
+// Client attributes
+#define ZCL_PROVIDER_ID_CLIENT_ATTRIBUTE_ID (0x0000)
+#define ZCL_RECEIVED_PROVIDER_ID_CLIENT_ATTRIBUTE_ID (0x0010)
+#define ZCL_TOU_TARIFF_ACTIVATION_ATTRIBUTE_ID (0x0100)
+#define ZCL_BLOCK_TARIFF_ACTIVATED_ATTRIBUTE_ID (0x0101)
+#define ZCL_BLOCK_TOU_TARIFF_ACTIVATED_ATTRIBUTE_ID (0x0102)
+#define ZCL_SINGLE_TARIFF_RATE_ACTIVATED_ATTRIBUTE_ID (0x0103)
+#define ZCL_ASYNCHRONOUS_BILLING_OCCURRED_ATTRIBUTE_ID (0x0104)
+#define ZCL_SYNCHRONOUS_BILLING_OCCURRED_ATTRIBUTE_ID (0x0105)
+#define ZCL_TARIFF_NOT_SUPPORTED_ATTRIBUTE_ID (0x0106)
+#define ZCL_PRICE_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x0107)
+#define ZCL_CURRENCY_CHANGE_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x0108)
+#define ZCL_CURRENCY_CHANGE_PASSIVE_UPDATED_ATTRIBUTE_ID (0x0109)
+#define ZCL_PRICE_MATRIX_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x010A)
+#define ZCL_PRICE_MATRIX_PASSIVE_UPDATED_ATTRIBUTE_ID (0x010B)
+#define ZCL_TARIFF_CHANGE_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x010C)
+#define ZCL_TARIFF_CHANGE_PASSIVE_UPDATED_ATTRIBUTE_ID (0x010D)
+#define ZCL_PUBLISH_PRICE_RECEIVED_ATTRIBUTE_ID (0x01B0)
+#define ZCL_PUBLISH_PRICE_ACTIONED_ATTRIBUTE_ID (0x01B1)
+#define ZCL_PUBLISH_PRICE_CANCELLED_ATTRIBUTE_ID (0x01B2)
+#define ZCL_PUBLISH_PRICE_REJECTED_ATTRIBUTE_ID (0x01B3)
+#define ZCL_PUBLISH_TARIFF_INFO_RECEIVED_ATTRIBUTE_ID (0x01B4)
+#define ZCL_PUBLISH_TARIFF_INFO_ACTIONED_ATTRIBUTE_ID (0x01B5)
+#define ZCL_PUBLISH_TARIFF_INFO_CANCELLED_ATTRIBUTE_ID (0x01B6)
+#define ZCL_PUBLISH_TARIFF_INFO_REJECTED_ATTRIBUTE_ID (0x01B7)
+#define ZCL_PUBLISH_PRICE_MATRIX_RECEIVED_ATTRIBUTE_ID (0x01B8)
+#define ZCL_PUBLISH_PRICE_MATRIX_ACTIONED_ATTRIBUTE_ID (0x01B9)
+#define ZCL_PUBLISH_PRICE_MATRIX_CANCELLED_ATTRIBUTE_ID (0x01BA)
+#define ZCL_PUBLISH_PRICE_MATRIX_REJECTED_ATTRIBUTE_ID (0x01BB)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_RECEIVED_ATTRIBUTE_ID (0x01BC)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_ACTIONED_ATTRIBUTE_ID (0x01BD)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_CANCELLED_ATTRIBUTE_ID (0x01BE)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_REJECTED_ATTRIBUTE_ID (0x01BF)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_RECEIVED_ATTRIBUTE_ID (0x01C0)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_ACTIONED_ATTRIBUTE_ID (0x01C1)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_CANCELLED_ATTRIBUTE_ID (0x01C2)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_REJECTED_ATTRIBUTE_ID (0x01C3)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_RECEIVED_ATTRIBUTE_ID (0x01C4)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_ACTIONED_ATTRIBUTE_ID (0x01C5)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_CANCELLED_ATTRIBUTE_ID (0x01C6)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_REJECTED_ATTRIBUTE_ID (0x01C7)
+#define ZCL_PUBLISH_CO2_VALUE_RECEIVED_ATTRIBUTE_ID (0x01C8)
+#define ZCL_PUBLISH_CO2_VALUE_ACTIONED_ATTRIBUTE_ID (0x01C9)
+#define ZCL_PUBLISH_CO2_VALUE_CANCELLED_ATTRIBUTE_ID (0x01CA)
+#define ZCL_PUBLISH_CO2_VALUE_REJECTED_ATTRIBUTE_ID (0x01CB)
+#define ZCL_PUBLISH_CPP_EVENT_RECEIVED_ATTRIBUTE_ID (0x01CC)
+#define ZCL_PUBLISH_CPP_EVENT_ACTIONED_ATTRIBUTE_ID (0x01CD)
+#define ZCL_PUBLISH_CPP_EVENT_CANCELLED_ATTRIBUTE_ID (0x01CE)
+#define ZCL_PUBLISH_CPP_EVENT_REJECTED_ATTRIBUTE_ID (0x01CF)
+#define ZCL_PUBLISH_TIER_LABELS_RECEIVED_ATTRIBUTE_ID (0x01D0)
+#define ZCL_PUBLISH_TIER_LABELS_ACTIONED_ATTRIBUTE_ID (0x01D1)
+#define ZCL_PUBLISH_TIER_LABELS_CANCELLED_ATTRIBUTE_ID (0x01D2)
+#define ZCL_PUBLISH_TIER_LABELS_REJECTED_ATTRIBUTE_ID (0x01D3)
+#define ZCL_PUBLISH_BILLING_PERIOD_RECEIVED_ATTRIBUTE_ID (0x01D4)
+#define ZCL_PUBLISH_BILLING_PERIOD_ACTIONED_ATTRIBUTE_ID (0x01D5)
+#define ZCL_PUBLISH_BILLING_PERIOD_CANCELLED_ATTRIBUTE_ID (0x01D6)
+#define ZCL_PUBLISH_BILLING_PERIOD_REJECTED_ATTRIBUTE_ID (0x01D7)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_RECEIVED_ATTRIBUTE_ID (0x01D8)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_ACTIONED_ATTRIBUTE_ID (0x01D9)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_CANCELLED_ATTRIBUTE_ID (0x01DA)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_REJECTED_ATTRIBUTE_ID (0x01DB)
+#define ZCL_PUBLISH_BLOCK_PERIOD_RECEIVED_ATTRIBUTE_ID (0x01DC)
+#define ZCL_PUBLISH_BLOCK_PERIOD_ACTIONED_ATTRIBUTE_ID (0x01DD)
+#define ZCL_PUBLISH_BLOCK_PERIOD_CANCELLED_ATTRIBUTE_ID (0x01DE)
+#define ZCL_PUBLISH_BLOCK_PERIOD_REJECTED_ATTRIBUTE_ID (0x01DF)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_RECEIVED_ATTRIBUTE_ID (0x01E0)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_ACTIONED_ATTRIBUTE_ID (0x01E1)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_CANCELLED_ATTRIBUTE_ID (0x01E2)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_REJECTED_ATTRIBUTE_ID (0x01E3)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_RECEIVED_ATTRIBUTE_ID (0x01E4)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_ACTIONED_ATTRIBUTE_ID (0x01E5)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_CANCELLED_ATTRIBUTE_ID (0x01E6)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_REJECTED_ATTRIBUTE_ID (0x01E7)
+#define ZCL_CHECK_METER_ATTRIBUTE_ID (0x0200)
+#define ZCL_LOW_BATTERY_ATTRIBUTE_ID (0x0201)
+#define ZCL_TAMPER_DETECT_ATTRIBUTE_ID (0x0202)
+#define ZCL_DEVICE_MANAGEMENT_SUPPLY_STATUS_ATTRIBUTE_ID (0x0203)
+#define ZCL_SUPPLY_QUALITY_ATTRIBUTE_ID (0x0204)
+#define ZCL_LEAK_DETECT_ATTRIBUTE_ID (0x0205)
+#define ZCL_SERVICE_DISCONNECT_ATTRIBUTE_ID (0x0206)
+#define ZCL_REVERSE_FLOW_GENERAL_ATTRIBUTE_ID (0x0207)
+#define ZCL_METER_COVER_REMOVED_ATTRIBUTE_ID (0x0208)
+#define ZCL_METER_COVER_CLOSED_ATTRIBUTE_ID (0x0209)
+#define ZCL_STRONG_MAGNETIC_FIELD_ATTRIBUTE_ID (0x020A)
+#define ZCL_NO_STRONG_MAGNETIC_FIELD_ATTRIBUTE_ID (0x020B)
+#define ZCL_BATTERY_FAILURE_ATTRIBUTE_ID (0x020C)
+#define ZCL_PROGRAM_MEMORY_ERROR_ATTRIBUTE_ID (0x020D)
+#define ZCL_RAM_ERROR_ATTRIBUTE_ID (0x020E)
+#define ZCL_NV_MEMORY_ERROR_ATTRIBUTE_ID (0x020F)
+#define ZCL_LOW_VOLTAGE_L1_ATTRIBUTE_ID (0x0210)
+#define ZCL_HIGH_VOLTAGE_L1_ATTRIBUTE_ID (0x0211)
+#define ZCL_LOW_VOLTAGE_L2_ATTRIBUTE_ID (0x0212)
+#define ZCL_HIGH_VOLTAGE_L2_ATTRIBUTE_ID (0x0213)
+#define ZCL_LOW_VOLTAGE_L3_ATTRIBUTE_ID (0x0214)
+#define ZCL_HIGH_VOLTAGE_L3_ATTRIBUTE_ID (0x0215)
+#define ZCL_OVER_CURRENT_L1_ATTRIBUTE_ID (0x0216)
+#define ZCL_OVER_CURRENT_L2_ATTRIBUTE_ID (0x0217)
+#define ZCL_OVER_CURRENT_L3_ATTRIBUTE_ID (0x0218)
+#define ZCL_FREQUENCY_TOO_LOW_L1_ATTRIBUTE_ID (0x0219)
+#define ZCL_FREQUENCY_TOO_HIGH_L1_ATTRIBUTE_ID (0x021A)
+#define ZCL_FREQUENCY_TOO_LOW_L2_ATTRIBUTE_ID (0x021B)
+#define ZCL_FREQUENCY_TOO_HIGH_L2_ATTRIBUTE_ID (0x021C)
+#define ZCL_FREQUENCY_TOO_LOW_L3_ATTRIBUTE_ID (0x021D)
+#define ZCL_FREQUENCY_TOO_HIGH_L3_ATTRIBUTE_ID (0x021E)
+#define ZCL_GROUND_FAULT_ATTRIBUTE_ID (0x021F)
+#define ZCL_ELECTRIC_TAMPER_DETECT_ATTRIBUTE_ID (0x0220)
+#define ZCL_INCORRECT_POLARITY_ATTRIBUTE_ID (0x0221)
+#define ZCL_CURRENT_NO_VOLTAGE_ATTRIBUTE_ID (0x0222)
+#define ZCL_UNDER_VOLTAGE_ATTRIBUTE_ID (0x0223)
+#define ZCL_OVER_VOLTAGE_ATTRIBUTE_ID (0x0224)
+#define ZCL_NORMAL_VOLTAGE_ATTRIBUTE_ID (0x0225)
+#define ZCL_PF_BELOW_THRESHOLD_ATTRIBUTE_ID (0x0226)
+#define ZCL_PF_ABOVE_THRESHOLD_ATTRIBUTE_ID (0x0227)
+#define ZCL_TERMINAL_COVER_REMOVED_ATTRIBUTE_ID (0x0228)
+#define ZCL_TERMINAL_COVER_CLOSED_ATTRIBUTE_ID (0x0229)
+#define ZCL_BURST_DETECT_ATTRIBUTE_ID (0x0230)
+#define ZCL_PRESSURE_TOO_LOW_ATTRIBUTE_ID (0x0231)
+#define ZCL_PRESSURE_TOO_HIGH_ATTRIBUTE_ID (0x0232)
+#define ZCL_FLOW_SENSOR_COMMUNICATION_ERROR_ATTRIBUTE_ID (0x0233)
+#define ZCL_FLOW_SENSOR_MEASUREMENT_FAULT_ATTRIBUTE_ID (0x0234)
+#define ZCL_FLOW_SENSOR_REVERSE_FLOW_ATTRIBUTE_ID (0x0235)
+#define ZCL_FLOW_SENSOR_AIR_DETECT_ATTRIBUTE_ID (0x0236)
+#define ZCL_PIPE_EMPTY_ATTRIBUTE_ID (0x0237)
+#define ZCL_INLET_TEMP_SENSOR_FAULT_ATTRIBUTE_ID (0x0250)
+#define ZCL_OUTLET_TEMP_SENSOR_FAULT_ATTRIBUTE_ID (0x0251)
+#define ZCL_REVERSE_FLOW_ATTRIBUTE_ID (0x0260)
+#define ZCL_TILT_TAMPER_ATTRIBUTE_ID (0x0261)
+#define ZCL_BATTERY_COVER_REMOVED_ATTRIBUTE_ID (0x0262)
+#define ZCL_BATTERY_COVER_CLOSED_ATTRIBUTE_ID (0x0263)
+#define ZCL_EXCESS_FLOW_ATTRIBUTE_ID (0x0264)
+#define ZCL_TILT_TAMPER_ENABLED_ATTRIBUTE_ID (0x0265)
+#define ZCL_MEASUREMENT_SYSTEM_ERROR_ATTRIBUTE_ID (0x0270)
+#define ZCL_WATCHDOG_ERROR_ATTRIBUTE_ID (0x0271)
+#define ZCL_SUPPLY_DISCONNECT_FAILURE_ATTRIBUTE_ID (0x0272)
+#define ZCL_SUPPLY_CONNECT_FAILURE_ATTRIBUTE_ID (0x0273)
+#define ZCL_MEASUREMENT_SOFTWARE_CHANGED_ATTRIBUTE_ID (0x0274)
+#define ZCL_DST_ENABLED_ATTRIBUTE_ID (0x0275)
+#define ZCL_DST_DISABLED_ATTRIBUTE_ID (0x0276)
+#define ZCL_CLOCK_ADJ_BACKWARD_ATTRIBUTE_ID (0x0277)
+#define ZCL_CLOCK_ADJ_FORWARD_ATTRIBUTE_ID (0x0278)
+#define ZCL_CLOCK_INVALID_ATTRIBUTE_ID (0x0279)
+#define ZCL_COMMUNICATION_ERROR_HAN_ATTRIBUTE_ID (0x027A)
+#define ZCL_COMMUNICATION_OK_HAN_ATTRIBUTE_ID (0x027B)
+#define ZCL_METER_FRAUD_ATTEMPT_ATTRIBUTE_ID (0x027C)
+#define ZCL_POWER_LOSS_ATTRIBUTE_ID (0x027D)
+#define ZCL_UNUSUAL_HAN_TRAFFIC_ATTRIBUTE_ID (0x027E)
+#define ZCL_UNEXPECTED_CLOCK_CHANGE_ATTRIBUTE_ID (0x027F)
+#define ZCL_COMMS_USING_UNAUTHENTICATED_COMPONENT_ATTRIBUTE_ID (0x0280)
+#define ZCL_METERING_ERROR_REG_CLEAR_ATTRIBUTE_ID (0x0281)
+#define ZCL_METERING_ALARM_REG_CLEAR_ATTRIBUTE_ID (0x0282)
+#define ZCL_UNEXPECTED_HW_RESET_ATTRIBUTE_ID (0x0283)
+#define ZCL_UNEXPECTED_PROGRAM_EXECUTION_ATTRIBUTE_ID (0x0284)
+#define ZCL_LIMIT_THRESHOLD_EXCEEDED_ATTRIBUTE_ID (0x0285)
+#define ZCL_LIMIT_THRESHOLD_OK_ATTRIBUTE_ID (0x0286)
+#define ZCL_LIMIT_THRESHOLD_CHANGED_ATTRIBUTE_ID (0x0287)
+#define ZCL_MAXIMUM_DEMAND_EXCEEDED_ATTRIBUTE_ID (0x0288)
+#define ZCL_PROFILE_CLEARED_ATTRIBUTE_ID (0x0289)
+#define ZCL_LOAD_PROFILE_CLEARED_ATTRIBUTE_ID (0x028A)
+#define ZCL_BATTERY_WARN_ATTRIBUTE_ID (0x028B)
+#define ZCL_WRONG_SIGNATURE_ATTRIBUTE_ID (0x028C)
+#define ZCL_NO_SIGNATURE_ATTRIBUTE_ID (0x028D)
+#define ZCL_SIGNATURE_NOT_VALID_ATTRIBUTE_ID (0x028E)
+#define ZCL_UNAUTHORISE_ACTION_FROM_HAN_ATTRIBUTE_ID (0x028F)
+#define ZCL_FAST_POLLING_START_ATTRIBUTE_ID (0x0290)
+#define ZCL_FAST_POLLING_END_ATTRIBUTE_ID (0x0291)
+#define ZCL_METER_REPORTING_INTERVAL_CHANGED_ATTRIBUTE_ID (0x0292)
+#define ZCL_DISCONNECT_TO_LOAD_LIMIT_ATTRIBUTE_ID (0x0293)
+#define ZCL_METER_SUPPLY_STATUS_REGISTER_CHANGED_ATTRIBUTE_ID (0x0294)
+#define ZCL_METER_ALARM_STATUS_REGISTER_CHANGED_ATTRIBUTE_ID (0x0295)
+#define ZCL_EXTENDED_METER_ALARM_STATUS_REGISTER_CHANGED_ATTRIBUTE_ID (0x0296)
+#define ZCL_DATA_ACCESS_VIA_LOCAL_PORT_ATTRIBUTE_ID (0x0297)
+#define ZCL_CONFIGURE_MIRROR_SUCCESS_ATTRIBUTE_ID (0x0298)
+#define ZCL_CONFIGURE_MIRROR_FAILURE_ATTRIBUTE_ID (0x0299)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAG_SCHEME_SUCCESS_ATTRIBUTE_ID (0x029A)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAG_SCHEME_FAILURE_ATTRIBUTE_ID (0x029B)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAGS_SUCCESS_ATTRIBUTE_ID (0x029C)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAGS_FAILURE_ATTRIBUTE_ID (0x029D)
+#define ZCL_STAY_AWAKE_REQUEST_HAN_ATTRIBUTE_ID (0x029E)
+#define ZCL_STAY_AWAKE_REQUEST_WAN_ATTRIBUTE_ID (0x029F)
+#define ZCL_MANUFACTURER_SPECIFIC_A_ATTRIBUTE_ID (0x02B0)
+#define ZCL_MANUFACTURER_SPECIFIC_B_ATTRIBUTE_ID (0x02B1)
+#define ZCL_MANUFACTURER_SPECIFIC_C_ATTRIBUTE_ID (0x02B2)
+#define ZCL_MANUFACTURER_SPECIFIC_D_ATTRIBUTE_ID (0x02B3)
+#define ZCL_MANUFACTURER_SPECIFIC_E_ATTRIBUTE_ID (0x02B4)
+#define ZCL_MANUFACTURER_SPECIFIC_F_ATTRIBUTE_ID (0x02B5)
+#define ZCL_MANUFACTURER_SPECIFIC_G_ATTRIBUTE_ID (0x02B6)
+#define ZCL_MANUFACTURER_SPECIFIC_H_ATTRIBUTE_ID (0x02B7)
+#define ZCL_MANUFACTURER_SPECIFIC_I_ATTRIBUTE_ID (0x02B8)
+#define ZCL_GET_PROFILE_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02C0)
+#define ZCL_GET_PROFILE_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02C1)
+#define ZCL_GET_PROFILE_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02C2)
+#define ZCL_GET_PROFILE_COMMAND_REJECTED_ATTRIBUTE_ID (0x02C3)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02C4)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02C5)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02C6)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_REJECTED_ATTRIBUTE_ID (0x02C7)
+#define ZCL_MIRROR_REMOVED_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02C8)
+#define ZCL_MIRROR_REMOVED_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02C9)
+#define ZCL_MIRROR_REMOVED_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02CA)
+#define ZCL_MIRROR_REMOVED_COMMAND_REJECTED_ATTRIBUTE_ID (0x02CB)
+#define ZCL_GET_SNAPSHOT_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02CC)
+#define ZCL_GET_SNAPSHOT_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02CD)
+#define ZCL_GET_SNAPSHOT_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02CE)
+#define ZCL_GET_SNAPSHOT_COMMAND_REJECTED_ATTRIBUTE_ID (0x02CF)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02D0)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02D1)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02D2)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_REJECTED_ATTRIBUTE_ID (0x02D3)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02D4)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02D5)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02D6)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_REJECTED_ATTRIBUTE_ID (0x02D7)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02D8)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02D9)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02DA)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_REJECTED_ATTRIBUTE_ID (0x02DB)
+#define ZCL_START_SAMPLING_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02DC)
+#define ZCL_START_SAMPLING_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02DD)
+#define ZCL_START_SAMPLING_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02DE)
+#define ZCL_START_SAMPLING_COMMAND_REJECTED_ATTRIBUTE_ID (0x02DF)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02E0)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02E1)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02E2)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x02E3)
+#define ZCL_SUPPLY_ON_ATTRIBUTE_ID (0x02E4)
+#define ZCL_SUPPLY_ARMED_ATTRIBUTE_ID (0x02E5)
+#define ZCL_SUPPLY_OFF_ATTRIBUTE_ID (0x02E6)
+#define ZCL_DISCONNECTED_DUE_TO_TAMPER_DETECTED_ATTRIBUTE_ID (0x02E7)
+#define ZCL_MANUAL_DISCONNECT_ATTRIBUTE_ID (0x02E8)
+#define ZCL_MANUAL_CONNECT_ATTRIBUTE_ID (0x02E9)
+#define ZCL_REMOTE_DISCONNECTION_ATTRIBUTE_ID (0x02EA)
+#define ZCL_REMOTE_CONNECT_ATTRIBUTE_ID (0x02EB)
+#define ZCL_LOCAL_DISCONNECTION_ATTRIBUTE_ID (0x02EC)
+#define ZCL_LOCAL_CONNECT_ATTRIBUTE_ID (0x02ED)
+#define ZCL_CHANGE_SUPPLY_RECEIVED_ATTRIBUTE_ID (0x02EE)
+#define ZCL_CHANGE_SUPPLY_ACTIONED_ATTRIBUTE_ID (0x02EF)
+#define ZCL_CHANGE_SUPPLY_CANCELLED_ATTRIBUTE_ID (0x02F0)
+#define ZCL_CHANGE_SUPPLY_REJECTED_ATTRIBUTE_ID (0x02F1)
+#define ZCL_LOCAL_CHANGE_SUPPLY_RECEIVED_ATTRIBUTE_ID (0x02F2)
+#define ZCL_LOCAL_CHANGE_SUPPLY_ACTIONED_ATTRIBUTE_ID (0x02F3)
+#define ZCL_LOCAL_CHANGE_SUPPLY_CANCELLED_ATTRIBUTE_ID (0x02F4)
+#define ZCL_LOCAL_CHANGE_SUPPLY_REJECTED_ATTRIBUTE_ID (0x02F5)
+#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_RECEIVED_ATTRIBUTE_ID (0x02F6)
+#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_ACTIONED_ATTRIBUTE_ID (0x02F7)
+#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_CANCELLED_ATTRIBUTE_ID (0x02F8)
+#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_REJECTED_ATTRIBUTE_ID (0x02F9)
+#define ZCL_MESSAGE_CONFIRMATION_SENT_ATTRIBUTE_ID (0x0300)
+#define ZCL_DISPLAY_MESSAGE_RECEIVED_ATTRIBUTE_ID (0x03C0)
+#define ZCL_DISPLAY_MESSAGE_ACTIONED_ATTRIBUTE_ID (0x03C1)
+#define ZCL_DISPLAY_MESSAGE_CANCELLED_ATTRIBUTE_ID (0x03C2)
+#define ZCL_DISPLAY_MESSAGE_REJECTED_ATTRIBUTE_ID (0x03C3)
+#define ZCL_CANCEL_MESSAGE_RECEIVED_ATTRIBUTE_ID (0x03C4)
+#define ZCL_CANCEL_MESSAGE_ACTIONED_ATTRIBUTE_ID (0x03C5)
+#define ZCL_CANCEL_MESSAGE_CANCELLED_ATTRIBUTE_ID (0x03C6)
+#define ZCL_CANCEL_MESSAGE_REJECTED_ATTRIBUTE_ID (0x03C7)
+#define ZCL_LOW_CREDIT_ATTRIBUTE_ID (0x0400)
+#define ZCL_NO_CREDIT_ATTRIBUTE_ID (0x0401)
+#define ZCL_CREDIT_EXHAUSTED_ATTRIBUTE_ID (0x0402)
+#define ZCL_EMERGENCY_CREDIT_ENABLED_ATTRIBUTE_ID (0x0403)
+#define ZCL_EMERGENCY_CREDIT_EXHAUSTED_ATTRIBUTE_ID (0x0404)
+#define ZCL_PREPAY_IHD_LOW_CREDIT_WARNING_ATTRIBUTE_ID (0x0405)
+#define ZCL_PHYSICAL_ATTACK_ON_THE_PREPAY_METER_ATTRIBUTE_ID (0x0420)
+#define ZCL_ELECTRONIC_ATTACK_ON_THE_PREPAY_METER_ATTRIBUTE_ID (0x0421)
+#define ZCL_DISCOUNT_APPLIED_ATTRIBUTE_ID (0x0422)
+#define ZCL_CREDIT_ADJUSTMENT_ATTRIBUTE_ID (0x0423)
+#define ZCL_CREDIT_ADJUST_FAIL_ATTRIBUTE_ID (0x0424)
+#define ZCL_DEBT_ADJUSTMENT_ATTRIBUTE_ID (0x0425)
+#define ZCL_DEBT_ADJUST_FAIL_ATTRIBUTE_ID (0x0426)
+#define ZCL_MODE_CHANGE_ATTRIBUTE_ID (0x0427)
+#define ZCL_TOPUP_CODE_ERROR_ATTRIBUTE_ID (0x0428)
+#define ZCL_TOPUP_ALREADY_USED_ATTRIBUTE_ID (0x0429)
+#define ZCL_TOPUP_CODE_INVALID_ATTRIBUTE_ID (0x042A)
+#define ZCL_TOPUP_ACCEPTED_VIA_REMOTE_ATTRIBUTE_ID (0x042B)
+#define ZCL_TOPUP_ACCEPTED_VIA_MANUAL_ENTRY_ATTRIBUTE_ID (0x042C)
+#define ZCL_FRIENDLY_CREDIT_IN_USE_ATTRIBUTE_ID (0x042D)
+#define ZCL_FRIENDLY_CREDIT_END_WARNING_ATTRIBUTE_ID (0x042E)
+#define ZCL_FRIENDLY_CREDIT_PERIOD_END_ATTRIBUTE_ID (0x042F)
+#define ZCL_PREPAY_ERROR_REG_CLEAR_ATTRIBUTE_ID (0x0430)
+#define ZCL_PREPAY_ALARM_REG_CLEAR_ATTRIBUTE_ID (0x0431)
+#define ZCL_PREPAY_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x0432)
+#define ZCL_TOPUP_VALUE_TOO_LARGE_ATTRIBUTE_ID (0x0433)
+#define ZCL_MODE_CREDIT_2_PREPAY_ATTRIBUTE_ID (0x0441)
+#define ZCL_MODE_PREPAY_2_CREDIT_ATTRIBUTE_ID (0x0442)
+#define ZCL_MODE_DEFAULT_ATTRIBUTE_ID (0x0443)
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_RECEIVED_ATTRIBUTE_ID (0x04C0)
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_ACTIONED_ATTRIBUTE_ID (0x04C1)
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_CANCELLED_ATTRIBUTE_ID (0x04C2)
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_REJECTED_ATTRIBUTE_ID (0x04C3)
+#define ZCL_CHANGE_DEBT_RECEIVED_ATTRIBUTE_ID (0x04C4)
+#define ZCL_CHANGE_DEBT_ACTIONED_ATTRIBUTE_ID (0x04C5)
+#define ZCL_CHANGE_DEBT_CANCELLED_ATTRIBUTE_ID (0x04C6)
+#define ZCL_CHANGE_DEBT_REJECTED_ATTRIBUTE_ID (0x04C7)
+#define ZCL_EMERGENCY_CREDIT_SETUP_RECEIVED_ATTRIBUTE_ID (0x04C8)
+#define ZCL_EMERGENCY_CREDIT_SETUP_ACTIONED_ATTRIBUTE_ID (0x04C9)
+#define ZCL_EMERGENCY_CREDIT_SETUP_CANCELLED_ATTRIBUTE_ID (0x04CA)
+#define ZCL_EMERGENCY_CREDIT_SETUP_REJECTED_ATTRIBUTE_ID (0x04CB)
+#define ZCL_CONSUMER_TOPUP_RECEIVED_ATTRIBUTE_ID (0x04CC)
+#define ZCL_CONSUMER_TOPUP_ACTIONED_ATTRIBUTE_ID (0x04CD)
+#define ZCL_CONSUMER_TOPUP_CANCELLED_ATTRIBUTE_ID (0x04CE)
+#define ZCL_CONSUMER_TOPUP_REJECTED_ATTRIBUTE_ID (0x04CF)
+#define ZCL_CREDIT_ADJUSTMENT_RECEIVED_ATTRIBUTE_ID (0x04D0)
+#define ZCL_CREDIT_ADJUSTMENT_ACTIONED_ATTRIBUTE_ID (0x04D1)
+#define ZCL_CREDIT_ADJUSTMENT_CANCELLED_ATTRIBUTE_ID (0x04D2)
+#define ZCL_CREDIT_ADJUSTMENT_REJECTED_ATTRIBUTE_ID (0x04D3)
+#define ZCL_CHANGE_PAYMENT_MODE_RECEIVED_ATTRIBUTE_ID (0x04D4)
+#define ZCL_CHANGE_PAYMENT_MODE_ACTIONED_ATTRIBUTE_ID (0x04D5)
+#define ZCL_CHANGE_PAYMENT_MODE_CANCELLED_ATTRIBUTE_ID (0x04D6)
+#define ZCL_CHANGE_PAYMENT_MODE_REJECTED_ATTRIBUTE_ID (0x04D7)
+#define ZCL_GET_PREPAY_SNAPSHOT_RECEIVED_ATTRIBUTE_ID (0x04D8)
+#define ZCL_GET_PREPAY_SNAPSHOT_ACTIONED_ATTRIBUTE_ID (0x04D9)
+#define ZCL_GET_PREPAY_SNAPSHOT_CANCELLED_ATTRIBUTE_ID (0x04DA)
+#define ZCL_GET_PREPAY_SNAPSHOT_REJECTED_ATTRIBUTE_ID (0x04DB)
+#define ZCL_GET_TOPUP_LOG_RECEIVED_ATTRIBUTE_ID (0x04DC)
+#define ZCL_GET_TOPUP_LOG_ACTIONED_ATTRIBUTE_ID (0x04DD)
+#define ZCL_GET_TOPUP_LOG_CANCELLED_ATTRIBUTE_ID (0x04DE)
+#define ZCL_GET_TOPUP_LOG_REJECTED_ATTRIBUTE_ID (0x04DF)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_RECEIVED_ATTRIBUTE_ID (0x04E0)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_ACTIONED_ATTRIBUTE_ID (0x04E1)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_CANCELLED_ATTRIBUTE_ID (0x04E2)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_REJECTED_ATTRIBUTE_ID (0x04E3)
+#define ZCL_GET_DEBT_REPAY_LOG_RECEIVED_ATTRIBUTE_ID (0x04E4)
+#define ZCL_GET_DEBT_REPAY_LOG_ACTIONED_ATTRIBUTE_ID (0x04E5)
+#define ZCL_GET_DEBT_REPAY_LOG_CANCELLED_ATTRIBUTE_ID (0x04E6)
+#define ZCL_GET_DEBT_REPAY_LOG_REJECTED_ATTRIBUTE_ID (0x04E7)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_RECEIVED_ATTRIBUTE_ID (0x04E8)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_ACTIONED_ATTRIBUTE_ID (0x04E9)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_CANCELLED_ATTRIBUTE_ID (0x04EA)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_REJECTED_ATTRIBUTE_ID (0x04EB)
+#define ZCL_SET_OVERALL_DEBT_CAP_RECEIVED_ATTRIBUTE_ID (0x04EC)
+#define ZCL_SET_OVERALL_DEBT_CAP_ACTIONED_ATTRIBUTE_ID (0x04ED)
+#define ZCL_SET_OVERALL_DEBT_CAP_CANCELLED_ATTRIBUTE_ID (0x04EE)
+#define ZCL_SET_OVERALL_DEBT_CAP_REJECTED_ATTRIBUTE_ID (0x04EF)
+#define ZCL_CALENDAR_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x0500)
+#define ZCL_CALENDAR_CHANGE_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x0501)
+#define ZCL_CALENDAR_CHANGE_PASSIVE_UPDATED_ATTRIBUTE_ID (0x0502)
+#define ZCL_PUBLISH_CALENDAR_RECEIVED_ATTRIBUTE_ID (0x05C0)
+#define ZCL_PUBLISH_CALENDAR_ACTIONED_ATTRIBUTE_ID (0x05C1)
+#define ZCL_PUBLISH_CALENDAR_CANCELLED_ATTRIBUTE_ID (0x05C2)
+#define ZCL_PUBLISH_CALENDAR_REJECTED_ATTRIBUTE_ID (0x05C3)
+#define ZCL_PUBLISH_DAY_PROFILE_RECEIVED_ATTRIBUTE_ID (0x05C4)
+#define ZCL_PUBLISH_DAY_PROFILE_ACTIONED_ATTRIBUTE_ID (0x05C5)
+#define ZCL_PUBLISH_DAY_PROFILE_CANCELLED_ATTRIBUTE_ID (0x05C6)
+#define ZCL_PUBLISH_DAY_PROFILE_REJECTED_ATTRIBUTE_ID (0x05C7)
+#define ZCL_PUBLISH_WEEK_PROFILE_RECEIVED_ATTRIBUTE_ID (0x05C8)
+#define ZCL_PUBLISH_WEEK_PROFILE_ACTIONED_ATTRIBUTE_ID (0x05C9)
+#define ZCL_PUBLISH_WEEK_PROFILE_CANCELLED_ATTRIBUTE_ID (0x05CA)
+#define ZCL_PUBLISH_WEEK_PROFILE_REJECTED_ATTRIBUTE_ID (0x05CB)
+#define ZCL_PUBLISH_SEASONS_RECEIVED_ATTRIBUTE_ID (0x05CC)
+#define ZCL_PUBLISH_SEASONS_ACTIONED_ATTRIBUTE_ID (0x05CD)
+#define ZCL_PUBLISH_SEASONS_CANCELLED_ATTRIBUTE_ID (0x05CE)
+#define ZCL_PUBLISH_SEASONS_REJECTED_ATTRIBUTE_ID (0x05CF)
+#define ZCL_PUBLISH_SPECIAL_DAYS_RECEIVED_ATTRIBUTE_ID (0x05D0)
+#define ZCL_PUBLISH_SPECIAL_DAYS_ACTIONED_ATTRIBUTE_ID (0x05D1)
+#define ZCL_PUBLISH_SPECIAL_DAYS_CANCELLED_ATTRIBUTE_ID (0x05D2)
+#define ZCL_PUBLISH_SPECIAL_DAYS_REJECTED_ATTRIBUTE_ID (0x05D3)
+#define ZCL_PASSWORD_1_CHANGE_ATTRIBUTE_ID (0x0600)
+#define ZCL_PASSWORD_2_CHANGE_ATTRIBUTE_ID (0x0601)
+#define ZCL_PASSWORD_3_CHANGE_ATTRIBUTE_ID (0x0602)
+#define ZCL_PASSWORD_4_CHANGE_ATTRIBUTE_ID (0x0603)
+#define ZCL_EVENT_LOG_CLEARED_ATTRIBUTE_ID (0x0604)
+#define ZCL_ZIGBEE_APS_TIMEOUT_ATTRIBUTE_ID (0x0610)
+#define ZCL_ZIGBEE_IEEE_TRANSMISSION_FAILURE_OVER_THRESHOLD_ATTRIBUTE_ID (0x0611)
+#define ZCL_ZIGBEE_IEEE_FRAME_CHECK_SEQUENCE_THRESHOLD_ATTRIBUTE_ID (0x0612)
+#define ZCL_ERROR_CERTIFICATE_ATTRIBUTE_ID (0x0613)
+#define ZCL_ERROR_SIGNATURE_ATTRIBUTE_ID (0x0614)
+#define ZCL_ERROR_PROGRAM_STORAGE_ATTRIBUTE_ID (0x0615)
+#define ZCL_PUBLISH_COT_RECEIVED_ATTRIBUTE_ID (0x06C0)
+#define ZCL_PUBLISH_COT_ACTIONED_ATTRIBUTE_ID (0x06C1)
+#define ZCL_PUBLISH_COT_CANCELLED_ATTRIBUTE_ID (0x06C2)
+#define ZCL_PUBLISH_COT_REJECTED_ATTRIBUTE_ID (0x06C3)
+#define ZCL_PUBLISH_COS_RECEIVED_ATTRIBUTE_ID (0x06C4)
+#define ZCL_PUBLISH_COS_ACTIONED_ATTRIBUTE_ID (0x06C5)
+#define ZCL_PUBLISH_COS_CANCELLED_ATTRIBUTE_ID (0x06C6)
+#define ZCL_PUBLISH_COS_REJECTED_ATTRIBUTE_ID (0x06C7)
+#define ZCL_CHANGE_PASSWORD_RECEIVED_ATTRIBUTE_ID (0x06C8)
+#define ZCL_CHANGE_PASSWORD_ACTIONED_ATTRIBUTE_ID (0x06C9)
+#define ZCL_CHANGE_PASSWORD_CANCELLED_ATTRIBUTE_ID (0x06CA)
+#define ZCL_CHANGE_PASSWORD_REJECTED_ATTRIBUTE_ID (0x06CB)
+#define ZCL_SET_EVENT_CONFIGURATION_RECEIVED_ATTRIBUTE_ID (0x06CC)
+#define ZCL_SET_EVENT_CONFIGURATION_ACTIONED_ATTRIBUTE_ID (0x06CD)
+#define ZCL_SET_EVENT_CONFIGURATION_CANCELLED_ATTRIBUTE_ID (0x06CE)
+#define ZCL_SET_EVENT_CONFIGURATION_REJECTED_ATTRIBUTE_ID (0x06CF)
+#define ZCL_UPDATE_SITE_ID_RECEIVED_ATTRIBUTE_ID (0x06D0)
+#define ZCL_UPDATE_SITE_ID_ACTIONED_ATTRIBUTE_ID (0x06D1)
+#define ZCL_UPDATE_SITE_ID_CANCELLED_ATTRIBUTE_ID (0x06D2)
+#define ZCL_UPDATE_SITE_ID_REJECTED_ATTRIBUTE_ID (0x06D3)
+#define ZCL_UPDATE_CIN_RECEIVED_ATTRIBUTE_ID (0x06D4)
+#define ZCL_UPDATE_CIN_ACTIONED_ATTRIBUTE_ID (0x06D5)
+#define ZCL_UPDATE_CIN_CANCELLED_ATTRIBUTE_ID (0x06D6)
+#define ZCL_UPDATE_CIN_REJECTED_ATTRIBUTE_ID (0x06D7)
+#define ZCL_TUNNELING_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x0700)
+#define ZCL_UNSUPPORTED_PROTOCOL_ATTRIBUTE_ID (0x0701)
+#define ZCL_INCORRECT_PROTOCOL_ATTRIBUTE_ID (0x0702)
+#define ZCL_REQUEST_TUNNEL_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07C0)
+#define ZCL_REQUEST_TUNNEL_COMMAND_REJECTED_ATTRIBUTE_ID (0x07C1)
+#define ZCL_REQUEST_TUNNEL_COMMAND_GENERATED_ATTRIBUTE_ID (0x07C2)
+#define ZCL_CLOSE_TUNNEL_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07C3)
+#define ZCL_CLOSE_TUNNEL_COMMAND_REJECTED_ATTRIBUTE_ID (0x07C4)
+#define ZCL_CLOSE_TUNNEL_COMMAND_GENERATED_ATTRIBUTE_ID (0x07C5)
+#define ZCL_TRANSFER_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07C6)
+#define ZCL_TRANSFER_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x07C7)
+#define ZCL_TRANSFER_DATA_COMMAND_GENERATED_ATTRIBUTE_ID (0x07C8)
+#define ZCL_TRANSFER_DATA_ERROR_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07C9)
+#define ZCL_TRANSFER_DATA_ERROR_COMMAND_REJECTED_ATTRIBUTE_ID (0x07CA)
+#define ZCL_TRANSFER_DATA_ERROR_COMMAND_GENERATED_ATTRIBUTE_ID (0x07CB)
+#define ZCL_ACK_TRANSFER_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07CC)
+#define ZCL_ACK_TRANSFER_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x07CD)
+#define ZCL_ACK_TRANSFER_DATA_COMMAND_GENERATED_ATTRIBUTE_ID (0x07CE)
+#define ZCL_READY_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07CF)
+#define ZCL_READY_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x07D0)
+#define ZCL_READY_DATA_COMMAND_GENERATED_ATTRIBUTE_ID (0x07D1)
+#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07D2)
+#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_REJECTED_ATTRIBUTE_ID (0x07D3)
+#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_GENERATED_ATTRIBUTE_ID (0x07D4)
+#define ZCL_FIRMWARE_READY_FOR_ACTIVATION_ATTRIBUTE_ID (0x0800)
+#define ZCL_FIRMWARE_ACTIVATED_ATTRIBUTE_ID (0x0801)
+#define ZCL_FIRMWARE_ACTIVATION_FAILURE_ATTRIBUTE_ID (0x0802)
+#define ZCL_PATCH_READY_FOR_ACTIVATION_ATTRIBUTE_ID (0x0803)
+#define ZCL_PATCH_ACTIVATED_ATTRIBUTE_ID (0x0804)
+#define ZCL_PATCH_FAILURE_ATTRIBUTE_ID (0x0805)
+#define ZCL_IMAGE_NOTIFY_COMMAND_RECEIVED_ATTRIBUTE_ID (0x08C0)
+#define ZCL_IMAGE_NOTIFY_COMMAND_REJECTED_ATTRIBUTE_ID (0x08C1)
+#define ZCL_QUERY_NEXT_IMAGE_REQUEST_GENERATED_ATTRIBUTE_ID (0x08C2)
+#define ZCL_QUERY_NEXT_IMAGE_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x08C3)
+#define ZCL_QUERY_NEXT_IMAGE_RESPONSE_REJECTED_ATTRIBUTE_ID (0x08C4)
+#define ZCL_IMAGE_BLOCK_REQUEST_GENERATED_ATTRIBUTE_ID (0x08C5)
+#define ZCL_IMAGE_PAGE_REQUEST_GENERATED_ATTRIBUTE_ID (0x08C6)
+#define ZCL_IMAGE_BLOCK_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x08C7)
+#define ZCL_IMAGE_BLOCK_RESPONSE_REJECTED_ATTRIBUTE_ID (0x08C8)
+#define ZCL_UPGRADE_END_REQUEST_GENERATED_ATTRIBUTE_ID (0x08C9)
+#define ZCL_UPGRADE_END_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x08CA)
+#define ZCL_UPGRADE_END_RESPONSE_REJECTED_ATTRIBUTE_ID (0x08CB)
+#define ZCL_QUERY_SPECIFIC_FILE_REQUEST_GENERATED_ATTRIBUTE_ID (0x08CC)
+#define ZCL_QUERY_SPECIFIC_FILE_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x08CD)
+#define ZCL_QUERY_SPECIFIC_FILE_RESPONSE_REJECTED_ATTRIBUTE_ID (0x08CE)
+
+// Server attributes
+#define ZCL_PROVIDER_ID_SERVER_ATTRIBUTE_ID (0x0100)
+#define ZCL_PROVIDER_NAME_ATTRIBUTE_ID (0x0101)
+#define ZCL_PROVIDER_CONTACT_DETAILS_ATTRIBUTE_ID (0x0102)
+#define ZCL_PROPOSED_PROVIDER_ID_ATTRIBUTE_ID (0x0110)
+#define ZCL_PROPOSED_PROVIDER_NAME_ATTRIBUTE_ID (0x0111)
+#define ZCL_PROPOSED_PROVIDER_CHANGE_DATE_TIME_ATTRIBUTE_ID (0x0112)
+#define ZCL_PROPOSED_PROVIDER_CHANGE_CONTROL_ATTRIBUTE_ID (0x0113)
+#define ZCL_RECEIVED_PROVIDER_ID_SERVER_ATTRIBUTE_ID (0x0120)
+#define ZCL_RECEIVED_PROVIDER_NAME_ATTRIBUTE_ID (0x0121)
+#define ZCL_RECEIVED_PROVIDER_CONTACT_DETAILS_ATTRIBUTE_ID (0x0122)
+#define ZCL_RECEIVED_PROPOSED_PROVIDER_ID_ATTRIBUTE_ID (0x0130)
+#define ZCL_RECEIVED_PROPOSED_PROVIDER_NAME_ATTRIBUTE_ID (0x0131)
+#define ZCL_RECEIVED_PROPOSED_PROVIDER_CHANGE_DATE_TIME_ATTRIBUTE_ID (0x0132)
+#define ZCL_RECEIVED_PROPOSED_PROVIDER_CHANGE_CONTROL_ATTRIBUTE_ID (0x0133)
+#define ZCL_CHANGE_OF_TENANCY_UPDATE_DATE_TIME_ATTRIBUTE_ID (0x0200)
+#define ZCL_PROPOSED_TENANCY_CHANGE_CONTROL_ATTRIBUTE_ID (0x0201)
+#define ZCL_WAN_STATUS_ATTRIBUTE_ID (0x0300)
+#define ZCL_LOW_MEDIUM_THRESHOLD_ATTRIBUTE_ID (0x0400)
+#define ZCL_MEDIUM_HIGH_THRESHOLD_ATTRIBUTE_ID (0x0401)
+
+// Attribute ids for cluster: Events
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: MDU Pairing
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Sub-GHz
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SUB_GHZ_CLUSTER_CHANNEL_CHANGE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SUB_GHZ_CLUSTER_PAGE_28_CHANNEL_MASK_ATTRIBUTE_ID (0x0001)
+#define ZCL_SUB_GHZ_CLUSTER_PAGE_29_CHANNEL_MASK_ATTRIBUTE_ID (0x0002)
+#define ZCL_SUB_GHZ_CLUSTER_PAGE_30_CHANNEL_MASK_ATTRIBUTE_ID (0x0003)
+#define ZCL_SUB_GHZ_CLUSTER_PAGE_31_CHANNEL_MASK_ATTRIBUTE_ID (0x0004)
+
+// Attribute ids for cluster: Key Establishment
+
+// Client attributes
+#define ZCL_KEY_ESTABLISHMENT_SUITE_CLIENT_ATTRIBUTE_ID (0x0000)
+
+// Server attributes
+#define ZCL_KEY_ESTABLISHMENT_SUITE_SERVER_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Information
+
+// Client attributes
+
+// Server attributes
+#define ZCL_NODE_DESCRIPTION_ATTRIBUTE_ID (0x0000)
+#define ZCL_DELIVERY_ENABLE_ATTRIBUTE_ID (0x0001)
+#define ZCL_PUSH_INFORMATION_TIMER_ATTRIBUTE_ID (0x0002)
+#define ZCL_ENABLE_SECURE_CONFIGURATION_ATTRIBUTE_ID (0x0003)
+#define ZCL_NUMBER_OF_CONTENTS_ATTRIBUTE_ID (0x0010)
+#define ZCL_CONTENT_ROOT_ID_ATTRIBUTE_ID (0x0011)
+
+// Attribute ids for cluster: Data Sharing
+
+// Client attributes
+
+// Server attributes
+#define ZCL_DEVICE_NAME_ATTRIBUTE_ID (0x0000)
+#define ZCL_DEVICE_DESCRIPTION_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Gaming
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PLAYER_NAME_ATTRIBUTE_ID (0x0000)
+#define ZCL_NB_OF_GAMES_ATTRIBUTE_ID (0x0001)
+#define ZCL_LIST_OF_GAMES_ATTRIBUTE_ID (0x0002)
+#define ZCL_ANNOUNCEMENT_INTERVAL_ATTRIBUTE_ID (0x0003)
+#define ZCL_GAME_ID_ATTRIBUTE_ID (0x0010)
+#define ZCL_NAME_OF_GAME_ATTRIBUTE_ID (0x0011)
+#define ZCL_GAME_MASTER_ATTRIBUTE_ID (0x0012)
+#define ZCL_GAMING_STATUS_ATTRIBUTE_ID (0x0013)
+#define ZCL_CURRENT_NB_OF_PLAYERS_ATTRIBUTE_ID (0x0014)
+#define ZCL_LIST_OF_CURRENT_PLAYERS_ATTRIBUTE_ID (0x0015)
+#define ZCL_MAX_NB_OF_PLAYERS_ATTRIBUTE_ID (0x0016)
+#define ZCL_MIN_NB_OF_PLAYERS_ATTRIBUTE_ID (0x0017)
+#define ZCL_CURRENT_GAME_LEVEL_ATTRIBUTE_ID (0x0018)
+#define ZCL_SCORE_OF_THIS_PLAYER_ATTRIBUTE_ID (0x0019)
+#define ZCL_TIMER1_ATTRIBUTE_ID (0x001A)
+#define ZCL_TIMER2_ATTRIBUTE_ID (0x001B)
+#define ZCL_TIMER3_ATTRIBUTE_ID (0x001C)
+#define ZCL_COUNTER1_ATTRIBUTE_ID (0x001D)
+#define ZCL_COUNTER2_ATTRIBUTE_ID (0x001E)
+#define ZCL_DOWNLOADABLE_ATTRIBUTE_ID (0x001F)
+
+// Attribute ids for cluster: Data Rate Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_AVERAGE_LATENCY_REQUIREMENT_ATTRIBUTE_ID (0x0000)
+#define ZCL_MAX_LATENCY_REQUIREMENT_ATTRIBUTE_ID (0x0001)
+#define ZCL_BANDWIDTH_REQUIREMENT_ATTRIBUTE_ID (0x0002)
+
+// Attribute ids for cluster: Voice over ZigBee
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CODEC_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAMPLING_FREQUENCY_ATTRIBUTE_ID (0x0001)
+#define ZCL_CODEC_RATE_ATTRIBUTE_ID (0x0002)
+#define ZCL_ESTABLISHMENT_TIMEOUT_ATTRIBUTE_ID (0x0003)
+#define ZCL_CODEC_TYPE_SUB1_ATTRIBUTE_ID (0x0004)
+#define ZCL_CODEC_TYPE_SUB2_ATTRIBUTE_ID (0x0005)
+#define ZCL_CODEC_TYPE_SUB3_ATTRIBUTE_ID (0x0006)
+#define ZCL_COMPRESSION_TYPE_ATTRIBUTE_ID (0x0007)
+#define ZCL_COMPRESSION_RATE_ATTRIBUTE_ID (0x0008)
+#define ZCL_OPTION_FLAGS_ATTRIBUTE_ID (0x0009)
+#define ZCL_THRESHOLD_ATTRIBUTE_ID (0x000A)
+
+// Attribute ids for cluster: Chatting
+
+// Client attributes
+
+// Server attributes
+#define ZCL_U_ID_ATTRIBUTE_ID (0x0000)
+#define ZCL_NICKNAME_ATTRIBUTE_ID (0x0001)
+#define ZCL_C_ID_ATTRIBUTE_ID (0x0010)
+#define ZCL_NAME_ATTRIBUTE_ID (0x0011)
+#define ZCL_ENABLE_ADD_CHAT_ATTRIBUTE_ID (0x0020)
+
+// Attribute ids for cluster: Payment
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PAYMENT_USER_ID_ATTRIBUTE_ID (0x0000)
+#define ZCL_USER_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_PAYMENT_SERVICE_ID_ATTRIBUTE_ID (0x0010)
+#define ZCL_PAYMENT_SERVICE_PROVIDER_ID_ATTRIBUTE_ID (0x0011)
+#define ZCL_TOTEM_ID_ATTRIBUTE_ID (0x0012)
+#define ZCL_CURRENCY_ATTRIBUTE_ID (0x0020)
+#define ZCL_PRICE_TRAILING_DIGIT_ATTRIBUTE_ID (0x0021)
+#define ZCL_PRICE_ATTRIBUTE_ID (0x0022)
+#define ZCL_GOOD_ID_ATTRIBUTE_ID (0x0030)
+#define ZCL_SERIAL_NUMBER_ATTRIBUTE_ID (0x0031)
+#define ZCL_PAYMENT_TIMESTAMP_ATTRIBUTE_ID (0x0032)
+#define ZCL_TRANS_ID_ATTRIBUTE_ID (0x0033)
+#define ZCL_TRANS_STATUS_ATTRIBUTE_ID (0x0034)
+#define ZCL_PAYMENT_STATUS_ATTRIBUTE_ID (0x0035)
+
+// Attribute ids for cluster: Billing
+
+// Client attributes
+
+// Server attributes
+#define ZCL_USER_ID_ATTRIBUTE_ID (0x0000)
+#define ZCL_SERVICE_ID_ATTRIBUTE_ID (0x0010)
+#define ZCL_SERVICE_PROVIDER_ID_ATTRIBUTE_ID (0x0011)
+#define ZCL_SESSION_INTERVAL_ATTRIBUTE_ID (0x0012)
+#define ZCL_TIMESTAMP_ATTRIBUTE_ID (0x0020)
+#define ZCL_DURATION_ATTRIBUTE_ID (0x0021)
+
+// Attribute ids for cluster: Appliance Identification
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BASIC_IDENTIFICATION_ATTRIBUTE_ID (0x0000)
+#define ZCL_APPLIANCE_COMPANY_NAME_ATTRIBUTE_ID (0x0010)
+#define ZCL_COMPANY_ID_ATTRIBUTE_ID (0x0011)
+#define ZCL_BRAND_NAME_ATTRIBUTE_ID (0x0012)
+#define ZCL_BRAND_ID_ATTRIBUTE_ID (0x0013)
+#define ZCL_APPLIANCE_MODEL_ATTRIBUTE_ID (0x0014)
+#define ZCL_APPLIANCE_PART_NUMBER_ATTRIBUTE_ID (0x0015)
+#define ZCL_APPLIANCE_PRODUCT_REVISION_ATTRIBUTE_ID (0x0016)
+#define ZCL_APPLIANCE_SOFTWARE_REVISION_ATTRIBUTE_ID (0x0017)
+#define ZCL_PRODUCT_TYPE_NAME_ATTRIBUTE_ID (0x0018)
+#define ZCL_PRODUCT_TYPE_ID_ATTRIBUTE_ID (0x0019)
+#define ZCL_CECED_SPECIFICATION_VERSION_ATTRIBUTE_ID (0x001A)
+
+// Attribute ids for cluster: Meter Identification
+
+// Client attributes
+
+// Server attributes
+#define ZCL_METER_COMPANY_NAME_ATTRIBUTE_ID (0x0000)
+#define ZCL_METER_TYPE_ID_ATTRIBUTE_ID (0x0001)
+#define ZCL_DATA_QUALITY_ID_ATTRIBUTE_ID (0x0004)
+#define ZCL_CUSTOMER_NAME_ATTRIBUTE_ID (0x0005)
+#define ZCL_METER_MODEL_ATTRIBUTE_ID (0x0006)
+#define ZCL_METER_PART_NUMBER_ATTRIBUTE_ID (0x0007)
+#define ZCL_METER_PRODUCT_REVISION_ATTRIBUTE_ID (0x0008)
+#define ZCL_METER_SOFTWARE_REVISION_ATTRIBUTE_ID (0x000A)
+#define ZCL_UTILITY_NAME_ATTRIBUTE_ID (0x000B)
+#define ZCL_POD_ATTRIBUTE_ID (0x000C)
+#define ZCL_AVAILABLE_POWER_ATTRIBUTE_ID (0x000D)
+#define ZCL_POWER_THRESHOLD_ATTRIBUTE_ID (0x000E)
+
+// Attribute ids for cluster: Appliance Events and Alert
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Appliance Statistics
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOG_MAX_SIZE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LOG_QUEUE_MAX_SIZE_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Electrical Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MEASUREMENT_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_DC_VOLTAGE_ATTRIBUTE_ID (0x0100)
+#define ZCL_DC_VOLTAGE_MIN_ATTRIBUTE_ID (0x0101)
+#define ZCL_DC_VOLTAGE_MAX_ATTRIBUTE_ID (0x0102)
+#define ZCL_DC_CURRENT_ATTRIBUTE_ID (0x0103)
+#define ZCL_DC_CURRENT_MIN_ATTRIBUTE_ID (0x0104)
+#define ZCL_DC_CURRENT_MAX_ATTRIBUTE_ID (0x0105)
+#define ZCL_DC_POWER_ATTRIBUTE_ID (0x0106)
+#define ZCL_DC_POWER_MIN_ATTRIBUTE_ID (0x0107)
+#define ZCL_DC_POWER_MAX_ATTRIBUTE_ID (0x0108)
+#define ZCL_DC_VOLTAGE_MULTIPLIER_ATTRIBUTE_ID (0x0200)
+#define ZCL_DC_VOLTAGE_DIVISOR_ATTRIBUTE_ID (0x0201)
+#define ZCL_DC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x0202)
+#define ZCL_DC_CURRENT_DIVISOR_ATTRIBUTE_ID (0x0203)
+#define ZCL_DC_POWER_MULTIPLIER_ATTRIBUTE_ID (0x0204)
+#define ZCL_DC_POWER_DIVISOR_ATTRIBUTE_ID (0x0205)
+#define ZCL_AC_FREQUENCY_ATTRIBUTE_ID (0x0300)
+#define ZCL_AC_FREQUENCY_MIN_ATTRIBUTE_ID (0x0301)
+#define ZCL_AC_FREQUENCY_MAX_ATTRIBUTE_ID (0x0302)
+#define ZCL_NEUTRAL_CURRENT_ATTRIBUTE_ID (0x0303)
+#define ZCL_TOTAL_ACTIVE_POWER_ATTRIBUTE_ID (0x0304)
+#define ZCL_TOTAL_REACTIVE_POWER_ATTRIBUTE_ID (0x0305)
+#define ZCL_TOTAL_APPARENT_POWER_ATTRIBUTE_ID (0x0306)
+#define ZCL_MEASURED_1_ST_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0307)
+#define ZCL_MEASURED_3_RD_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0308)
+#define ZCL_MEASURED_5_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0309)
+#define ZCL_MEASURED_7_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030A)
+#define ZCL_MEASURED_9_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030B)
+#define ZCL_MEASURED_11_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030C)
+#define ZCL_MEASURED_PHASE_1_ST_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030D)
+#define ZCL_MEASURED_PHASE_3_RD_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030E)
+#define ZCL_MEASURED_PHASE_5_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030F)
+#define ZCL_MEASURED_PHASE_7_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0310)
+#define ZCL_MEASURED_PHASE_9_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0311)
+#define ZCL_MEASURED_PHASE_11_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0312)
+#define ZCL_AC_FREQUENCY_MULTIPLIER_ATTRIBUTE_ID (0x0400)
+#define ZCL_AC_FREQUENCY_DIVISOR_ATTRIBUTE_ID (0x0401)
+#define ZCL_POWER_MULTIPLIER_ATTRIBUTE_ID (0x0402)
+#define ZCL_POWER_DIVISOR_ATTRIBUTE_ID (0x0403)
+#define ZCL_HARMONIC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x0404)
+#define ZCL_PHASE_HARMONIC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x0405)
+#define ZCL_INSTANTANEOUS_VOLTAGE_ATTRIBUTE_ID (0x0500)
+#define ZCL_INSTANTANEOUS_LINE_CURRENT_ATTRIBUTE_ID (0x0501)
+#define ZCL_INSTANTANEOUS_ACTIVE_CURRENT_ATTRIBUTE_ID (0x0502)
+#define ZCL_INSTANTANEOUS_REACTIVE_CURRENT_ATTRIBUTE_ID (0x0503)
+#define ZCL_INSTANTANEOUS_POWER_ATTRIBUTE_ID (0x0504)
+#define ZCL_RMS_VOLTAGE_ATTRIBUTE_ID (0x0505)
+#define ZCL_RMS_VOLTAGE_MIN_ATTRIBUTE_ID (0x0506)
+#define ZCL_RMS_VOLTAGE_MAX_ATTRIBUTE_ID (0x0507)
+#define ZCL_RMS_CURRENT_ATTRIBUTE_ID (0x0508)
+#define ZCL_RMS_CURRENT_MIN_ATTRIBUTE_ID (0x0509)
+#define ZCL_RMS_CURRENT_MAX_ATTRIBUTE_ID (0x050A)
+#define ZCL_ACTIVE_POWER_ATTRIBUTE_ID (0x050B)
+#define ZCL_ACTIVE_POWER_MIN_ATTRIBUTE_ID (0x050C)
+#define ZCL_ACTIVE_POWER_MAX_ATTRIBUTE_ID (0x050D)
+#define ZCL_REACTIVE_POWER_ATTRIBUTE_ID (0x050E)
+#define ZCL_APPARENT_POWER_ATTRIBUTE_ID (0x050F)
+#define ZCL_AC_POWER_FACTOR_ATTRIBUTE_ID (0x0510)
+#define ZCL_AVERAGE_RMS_VOLTAGE_MEASUREMENT_PERIOD_ATTRIBUTE_ID (0x0511)
+#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_COUNTER_ATTRIBUTE_ID (0x0513)
+#define ZCL_RMS_EXTREME_OVER_VOLTAGE_PERIOD_ATTRIBUTE_ID (0x0514)
+#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_PERIOD_ATTRIBUTE_ID (0x0515)
+#define ZCL_RMS_VOLTAGE_SAG_PERIOD_ATTRIBUTE_ID (0x0516)
+#define ZCL_RMS_VOLTAGE_SWELL_PERIOD_ATTRIBUTE_ID (0x0517)
+#define ZCL_AC_VOLTAGE_MULTIPLIER_ATTRIBUTE_ID (0x0600)
+#define ZCL_AC_VOLTAGE_DIVISOR_ATTRIBUTE_ID (0x0601)
+#define ZCL_AC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x0602)
+#define ZCL_AC_CURRENT_DIVISOR_ATTRIBUTE_ID (0x0603)
+#define ZCL_AC_POWER_MULTIPLIER_ATTRIBUTE_ID (0x0604)
+#define ZCL_AC_POWER_DIVISOR_ATTRIBUTE_ID (0x0605)
+#define ZCL_DC_OVERLOAD_ALARMS_MASK_ATTRIBUTE_ID (0x0700)
+#define ZCL_DC_VOLTAGE_OVERLOAD_ATTRIBUTE_ID (0x0701)
+#define ZCL_DC_CURRENT_OVERLOAD_ATTRIBUTE_ID (0x0702)
+#define ZCL_AC_OVERLOAD_ALARMS_MASK_ATTRIBUTE_ID (0x0800)
+#define ZCL_AC_VOLTAGE_OVERLOAD_ATTRIBUTE_ID (0x0801)
+#define ZCL_AC_CURRENT_OVERLOAD_ATTRIBUTE_ID (0x0802)
+#define ZCL_AC_POWER_OVERLOAD_ATTRIBUTE_ID (0x0803)
+#define ZCL_AC_REACTIVE_POWER_OVERLOAD_ATTRIBUTE_ID (0x0804)
+#define ZCL_AVERAGE_RMS_OVER_VOLTAGE_ATTRIBUTE_ID (0x0805)
+#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_ATTRIBUTE_ID (0x0806)
+#define ZCL_RMS_EXTREME_OVER_VOLTAGE_ATTRIBUTE_ID (0x0807)
+#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_ATTRIBUTE_ID (0x0808)
+#define ZCL_RMS_VOLTAGE_SAG_ATTRIBUTE_ID (0x0809)
+#define ZCL_RMS_VOLTAGE_SWELL_ATTRIBUTE_ID (0x080A)
+#define ZCL_LINE_CURRENT_PHASE_B_ATTRIBUTE_ID (0x0901)
+#define ZCL_ACTIVE_CURRENT_PHASE_B_ATTRIBUTE_ID (0x0902)
+#define ZCL_REACTIVE_CURRENT_PHASE_B_ATTRIBUTE_ID (0x0903)
+#define ZCL_RMS_VOLTAGE_PHASE_B_ATTRIBUTE_ID (0x0905)
+#define ZCL_RMS_VOLTAGE_MIN_PHASE_B_ATTRIBUTE_ID (0x0906)
+#define ZCL_RMS_VOLTAGE_MAX_PHASE_B_ATTRIBUTE_ID (0x0907)
+#define ZCL_RMS_CURRENT_PHASE_B_ATTRIBUTE_ID (0x0908)
+#define ZCL_RMS_CURRENT_MIN_PHASE_B_ATTRIBUTE_ID (0x0909)
+#define ZCL_RMS_CURRENT_MAX_PHASE_B_ATTRIBUTE_ID (0x090A)
+#define ZCL_ACTIVE_POWER_PHASE_B_ATTRIBUTE_ID (0x090B)
+#define ZCL_ACTIVE_POWER_MIN_PHASE_B_ATTRIBUTE_ID (0x090C)
+#define ZCL_ACTIVE_POWER_MAX_PHASE_B_ATTRIBUTE_ID (0x090D)
+#define ZCL_REACTIVE_POWER_PHASE_B_ATTRIBUTE_ID (0x090E)
+#define ZCL_APPARENT_POWER_PHASE_B_ATTRIBUTE_ID (0x090F)
+#define ZCL_POWER_FACTOR_PHASE_B_ATTRIBUTE_ID (0x0910)
+#define ZCL_AVERAGE_RMS_VOLTAGE_MEASUREMENT_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0911)
+#define ZCL_AVERAGE_RMS_OVER_VOLTAGE_COUNTER_PHASE_B_ATTRIBUTE_ID (0x0912)
+#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_COUNTER_PHASE_B_ATTRIBUTE_ID (0x0913)
+#define ZCL_RMS_EXTREME_OVER_VOLTAGE_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0914)
+#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0915)
+#define ZCL_RMS_VOLTAGE_SAG_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0916)
+#define ZCL_RMS_VOLTAGE_SWELL_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0917)
+#define ZCL_LINE_CURRENT_PHASE_C_ATTRIBUTE_ID (0x0A01)
+#define ZCL_ACTIVE_CURRENT_PHASE_C_ATTRIBUTE_ID (0x0A02)
+#define ZCL_REACTIVE_CURRENT_PHASE_C_ATTRIBUTE_ID (0x0A03)
+#define ZCL_RMS_VOLTAGE_PHASE_C_ATTRIBUTE_ID (0x0A05)
+#define ZCL_RMS_VOLTAGE_MIN_PHASE_C_ATTRIBUTE_ID (0x0A06)
+#define ZCL_RMS_VOLTAGE_MAX_PHASE_C_ATTRIBUTE_ID (0x0A07)
+#define ZCL_RMS_CURRENT_PHASE_C_ATTRIBUTE_ID (0x0A08)
+#define ZCL_RMS_CURRENT_MIN_PHASE_C_ATTRIBUTE_ID (0x0A09)
+#define ZCL_RMS_CURRENT_MAX_PHASE_C_ATTRIBUTE_ID (0x0A0A)
+#define ZCL_ACTIVE_POWER_PHASE_C_ATTRIBUTE_ID (0x0A0B)
+#define ZCL_ACTIVE_POWER_MIN_PHASE_C_ATTRIBUTE_ID (0x0A0C)
+#define ZCL_ACTIVE_POWER_MAX_PHASE_C_ATTRIBUTE_ID (0x0A0D)
+#define ZCL_REACTIVE_POWER_PHASE_C_ATTRIBUTE_ID (0x0A0E)
+#define ZCL_APPARENT_POWER_PHASE_C_ATTRIBUTE_ID (0x0A0F)
+#define ZCL_POWER_FACTOR_PHASE_C_ATTRIBUTE_ID (0x0A10)
+#define ZCL_AVERAGE_RMS_VOLTAGE_MEASUREMENT_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A11)
+#define ZCL_AVERAGE_RMS_OVER_VOLTAGE_COUNTER_PHASE_C_ATTRIBUTE_ID (0x0A12)
+#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_COUNTER_PHASE_C_ATTRIBUTE_ID (0x0A13)
+#define ZCL_RMS_EXTREME_OVER_VOLTAGE_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A14)
+#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A15)
+#define ZCL_RMS_VOLTAGE_SAG_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A16)
+#define ZCL_RMS_VOLTAGE_SWELL_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A17)
+
+// Attribute ids for cluster: Diagnostics
+
+// Client attributes
+
+// Server attributes
+#define ZCL_NUMBER_OF_RESETS_ATTRIBUTE_ID (0x0000)
+#define ZCL_PERSISTENT_MEMORY_WRITES_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAC_RX_BCAST_ATTRIBUTE_ID (0x0100)
+#define ZCL_MAC_TX_BCAST_ATTRIBUTE_ID (0x0101)
+#define ZCL_MAC_RX_UCAST_ATTRIBUTE_ID (0x0102)
+#define ZCL_MAC_TX_UCAST_ATTRIBUTE_ID (0x0103)
+#define ZCL_MAC_TX_UCAST_RETRY_ATTRIBUTE_ID (0x0104)
+#define ZCL_MAC_TX_UCAST_FAIL_ATTRIBUTE_ID (0x0105)
+#define ZCL_APS_RX_BCAST_ATTRIBUTE_ID (0x0106)
+#define ZCL_APS_TX_BCAST_ATTRIBUTE_ID (0x0107)
+#define ZCL_APS_RX_UCAST_ATTRIBUTE_ID (0x0108)
+#define ZCL_APS_UCAST_SUCCESS_ATTRIBUTE_ID (0x0109)
+#define ZCL_APS_TX_UCAST_RETRY_ATTRIBUTE_ID (0x010A)
+#define ZCL_APS_TX_UCAST_FAIL_ATTRIBUTE_ID (0x010B)
+#define ZCL_ROUTE_DISC_INITIATED_ATTRIBUTE_ID (0x010C)
+#define ZCL_NEIGHBOR_ADDED_ATTRIBUTE_ID (0x010D)
+#define ZCL_NEIGHBOR_REMOVED_ATTRIBUTE_ID (0x010E)
+#define ZCL_NEIGHBOR_STALE_ATTRIBUTE_ID (0x010F)
+#define ZCL_JOIN_INDICATION_ATTRIBUTE_ID (0x0110)
+#define ZCL_CHILD_MOVED_ATTRIBUTE_ID (0x0111)
+#define ZCL_NWK_FC_FAILURE_ATTRIBUTE_ID (0x0112)
+#define ZCL_APS_FC_FAILURE_ATTRIBUTE_ID (0x0113)
+#define ZCL_APS_UNAUTHORIZED_KEY_ATTRIBUTE_ID (0x0114)
+#define ZCL_NWK_DECRYPT_FAILURE_ATTRIBUTE_ID (0x0115)
+#define ZCL_APS_DECRYPT_FAILURE_ATTRIBUTE_ID (0x0116)
+#define ZCL_PACKET_BUFFER_ALLOC_FAILURES_ATTRIBUTE_ID (0x0117)
+#define ZCL_RELAYED_UNICAST_ATTRIBUTE_ID (0x0118)
+#define ZCL_PHY_TO_MAC_QUEUE_LIMIT_REACHED_ATTRIBUTE_ID (0x0119)
+#define ZCL_PACKET_VALIDATE_DROP_COUNT_ATTRIBUTE_ID (0x011A)
+#define ZCL_AVERAGE_MAC_RETRY_PER_APS_MSG_SENT_ATTRIBUTE_ID (0x011B)
+#define ZCL_LAST_MESSAGE_LQI_ATTRIBUTE_ID (0x011C)
+#define ZCL_LAST_MESSAGE_RSSI_ATTRIBUTE_ID (0x011D)
+
+// Attribute ids for cluster: ZLL Commissioning
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Binding
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Sample Mfg Specific Cluster
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ATTRIBUTE_ONE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ATTRIBUTE_TWO_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Sample Mfg Specific Cluster 2
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ATTRIBUTE_THREE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ATTRIBUTE_FOUR_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Configuration Cluster
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TOKENS_LOCKED_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: MFGLIB Cluster
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PACKETS_RECEIVED_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAVED_RSSI_ATTRIBUTE_ID (0x0001)
+#define ZCL_SAVED_LQI_ATTRIBUTE_ID (0x0002)
+
+// Attribute ids for cluster: SL Works With All Hubs
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SL_DISABLE_OTA_DOWNGRADES_ATTRIBUTE_ID (0x0002)
+#define ZCL_SL_MGMT_LEAVE_WITHOUT_REJOIN_ENABLED_ATTRIBUTE_ID (0x0003)
+#define ZCL_SL_NWK_RETRY_COUNT_ATTRIBUTE_ID (0x0004)
+#define ZCL_SL_MAC_RETRY_COUNT_ATTRIBUTE_ID (0x0005)
+#define ZCL_SL_ROUTER_CHECKIN_ENABLED_ATTRIBUTE_ID (0x0006)
+#define ZCL_SL_TOUCHLINK_INTERPAN_ENABLED_ATTRIBUTE_ID (0x0007)
+#define ZCL_SL_WWAH_PARENT_CLASSIFICATION_ENABLED_ATTRIBUTE_ID (0x0008)
+#define ZCL_SL_WWAH_APP_EVENT_RETRY_ENABLED_ATTRIBUTE_ID (0x0009)
+#define ZCL_SL_WWAH_APP_EVENT_RETRY_QUEUE_SIZE_ATTRIBUTE_ID (0x000A)
+#define ZCL_SL_WWAH_REJOIN_ENABLED_ATTRIBUTE_ID (0x000B)
+#define ZCL_SL_MAC_POLL_FAILURE_WAIT_TIME_ATTRIBUTE_ID (0x000C)
+#define ZCL_SL_CONFIGURATION_MODE_ENABLED_ATTRIBUTE_ID (0x000D)
+#define ZCL_SL_CURRENT_DEBUG_REPORT_ID_ATTRIBUTE_ID (0x000E)
+#define ZCL_SL_TC_SECURITY_ON_NTWK_KEY_ROTATION_ENABLED_ATTRIBUTE_ID (0x000F)
+#define ZCL_SL_WWAH_BAD_PARENT_RECOVERY_ENABLED_ATTRIBUTE_ID (0x0010)
+#define ZCL_SL_PENDING_NETWORK_UPDATE_CHANNEL_ATTRIBUTE_ID (0x0011)
+#define ZCL_SL_PENDING_NETWORK_UPDATE_PANID_ATTRIBUTE_ID (0x0012)
+#define ZCL_SL_OTA_MAX_OFFLINE_DURATION_ATTRIBUTE_ID (0x0013)
diff --git a/examples/chip-tool/gen/attribute-size.h b/examples/chip-tool/gen/attribute-size.h
new file mode 100644
index 0000000..a6caf3a
--- /dev/null
+++ b/examples/chip-tool/gen/attribute-size.h
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// ZCL attribute sizes
+ZCL_DATA8_ATTRIBUTE_TYPE, 1, ZCL_DATA16_ATTRIBUTE_TYPE, 2, ZCL_DATA24_ATTRIBUTE_TYPE, 3, ZCL_DATA32_ATTRIBUTE_TYPE, 4,
+ ZCL_DATA40_ATTRIBUTE_TYPE, 5, ZCL_DATA48_ATTRIBUTE_TYPE, 6, ZCL_DATA56_ATTRIBUTE_TYPE, 7, ZCL_DATA64_ATTRIBUTE_TYPE, 8,
+ ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, ZCL_BITMAP8_ATTRIBUTE_TYPE, 1, ZCL_BITMAP16_ATTRIBUTE_TYPE, 2, ZCL_BITMAP24_ATTRIBUTE_TYPE, 3,
+ ZCL_BITMAP32_ATTRIBUTE_TYPE, 4, ZCL_BITMAP40_ATTRIBUTE_TYPE, 5, ZCL_BITMAP48_ATTRIBUTE_TYPE, 6, ZCL_BITMAP56_ATTRIBUTE_TYPE, 7,
+ ZCL_BITMAP64_ATTRIBUTE_TYPE, 8, ZCL_INT8U_ATTRIBUTE_TYPE, 1, ZCL_INT16U_ATTRIBUTE_TYPE, 2, ZCL_INT24U_ATTRIBUTE_TYPE, 3,
+ ZCL_INT32U_ATTRIBUTE_TYPE, 4, ZCL_INT40U_ATTRIBUTE_TYPE, 5, ZCL_INT48U_ATTRIBUTE_TYPE, 6, ZCL_INT56U_ATTRIBUTE_TYPE, 7,
+ ZCL_INT64U_ATTRIBUTE_TYPE, 8, ZCL_INT8S_ATTRIBUTE_TYPE, 1, ZCL_INT16S_ATTRIBUTE_TYPE, 2, ZCL_INT24S_ATTRIBUTE_TYPE, 3,
+ ZCL_INT32S_ATTRIBUTE_TYPE, 4, ZCL_INT40S_ATTRIBUTE_TYPE, 5, ZCL_INT48S_ATTRIBUTE_TYPE, 6, ZCL_INT56S_ATTRIBUTE_TYPE, 7,
+ ZCL_INT64S_ATTRIBUTE_TYPE, 8, ZCL_ENUM8_ATTRIBUTE_TYPE, 1, ZCL_ENUM16_ATTRIBUTE_TYPE, 2, ZCL_FLOAT_SEMI_ATTRIBUTE_TYPE, 2,
+ ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE, 4, ZCL_FLOAT_DOUBLE_ATTRIBUTE_TYPE, 8, ZCL_TIME_OF_DAY_ATTRIBUTE_TYPE, 4,
+ ZCL_DATE_ATTRIBUTE_TYPE, 4, ZCL_UTC_TIME_ATTRIBUTE_TYPE, 4, ZCL_CLUSTER_ID_ATTRIBUTE_TYPE, 2, ZCL_ATTRIBUTE_ID_ATTRIBUTE_TYPE,
+ 2, ZCL_BACNET_OID_ATTRIBUTE_TYPE, 4, ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE, 8, ZCL_SECURITY_KEY_ATTRIBUTE_TYPE, 16,
+ ZCL_ENDPOINT_ID_ATTRIBUTE_TYPE, 1, ZCL_GROUP_ID_ATTRIBUTE_TYPE, 2, ZCL_COMMAND_ID_ATTRIBUTE_TYPE, 1, ZCL_NODE_ID_ATTRIBUTE_TYPE,
+ 8,
diff --git a/examples/chip-tool/gen/attribute-type.h b/examples/chip-tool/gen/attribute-type.h
new file mode 100644
index 0000000..56900dc
--- /dev/null
+++ b/examples/chip-tool/gen/attribute-type.h
@@ -0,0 +1,86 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// ZCL attribute types
+enum
+{
+ ZCL_NO_DATA_ATTRIBUTE_TYPE = 0x00, // No data
+ ZCL_DATA8_ATTRIBUTE_TYPE = 0x08, // 8-bit data
+ ZCL_DATA16_ATTRIBUTE_TYPE = 0x09, // 16-bit data
+ ZCL_DATA24_ATTRIBUTE_TYPE = 0x0A, // 24-bit data
+ ZCL_DATA32_ATTRIBUTE_TYPE = 0x0B, // 32-bit data
+ ZCL_DATA40_ATTRIBUTE_TYPE = 0x0C, // 40-bit data
+ ZCL_DATA48_ATTRIBUTE_TYPE = 0x0D, // 48-bit data
+ ZCL_DATA56_ATTRIBUTE_TYPE = 0x0E, // 56-bit data
+ ZCL_DATA64_ATTRIBUTE_TYPE = 0x0F, // 64-bit data
+ ZCL_BOOLEAN_ATTRIBUTE_TYPE = 0x10, // Boolean
+ ZCL_BITMAP8_ATTRIBUTE_TYPE = 0x18, // 8-bit bitmap
+ ZCL_BITMAP16_ATTRIBUTE_TYPE = 0x19, // 16-bit bitmap
+ ZCL_BITMAP24_ATTRIBUTE_TYPE = 0x1A, // 24-bit bitmap
+ ZCL_BITMAP32_ATTRIBUTE_TYPE = 0x1B, // 32-bit bitmap
+ ZCL_BITMAP40_ATTRIBUTE_TYPE = 0x1C, // 40-bit bitmap
+ ZCL_BITMAP48_ATTRIBUTE_TYPE = 0x1D, // 48-bit bitmap
+ ZCL_BITMAP56_ATTRIBUTE_TYPE = 0x1E, // 56-bit bitmap
+ ZCL_BITMAP64_ATTRIBUTE_TYPE = 0x1F, // 64-bit bitmap
+ ZCL_INT8U_ATTRIBUTE_TYPE = 0x20, // Unsigned 8-bit integer
+ ZCL_INT16U_ATTRIBUTE_TYPE = 0x21, // Unsigned 16-bit integer
+ ZCL_INT24U_ATTRIBUTE_TYPE = 0x22, // Unsigned 24-bit integer
+ ZCL_INT32U_ATTRIBUTE_TYPE = 0x23, // Unsigned 32-bit integer
+ ZCL_INT40U_ATTRIBUTE_TYPE = 0x24, // Unsigned 40-bit integer
+ ZCL_INT48U_ATTRIBUTE_TYPE = 0x25, // Unsigned 48-bit integer
+ ZCL_INT56U_ATTRIBUTE_TYPE = 0x26, // Unsigned 56-bit integer
+ ZCL_INT64U_ATTRIBUTE_TYPE = 0x27, // Unsigned 64-bit integer
+ ZCL_INT8S_ATTRIBUTE_TYPE = 0x28, // Signed 8-bit integer
+ ZCL_INT16S_ATTRIBUTE_TYPE = 0x29, // Signed 16-bit integer
+ ZCL_INT24S_ATTRIBUTE_TYPE = 0x2A, // Signed 24-bit integer
+ ZCL_INT32S_ATTRIBUTE_TYPE = 0x2B, // Signed 32-bit integer
+ ZCL_INT40S_ATTRIBUTE_TYPE = 0x2C, // Signed 40-bit integer
+ ZCL_INT48S_ATTRIBUTE_TYPE = 0x2D, // Signed 48-bit integer
+ ZCL_INT56S_ATTRIBUTE_TYPE = 0x2E, // Signed 56-bit integer
+ ZCL_INT64S_ATTRIBUTE_TYPE = 0x2F, // Signed 64-bit integer
+ ZCL_ENUM8_ATTRIBUTE_TYPE = 0x30, // 8-bit enumeration
+ ZCL_ENUM16_ATTRIBUTE_TYPE = 0x31, // 16-bit enumeration
+ ZCL_FLOAT_SEMI_ATTRIBUTE_TYPE = 0x38, // Semi-precision
+ ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE = 0x39, // Single precision
+ ZCL_FLOAT_DOUBLE_ATTRIBUTE_TYPE = 0x3A, // Double precision
+ ZCL_OCTET_STRING_ATTRIBUTE_TYPE = 0x41, // Octet string
+ ZCL_CHAR_STRING_ATTRIBUTE_TYPE = 0x42, // Character string
+ ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE = 0x43, // Long octet string
+ ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE = 0x44, // Long character string
+ ZCL_ARRAY_ATTRIBUTE_TYPE = 0x48, // Array
+ ZCL_STRUCT_ATTRIBUTE_TYPE = 0x4C, // Structure
+ ZCL_SET_ATTRIBUTE_TYPE = 0x50, // Set
+ ZCL_BAG_ATTRIBUTE_TYPE = 0x51, // Bag
+ ZCL_TIME_OF_DAY_ATTRIBUTE_TYPE = 0xE0, // Time of day
+ ZCL_DATE_ATTRIBUTE_TYPE = 0xE1, // Date
+ ZCL_UTC_TIME_ATTRIBUTE_TYPE = 0xE2, // UTC Time
+ ZCL_CLUSTER_ID_ATTRIBUTE_TYPE = 0xE8, // Cluster ID
+ ZCL_ATTRIBUTE_ID_ATTRIBUTE_TYPE = 0xE9, // Attribute ID
+ ZCL_BACNET_OID_ATTRIBUTE_TYPE = 0xEA, // BACnet OID
+ ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE = 0xF0, // IEEE address
+ ZCL_SECURITY_KEY_ATTRIBUTE_TYPE = 0xF1, // 128-bit security key
+ ZCL_ENDPOINT_ID_ATTRIBUTE_TYPE = 0xF2, // Endpoint Id
+ ZCL_GROUP_ID_ATTRIBUTE_TYPE = 0xF3, // Group Id
+ ZCL_COMMAND_ID_ATTRIBUTE_TYPE = 0xF4, // Command Id
+ ZCL_NODE_ID_ATTRIBUTE_TYPE = 0xF5, // Node Id
+ ZCL_UNKNOWN_ATTRIBUTE_TYPE = 0xFF, // Unknown
+};
diff --git a/examples/chip-tool/gen/call-command-handler.cpp b/examples/chip-tool/gen/call-command-handler.cpp
new file mode 100644
index 0000000..ed3fae9
--- /dev/null
+++ b/examples/chip-tool/gen/call-command-handler.cpp
@@ -0,0 +1,1015 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include <stdint.h>
+
+#include "af-structs.h"
+#include "call-command-handler.h"
+#include "callback.h"
+#include "cluster-id.h"
+#include "command-id.h"
+#include "util.h"
+
+using namespace chip;
+
+EmberAfStatus emberAfBarrierControlClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfBasicClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfBindingClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfColorControlClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfGroupsClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfLevelControlClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfOnOffClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfTemperatureMeasurementClusterClientCommandParse(EmberAfClusterCommand * cmd);
+
+static EmberAfStatus status(bool wasHandled, bool clusterExists, bool mfgSpecific)
+{
+ if (wasHandled)
+ {
+ return EMBER_ZCL_STATUS_SUCCESS;
+ }
+ else if (mfgSpecific)
+ {
+ return EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND;
+ }
+ else if (clusterExists)
+ {
+ return EMBER_ZCL_STATUS_UNSUP_COMMAND;
+ }
+ else
+ {
+ return EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER;
+ }
+}
+
+// Main command parsing controller.
+EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd)
+{
+ EmberAfStatus result = status(false, false, cmd->mfgSpecific);
+ if (cmd->direction == (uint8_t) ZCL_DIRECTION_SERVER_TO_CLIENT &&
+ emberAfContainsClientWithMfgCode(cmd->apsFrame->destinationEndpoint, cmd->apsFrame->clusterId, cmd->mfgCode))
+ {
+ switch (cmd->apsFrame->clusterId)
+ {
+ case ZCL_BARRIER_CONTROL_CLUSTER_ID:
+ // No commands are enabled for cluster Barrier Control
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_BASIC_CLUSTER_ID:
+ // No commands are enabled for cluster Basic
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_BINDING_CLUSTER_ID:
+ // No commands are enabled for cluster Binding
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_COLOR_CONTROL_CLUSTER_ID:
+ // No commands are enabled for cluster Color Control
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_DOOR_LOCK_CLUSTER_ID:
+ result = emberAfDoorLockClusterClientCommandParse(cmd);
+ break;
+ case ZCL_GROUPS_CLUSTER_ID:
+ result = emberAfGroupsClusterClientCommandParse(cmd);
+ break;
+ case ZCL_IDENTIFY_CLUSTER_ID:
+ result = emberAfIdentifyClusterClientCommandParse(cmd);
+ break;
+ case ZCL_LEVEL_CONTROL_CLUSTER_ID:
+ // No commands are enabled for cluster Level Control
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_ON_OFF_CLUSTER_ID:
+ // No commands are enabled for cluster On/off
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_SCENES_CLUSTER_ID:
+ result = emberAfScenesClusterClientCommandParse(cmd);
+ break;
+ case ZCL_TEMP_MEASUREMENT_CLUSTER_ID:
+ // No commands are enabled for cluster Temperature Measurement
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ default:
+ // Unrecognized cluster ID, error status will apply.
+ break;
+ }
+ }
+ else if (cmd->direction == (uint8_t) ZCL_DIRECTION_CLIENT_TO_SERVER &&
+ emberAfContainsServerWithMfgCode(cmd->apsFrame->destinationEndpoint, cmd->apsFrame->clusterId, cmd->mfgCode))
+ {
+ switch (cmd->apsFrame->clusterId)
+ {
+ default:
+ // Unrecognized cluster ID, error status will apply.
+ break;
+ }
+ }
+ return result;
+}
+
+// Cluster specific command parsing
+
+EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd)
+{
+ bool wasHandled = false;
+
+ if (!cmd->mfgSpecific)
+ {
+ switch (cmd->commandId)
+ {
+ case ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearAllPinsResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearAllRfidsResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearHolidayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearPinResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearRfidResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearYeardayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t scheduleId;
+ uint8_t status;
+ uint32_t localStartTime;
+ uint32_t localEndTime;
+ uint8_t operatingModeDuringHoliday;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ scheduleId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ localStartTime = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 4);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ localEndTime = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 4);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ operatingModeDuringHoliday = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetHolidayScheduleResponseCallback(scheduleId, status, localStartTime, localEndTime,
+ operatingModeDuringHoliday);
+ break;
+ }
+ case ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t logEntryId;
+ uint32_t timestamp;
+ uint8_t eventType;
+ uint8_t source;
+ uint8_t eventIdOrAlarmCode;
+ uint16_t userId;
+ uint8_t * pin;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ logEntryId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ timestamp = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 4);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ eventType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ source = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ eventIdOrAlarmCode = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ pin = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetLogRecordResponseCallback(logEntryId, timestamp, eventType, source,
+ eventIdOrAlarmCode, userId, pin);
+ break;
+ }
+ case ZCL_GET_PIN_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t userId;
+ uint8_t userStatus;
+ uint8_t userType;
+ uint8_t * pin;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ pin = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetPinResponseCallback(userId, userStatus, userType, pin);
+ break;
+ }
+ case ZCL_GET_RFID_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t userId;
+ uint8_t userStatus;
+ uint8_t userType;
+ uint8_t * rfid;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ rfid = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetRfidResponseCallback(userId, userStatus, userType, rfid);
+ break;
+ }
+ case ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t userId;
+ uint8_t userType;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetUserTypeResponseCallback(userId, userType);
+ break;
+ }
+ case ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t scheduleId;
+ uint16_t userId;
+ uint8_t status;
+ uint8_t daysMask;
+ uint8_t startHour;
+ uint8_t startMinute;
+ uint8_t endHour;
+ uint8_t endMinute;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ scheduleId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ daysMask = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ startHour = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ startMinute = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ endHour = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ endMinute = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(scheduleId, userId, status, daysMask, startHour,
+ startMinute, endHour, endMinute);
+ break;
+ }
+ case ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t scheduleId;
+ uint16_t userId;
+ uint8_t status;
+ uint32_t localStartTime;
+ uint32_t localEndTime;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ scheduleId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ localStartTime = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 4);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ localEndTime = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled =
+ emberAfDoorLockClusterGetYeardayScheduleResponseCallback(scheduleId, userId, status, localStartTime, localEndTime);
+ break;
+ }
+ case ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterLockDoorResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetHolidayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_PIN_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetPinResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_RFID_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetRfidResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetUserTypeResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetYeardayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterUnlockDoorResponseCallback(status);
+ break;
+ }
+ case ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(status);
+ break;
+ }
+ default: {
+ // Unrecognized command ID, error status will apply.
+ break;
+ }
+ }
+ }
+ return status(wasHandled, true, cmd->mfgSpecific);
+}
+EmberAfStatus emberAfGroupsClusterClientCommandParse(EmberAfClusterCommand * cmd)
+{
+ bool wasHandled = false;
+
+ if (!cmd->mfgSpecific)
+ {
+ switch (cmd->commandId)
+ {
+ case ZCL_ADD_GROUP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfGroupsClusterAddGroupResponseCallback(status, groupId);
+ break;
+ }
+ case ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t capacity;
+ uint8_t groupCount;
+ /* TYPE WARNING: array array defaults to */ uint8_t * groupList;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ capacity = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupCount = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ groupList = cmd->buffer + payloadOffset;
+
+ wasHandled = emberAfGroupsClusterGetGroupMembershipResponseCallback(capacity, groupCount, groupList);
+ break;
+ }
+ case ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfGroupsClusterRemoveGroupResponseCallback(status, groupId);
+ break;
+ }
+ case ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t * groupName;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupName = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfGroupsClusterViewGroupResponseCallback(status, groupId, groupName);
+ break;
+ }
+ default: {
+ // Unrecognized command ID, error status will apply.
+ break;
+ }
+ }
+ }
+ return status(wasHandled, true, cmd->mfgSpecific);
+}
+EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * cmd)
+{
+ bool wasHandled = false;
+
+ if (!cmd->mfgSpecific)
+ {
+ switch (cmd->commandId)
+ {
+ case ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t timeout;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ timeout = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfIdentifyClusterIdentifyQueryResponseCallback(timeout);
+ break;
+ }
+ default: {
+ // Unrecognized command ID, error status will apply.
+ break;
+ }
+ }
+ }
+ return status(wasHandled, true, cmd->mfgSpecific);
+}
+EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd)
+{
+ bool wasHandled = false;
+
+ if (!cmd->mfgSpecific)
+ {
+ switch (cmd->commandId)
+ {
+ case ZCL_ADD_SCENE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t sceneId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfScenesClusterAddSceneResponseCallback(status, groupId, sceneId);
+ break;
+ }
+ case ZCL_GET_SCENE_MEMBERSHIP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint8_t capacity;
+ uint16_t groupId;
+ uint8_t sceneCount;
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ capacity = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (status == 0)
+ {
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneCount = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ }
+ else
+ {
+ sceneCount = UINT8_MAX;
+ }
+ if (status == 0)
+ {
+ sceneList = cmd->buffer + payloadOffset;
+ }
+ else
+ {
+ sceneList = NULL;
+ }
+
+ wasHandled = emberAfScenesClusterGetSceneMembershipResponseCallback(status, capacity, groupId, sceneCount, sceneList);
+ break;
+ }
+ case ZCL_REMOVE_ALL_SCENES_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfScenesClusterRemoveAllScenesResponseCallback(status, groupId);
+ break;
+ }
+ case ZCL_REMOVE_SCENE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t sceneId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfScenesClusterRemoveSceneResponseCallback(status, groupId, sceneId);
+ break;
+ }
+ case ZCL_STORE_SCENE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t sceneId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfScenesClusterStoreSceneResponseCallback(status, groupId, sceneId);
+ break;
+ }
+ case ZCL_VIEW_SCENE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t sceneId;
+ uint16_t transitionTime;
+ uint8_t * sceneName;
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (status == 0)
+ {
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ }
+ else
+ {
+ transitionTime = UINT16_MAX;
+ }
+ if (status == 0)
+ {
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneName = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + emberAfStringLength(sceneName) + 1u);
+ }
+ else
+ {
+ sceneName = NULL;
+ }
+ if (status == 0)
+ {
+ extensionFieldSets = cmd->buffer + payloadOffset;
+ }
+ else
+ {
+ extensionFieldSets = NULL;
+ }
+
+ wasHandled = emberAfScenesClusterViewSceneResponseCallback(status, groupId, sceneId, transitionTime, sceneName,
+ extensionFieldSets);
+ break;
+ }
+ default: {
+ // Unrecognized command ID, error status will apply.
+ break;
+ }
+ }
+ }
+ return status(wasHandled, true, cmd->mfgSpecific);
+}
diff --git a/src/darwin/Framework/CHIP/CHIPDeviceCallback.h b/examples/chip-tool/gen/call-command-handler.h
similarity index 73%
rename from src/darwin/Framework/CHIP/CHIPDeviceCallback.h
rename to examples/chip-tool/gen/call-command-handler.h
index 6406069..16314d8 100644
--- a/src/darwin/Framework/CHIP/CHIPDeviceCallback.h
+++ b/examples/chip-tool/gen/call-command-handler.h
@@ -1,6 +1,6 @@
-/**
+/*
*
- * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2021 Project CHIP Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,12 +15,9 @@
* limitations under the License.
*/
-#import <Foundation/Foundation.h>
+// THIS FILE IS GENERATED BY ZAP
-#import <CHIP/CHIPError.h>
+// Prevent multiple inclusion
+#pragma once
-NS_ASSUME_NONNULL_BEGIN
-
-typedef void (^CHIPDeviceCallback)(NSError * error);
-
-NS_ASSUME_NONNULL_END
+#include "af-types.h"
diff --git a/examples/chip-tool/gen/callback-stub.cpp b/examples/chip-tool/gen/callback-stub.cpp
new file mode 100644
index 0000000..c5dde30
--- /dev/null
+++ b/examples/chip-tool/gen/callback-stub.cpp
@@ -0,0 +1,684 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include "callback.h"
+#include "cluster-id.h"
+
+using namespace chip;
+
+// Cluster Init Functions
+void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
+{
+ switch (clusterId)
+ {
+ case ZCL_BARRIER_CONTROL_CLUSTER_ID:
+ emberAfBarrierControlClusterInitCallback(endpoint);
+ break;
+ case ZCL_BASIC_CLUSTER_ID:
+ emberAfBasicClusterInitCallback(endpoint);
+ break;
+ case ZCL_BINDING_CLUSTER_ID:
+ emberAfBindingClusterInitCallback(endpoint);
+ break;
+ case ZCL_COLOR_CONTROL_CLUSTER_ID:
+ emberAfColorControlClusterInitCallback(endpoint);
+ break;
+ case ZCL_DOOR_LOCK_CLUSTER_ID:
+ emberAfDoorLockClusterInitCallback(endpoint);
+ break;
+ case ZCL_GROUPS_CLUSTER_ID:
+ emberAfGroupsClusterInitCallback(endpoint);
+ break;
+ case ZCL_IDENTIFY_CLUSTER_ID:
+ emberAfIdentifyClusterInitCallback(endpoint);
+ break;
+ case ZCL_LEVEL_CONTROL_CLUSTER_ID:
+ emberAfLevelControlClusterInitCallback(endpoint);
+ break;
+ case ZCL_ON_OFF_CLUSTER_ID:
+ emberAfOnOffClusterInitCallback(endpoint);
+ break;
+ case ZCL_SCENES_CLUSTER_ID:
+ emberAfScenesClusterInitCallback(endpoint);
+ break;
+ case ZCL_TEMP_MEASUREMENT_CLUSTER_ID:
+ emberAfTemperatureMeasurementClusterInitCallback(endpoint);
+ break;
+ default:
+ // Unrecognized cluster ID
+ break;
+ }
+}
+
+void __attribute__((weak)) emberAfBarrierControlClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfBasicClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfBindingClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfColorControlClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfDoorLockClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfGroupsClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfIdentifyClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfLevelControlClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfOnOffClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfScenesClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfTemperatureMeasurementClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+
+//
+// Non-Cluster Related Callbacks
+//
+
+/** @brief Add To Current App Tasks
+ *
+ * This function is only useful to sleepy end devices. This function will note
+ * the passed item as part of a set of tasks the application has outstanding
+ * (e.g. message sent requiring APS acknwoledgement). This will affect how the
+ * application behaves with regard to sleeping and polling. Until the
+ * outstanding task is completed, the device may poll more frequently and sleep
+ * less often.
+ *
+ * @param tasks Ver.: always
+ */
+void __attribute__((weak)) emberAfAddToCurrentAppTasksCallback(EmberAfApplicationTask tasks) {}
+
+/** @brief Remove From Current App Tasks
+ *
+ * This function is only useful to sleepy end devices. This function will
+ * remove the passed item from the set of tasks the application has outstanding
+ * (e.g. message sent requiring APS acknwoledgement). This will affect how the
+ * application behaves with regard to sleeping and polling. Removing the item
+ * from the list of outstanding tasks may allow the device to sleep longer and
+ * poll less frequently. If there are other outstanding tasks the system may
+ * still have to stay away and poll more often.
+ *
+ * @param tasks Ver.: always
+ */
+void __attribute__((weak)) emberAfRemoveFromCurrentAppTasksCallback(EmberAfApplicationTask tasks) {}
+
+/** @brief Allow Network Write Attribute
+ *
+ * This function is called by the application framework before it writes an
+ * attribute in response to a write attribute request from an external device.
+ * The value passed into this callback is the value to which the attribute is to
+ * be set by the framework.
+ Example: In mirroring simple metering data
+ * on an Energy Services Interface (ESI) (formerly called Energy Service Portal
+ * (ESP) in SE 1.0).), a mirrored simple meter needs to write read-only
+ * attributes on its mirror. The-meter-mirror sample application, located in
+ * app/framework/sample-apps, uses this callback to allow the mirrored device to
+ * write simple metering attributes on the mirror regardless of the fact that
+ * most simple metering attributes are defined as read-only by the ZigBee
+ * specification.
+ Note: The ZCL specification does not (as of this
+ * writing) specify any permission-level security for writing writeable
+ * attributes. As far as the ZCL specification is concerned, if an attribute is
+ * writeable, any device that has a link key for the device should be able to
+ * write that attribute. Furthermore if an attribute is read only, it should not
+ * be written over the air. Thus, if you implement permissions for writing
+ * attributes as a feature, you MAY be operating outside the specification. This
+ * is unlikely to be a problem for writing read-only attributes, but it may be a
+ * problem for attributes that are writeable according to the specification but
+ * restricted by the application implementing this callback.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param value Ver.: always
+ * @param type Ver.: always
+ */
+EmberAfAttributeWritePermission __attribute__((weak))
+emberAfAllowNetworkWriteAttributeCallback(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId, uint8_t mask,
+ uint16_t manufacturerCode, uint8_t * value, uint8_t type)
+{
+ return EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_NORMAL; // Default
+}
+
+/** @brief Attribute Read Access
+ *
+ * This function is called whenever the Application Framework needs to check
+ * access permission for an attribute read.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param attributeId Ver.: always
+ */
+bool __attribute__((weak))
+emberAfAttributeReadAccessCallback(EndpointId endpoint, ClusterId clusterId, uint16_t manufacturerCode, AttributeId attributeId)
+{
+ return true;
+}
+
+/** @brief Attribute Write Access
+ *
+ * This function is called whenever the Application Framework needs to check
+ * access permission for an attribute write.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param attributeId Ver.: always
+ */
+bool __attribute__((weak))
+emberAfAttributeWriteAccessCallback(EndpointId endpoint, ClusterId clusterId, uint16_t manufacturerCode, AttributeId attributeId)
+{
+ return true;
+}
+
+/** @brief Default Response
+ *
+ * This function is called by the application framework when a Default Response
+ * command is received from an external device. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param commandId The command identifier to which this is a response. Ver.:
+ * always
+ * @param status Specifies either SUCCESS or the nature of the error that was
+ * detected in the received command. Ver.: always
+ */
+bool __attribute__((weak)) emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ return false;
+}
+
+/** @brief Configure Reporting Response
+ *
+ * This function is called by the application framework when a Configure
+ * Reporting Response command is received from an external device. The
+ * application should return true if the message was processed or false if it
+ * was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of attribute status records. Ver.:
+ * always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief Read Reporting Configuration Response
+ *
+ * This function is called by the application framework when a Read Reporting
+ * Configuration Response command is received from an external device. The
+ * application should return true if the message was processed or false if it
+ * was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of attribute reporting configuration
+ * records. Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfReadReportingConfigurationResponseCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief Discover Attributes Response
+ *
+ * This function is called by the application framework when a Discover
+ * Attributes Response or Discover Attributes Extended Response command is
+ * received from an external device. The Discover Attributes Response command
+ * contains a bool indicating if discovery is complete and a list of zero or
+ * more attribute identifier/type records. The final argument indicates whether
+ * the response is in the extended format or not. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param discoveryComplete Indicates whether there are more attributes to be
+ * discovered. true if there are no more attributes to be discovered. Ver.:
+ * always
+ * @param buffer Buffer containing the list of attribute identifier/type
+ * records. Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ * @param extended Indicates whether the response is in the extended format or
+ * not. Ver.: always
+ */
+bool __attribute__((weak)) emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * buffer,
+ uint16_t bufLen, bool extended)
+{
+ return false;
+}
+
+/** @brief Discover Commands Generated Response
+ *
+ * This function is called by the framework when Discover Commands Generated
+ * Response is received.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param manufacturerCode Manufacturer code Ver.: always
+ * @param discoveryComplete Indicates whether there are more commands to be
+ * discovered. Ver.: always
+ * @param commandIds Buffer containing the list of command identifiers. Ver.:
+ * always
+ * @param commandIdCount The length of bytes of the list, whish is the same as
+ * the number of identifiers. Ver.: always
+ */
+bool __attribute__((weak))
+emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ return false;
+}
+
+/** @brief Discover Commands Received Response
+ *
+ * This function is called by the framework when Discover Commands Received
+ * Response is received.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param manufacturerCode Manufacturer code Ver.: always
+ * @param discoveryComplete Indicates whether there are more commands to be
+ * discovered. Ver.: always
+ * @param commandIds Buffer containing the list of command identifiers. Ver.:
+ * always
+ * @param commandIdCount The length of bytes of the list, whish is the same as
+ * the number of identifiers. Ver.: always
+ */
+bool __attribute__((weak))
+emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ return false;
+}
+
+/** @brief Pre Command Received
+ *
+ * This callback is the second in the Application Framework's message processing
+ * chain. At this point in the processing of incoming over-the-air messages, the
+ * application has determined that the incoming message is a ZCL command. It
+ * parses enough of the message to populate an EmberAfClusterCommand struct. The
+ * Application Framework defines this struct value in a local scope to the
+ * command processing but also makes it available through a global pointer
+ * called emberAfCurrentCommand, in app/framework/util/util.c. When command
+ * processing is complete, this pointer is cleared.
+ *
+ * @param cmd Ver.: always
+ */
+bool __attribute__((weak)) emberAfPreCommandReceivedCallback(EmberAfClusterCommand * cmd)
+{
+ return false;
+}
+
+/** @brief Pre Message Send
+ *
+ * This function is called by the framework when it is about to pass a message
+ * to the stack primitives for sending. This message may or may not be ZCL,
+ * ZDO, or some other protocol. This is called prior to
+ any ZigBee
+ * fragmentation that may be done. If the function returns true it is assumed
+ * the callback has consumed and processed the message. The callback must also
+ * set the EmberStatus status code to be passed back to the caller. The
+ * framework will do no further processing on the message.
+ If the
+ * function returns false then it is assumed that the callback has not processed
+ * the mesasge and the framework will continue to process accordingly.
+ *
+ * @param messageStruct The structure containing the parameters of the APS
+ * message to be sent. Ver.: always
+ * @param status A pointer to the status code value that will be returned to the
+ * caller. Ver.: always
+ */
+bool __attribute__((weak)) emberAfPreMessageSendCallback(EmberAfMessageStruct * messageStruct, EmberStatus * status)
+{
+ return false;
+}
+
+/** @brief Message Sent
+ *
+ * This function is called by the application framework from the message sent
+ * handler, when it is informed by the stack regarding the message sent status.
+ * All of the values passed to the emberMessageSentHandler are passed on to this
+ * callback. This provides an opportunity for the application to verify that its
+ * message has been sent successfully and take the appropriate action. This
+ * callback should return a bool value of true or false. A value of true
+ * indicates that the message sent notification has been handled and should not
+ * be handled by the application framework.
+ *
+ * @param type Ver.: always
+ * @param indexOrDestination Ver.: always
+ * @param apsFrame Ver.: always
+ * @param msgLen Ver.: always
+ * @param message Ver.: always
+ * @param status Ver.: always
+ */
+bool __attribute__((weak))
+emberAfMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, EmberApsFrame * apsFrame, uint16_t msgLen,
+ uint8_t * message, EmberStatus status)
+{
+ return false;
+}
+
+/** @brief Pre Attribute Change
+ *
+ * This function is called by the application framework before it changes an
+ * attribute value. The value passed into this callback is the value to which
+ * the attribute is to be set by the framework. The application should return
+ * ::EMBER_ZCL_STATUS_SUCCESS to permit the change or any other ::EmberAfStatus
+ * to reject it.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param type Ver.: always
+ * @param size Ver.: always
+ * @param value Ver.: always
+ */
+EmberAfStatus __attribute__((weak))
+emberAfPreAttributeChangeCallback(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId, uint8_t mask,
+ uint16_t manufacturerCode, uint8_t type, uint8_t size, uint8_t * value)
+{
+ return EMBER_ZCL_STATUS_SUCCESS;
+}
+
+/** @brief Post Attribute Change
+ *
+ * This function is called by the application framework after it changes an
+ * attribute value. The value passed into this callback is the value to which
+ * the attribute was set by the framework.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param type Ver.: always
+ * @param size Ver.: always
+ * @param value Ver.: always
+ */
+void __attribute__((weak))
+emberAfPostAttributeChangeCallback(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId, uint8_t mask,
+ uint16_t manufacturerCode, uint8_t type, uint8_t size, uint8_t * value)
+{}
+
+/** @brief Read Attributes Response
+ *
+ * This function is called by the application framework when a Read Attributes
+ * Response command is received from an external device. The application should
+ * return true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of read attribute status records.
+ * Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief External Attribute Read
+ *
+ * Like emberAfExternalAttributeWriteCallback above, this function is called
+ * when the framework needs to read an attribute that is not stored within the
+ * Application Framework's data structures.
+ All of the important
+ * information about the attribute itself is passed as a pointer to an
+ * EmberAfAttributeMetadata struct, which is stored within the application and
+ * used to manage the attribute. A complete description of the
+ * EmberAfAttributeMetadata struct is provided in
+ * app/framework/include/af-types.h
+ This function assumes that the
+ * application is able to read the attribute, write it into the passed buffer,
+ * and return immediately. Any attributes that require a state machine for
+ * reading and writing are not really candidates for externalization at the
+ * present time. The Application Framework does not currently include a state
+ * machine for reading or writing attributes that must take place across a
+ * series of application ticks. Attributes that cannot be read in a timely
+ * manner should be stored within the Application Framework and updated
+ * occasionally by the application code from within the
+ * emberAfMainTickCallback.
+ If the application was successfully able to
+ * read the attribute and write it into the passed buffer, it should return a
+ * value of EMBER_ZCL_STATUS_SUCCESS. Ensure that the size of the externally
+ * managed attribute value is smaller than what the buffer can hold. In the case
+ * of a buffer overflow throw an appropriate error such as
+ * EMBER_ZCL_STATUS_INSUFFICIENT_SPACE. Any other return value indicates the
+ * application was not able to read the attribute.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeMetadata Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param buffer Ver.: always
+ * @param maxReadLength Ver.: always
+ */
+EmberAfStatus __attribute__((weak))
+emberAfExternalAttributeReadCallback(EndpointId endpoint, ClusterId clusterId, EmberAfAttributeMetadata * attributeMetadata,
+ uint16_t manufacturerCode, uint8_t * buffer, uint16_t maxReadLength)
+{
+ return EMBER_ZCL_STATUS_FAILURE;
+}
+
+/** @brief Write Attributes Response
+ *
+ * This function is called by the application framework when a Write Attributes
+ * Response command is received from an external device. The application should
+ * return true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of write attribute status records.
+ * Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief External Attribute Write
+ *
+ * This function is called whenever the Application Framework needs to write an
+ * attribute which is not stored within the data structures of the Application
+ * Framework itself. One of the new features in Version 2 is the ability to
+ * store attributes outside the Framework. This is particularly useful for
+ * attributes that do not need to be stored because they can be read off the
+ * hardware when they are needed, or are stored in some central location used by
+ * many modules within the system. In this case, you can indicate that the
+ * attribute is stored externally. When the framework needs to write an external
+ * attribute, it makes a call to this callback.
+ This callback is very
+ * useful for host micros which need to store attributes in persistent memory.
+ * Because each host micro (used with an Ember NCP) has its own type of
+ * persistent memory storage, the Application Framework does not include the
+ * ability to mark attributes as stored in flash the way that it does for Ember
+ * SoCs like the EM35x. On a host micro, any attributes that need to be stored
+ * in persistent memory should be marked as external and accessed through the
+ * external read and write callbacks. Any host code associated with the
+ * persistent storage should be implemented within this callback.
+ All of
+ * the important information about the attribute itself is passed as a pointer
+ * to an EmberAfAttributeMetadata struct, which is stored within the application
+ * and used to manage the attribute. A complete description of the
+ * EmberAfAttributeMetadata struct is provided in
+ * app/framework/include/af-types.h.
+ This function assumes that the
+ * application is able to write the attribute and return immediately. Any
+ * attributes that require a state machine for reading and writing are not
+ * candidates for externalization at the present time. The Application Framework
+ * does not currently include a state machine for reading or writing attributes
+ * that must take place across a series of application ticks. Attributes that
+ * cannot be written immediately should be stored within the Application
+ * Framework and updated occasionally by the application code from within the
+ * emberAfMainTickCallback.
+ If the application was successfully able to
+ * write the attribute, it returns a value of EMBER_ZCL_STATUS_SUCCESS. Any
+ * other return value indicates the application was not able to write the
+ * attribute.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeMetadata Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param buffer Ver.: always
+ */
+EmberAfStatus __attribute__((weak))
+emberAfExternalAttributeWriteCallback(EndpointId endpoint, ClusterId clusterId, EmberAfAttributeMetadata * attributeMetadata,
+ uint16_t manufacturerCode, uint8_t * buffer)
+{
+ return EMBER_ZCL_STATUS_FAILURE;
+}
+
+/** @brief Report Attributes
+ *
+ * This function is called by the application framework when a Report Attributes
+ * command is received from an external device. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this command. Ver.: always
+ * @param buffer Buffer containing the list of attribute report records. Ver.:
+ * always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief Get Current Time
+ *
+ * This callback is called when device attempts to get current time from the
+ * hardware. If this device has means to retrieve exact time, then this method
+ * should implement it. If the callback can't provide the exact time it should
+ * return 0 to indicate failure. Default action is to return 0, which indicates
+ * that device does not have access to real time.
+ *
+ */
+uint32_t __attribute__((weak)) emberAfGetCurrentTimeCallback()
+{
+ return 0;
+}
+
+/** @brief Get Endpoint Info
+ *
+ * This function is a callback to an application implemented endpoint that
+ * operates outside the normal application framework. When the framework wishes
+ * to perform operations with that endpoint it uses this callback to retrieve
+ * the endpoint's information. If the endpoint exists and the application can
+ * provide data then true shall be returned. Otherwise the callback must return
+ * false.
+ *
+ * @param endpoint The endpoint to retrieve data for. Ver.: always
+ * @param returnNetworkIndex The index corresponding to the ZigBee network the
+ * endpoint belongs to. If not using a multi-network device, 0 must be
+ * returned. Otherwise on a multi-network device the stack will switch to this
+ * network before sending the message. Ver.: always
+ * @param returnEndpointInfo A pointer to a data struct that will be written
+ * with information about the endpoint. Ver.: always
+ */
+bool __attribute__((weak))
+emberAfGetEndpointInfoCallback(EndpointId endpoint, uint8_t * returnNetworkIndex, EmberAfEndpointInfoStruct * returnEndpointInfo)
+{
+ return false;
+}
+
+/** @brief Get Source Route Overhead
+ *
+ * This function is called by the framework to determine the overhead required
+ * in the network frame for source routing to a particular destination.
+ *
+ * @param destination The node id of the destination Ver.: always
+ */
+uint8_t __attribute__((weak)) emberAfGetSourceRouteOverheadCallback(chip::NodeId destination)
+{
+ return 0;
+}
+
+/** @brief Registration Abort
+ *
+ * This callback is called when the device should abort the registration
+ * process.
+ *
+ */
+void __attribute__((weak)) emberAfRegistrationAbortCallback() {}
+
+/** @brief Interpan Send Message
+ *
+ * This function will send a raw MAC message with interpan frame format using
+ * the passed parameters.
+ *
+ * @param header Interpan header info Ver.: always
+ * @param messageLength The length of the message received or to send Ver.:
+ * always
+ * @param message The message data received or to send. Ver.: always
+ */
+EmberStatus __attribute__((weak))
+emberAfInterpanSendMessageCallback(EmberAfInterpanHeader * header, uint16_t messageLength, uint8_t * message)
+{
+ return EMBER_LIBRARY_NOT_PRESENT;
+}
+
+/** @brief Start Move
+ *
+ * This function is called to initiate the process for a device to move (rejoin)
+ * to a new parent.
+ *
+ */
+bool __attribute__((weak)) emberAfStartMoveCallback()
+{
+ return false;
+}
diff --git a/examples/chip-tool/gen/callback.h b/examples/chip-tool/gen/callback.h
new file mode 100644
index 0000000..9dc9bcf
--- /dev/null
+++ b/examples/chip-tool/gen/callback.h
@@ -0,0 +1,1681 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+#include "af-structs.h"
+#include "af-types.h"
+#include "basic-types.h"
+
+/** @brief Cluster Init
+ *
+ * This function is called when a specific cluster is initialized. It gives the
+ * application an opportunity to take care of cluster initialization procedures.
+ * It is called exactly once for each endpoint where cluster is present.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ */
+void emberAfClusterInitCallback(chip::EndpointId endpoint, chip::ClusterId clusterId);
+
+// Cluster Init Functions
+
+/** @brief Barrier Control Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBarrierControlClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Basic Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBasicClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Binding Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBindingClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Color Control Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfColorControlClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Door Lock Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfDoorLockClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Groups Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfGroupsClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Identify Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfIdentifyClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Level Control Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfLevelControlClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief On/off Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfOnOffClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Scenes Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfScenesClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Temperature Measurement Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfTemperatureMeasurementClusterInitCallback(chip::EndpointId endpoint);
+
+// Cluster Server/Client Init Functions
+
+//
+// Barrier Control Cluster client
+//
+
+/** @brief Barrier Control Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBarrierControlClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Barrier Control Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfBarrierControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Barrier Control Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfBarrierControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Barrier Control Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfBarrierControlClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Barrier Control Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfBarrierControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Barrier Control Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfBarrierControlClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Basic Cluster client
+//
+
+/** @brief Basic Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBasicClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Basic Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfBasicClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Basic Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfBasicClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Basic Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfBasicClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, EmberStatus status);
+
+/** @brief Basic Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfBasicClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Basic Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfBasicClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Binding Cluster client
+//
+
+/** @brief Binding Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBindingClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Binding Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfBindingClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Binding Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfBindingClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Binding Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfBindingClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Binding Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfBindingClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Binding Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfBindingClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Color Control Cluster client
+//
+
+/** @brief Color Control Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfColorControlClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Color Control Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfColorControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Color Control Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfColorControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Color Control Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfColorControlClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Color Control Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfColorControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Color Control Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfColorControlClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Door Lock Cluster client
+//
+
+/** @brief Door Lock Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfDoorLockClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Door Lock Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfDoorLockClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Door Lock Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfDoorLockClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Door Lock Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfDoorLockClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Door Lock Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfDoorLockClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Door Lock Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfDoorLockClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Groups Cluster client
+//
+
+/** @brief Groups Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfGroupsClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Groups Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfGroupsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Groups Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfGroupsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Groups Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfGroupsClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Groups Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfGroupsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Groups Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfGroupsClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Identify Cluster client
+//
+
+/** @brief Identify Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfIdentifyClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Identify Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfIdentifyClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Identify Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfIdentifyClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Identify Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfIdentifyClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Identify Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfIdentifyClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Identify Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfIdentifyClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Level Control Cluster client
+//
+
+/** @brief Level Control Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfLevelControlClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Level Control Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfLevelControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Level Control Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfLevelControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Level Control Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfLevelControlClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Level Control Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfLevelControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Level Control Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfLevelControlClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// On/off Cluster client
+//
+
+/** @brief On/off Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfOnOffClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief On/off Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfOnOffClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief On/off Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfOnOffClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief On/off Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfOnOffClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, EmberStatus status);
+
+/** @brief On/off Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfOnOffClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief On/off Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfOnOffClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Scenes Cluster client
+//
+
+/** @brief Scenes Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfScenesClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Scenes Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfScenesClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Scenes Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfScenesClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Scenes Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfScenesClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Scenes Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfScenesClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Scenes Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfScenesClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Temperature Measurement Cluster client
+//
+
+/** @brief Temperature Measurement Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfTemperatureMeasurementClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Temperature Measurement Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfTemperatureMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Temperature Measurement Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfTemperatureMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Temperature Measurement Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfTemperatureMeasurementClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Temperature Measurement Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfTemperatureMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType,
+ uint8_t size, uint8_t * value);
+
+/** @brief Temperature Measurement Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfTemperatureMeasurementClusterClientTickCallback(chip::EndpointId endpoint);
+
+// Cluster Commands Callback
+
+/**
+ * @brief Door Lock Cluster ClearAllPinsResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearAllPinsResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearAllRfidsResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearAllRfidsResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearHolidayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearHolidayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearPinResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearPinResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearRfidResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearRfidResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearWeekdayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearYeardayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearYeardayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster GetHolidayScheduleResponse Command callback
+ * @param scheduleId
+ * @param status
+ * @param localStartTime
+ * @param localEndTime
+ * @param operatingModeDuringHoliday
+ */
+
+bool emberAfDoorLockClusterGetHolidayScheduleResponseCallback(uint8_t scheduleId, uint8_t status, uint32_t localStartTime,
+ uint32_t localEndTime, uint8_t operatingModeDuringHoliday);
+
+/**
+ * @brief Door Lock Cluster GetLogRecordResponse Command callback
+ * @param logEntryId
+ * @param timestamp
+ * @param eventType
+ * @param source
+ * @param eventIdOrAlarmCode
+ * @param userId
+ * @param pin
+ */
+
+bool emberAfDoorLockClusterGetLogRecordResponseCallback(uint16_t logEntryId, uint32_t timestamp, uint8_t eventType, uint8_t source,
+ uint8_t eventIdOrAlarmCode, uint16_t userId, uint8_t * pin);
+
+/**
+ * @brief Door Lock Cluster GetPinResponse Command callback
+ * @param userId
+ * @param userStatus
+ * @param userType
+ * @param pin
+ */
+
+bool emberAfDoorLockClusterGetPinResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * pin);
+
+/**
+ * @brief Door Lock Cluster GetRfidResponse Command callback
+ * @param userId
+ * @param userStatus
+ * @param userType
+ * @param rfid
+ */
+
+bool emberAfDoorLockClusterGetRfidResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid);
+
+/**
+ * @brief Door Lock Cluster GetUserTypeResponse Command callback
+ * @param userId
+ * @param userType
+ */
+
+bool emberAfDoorLockClusterGetUserTypeResponseCallback(uint16_t userId, uint8_t userType);
+
+/**
+ * @brief Door Lock Cluster GetWeekdayScheduleResponse Command callback
+ * @param scheduleId
+ * @param userId
+ * @param status
+ * @param daysMask
+ * @param startHour
+ * @param startMinute
+ * @param endHour
+ * @param endMinute
+ */
+
+bool emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status, uint8_t daysMask,
+ uint8_t startHour, uint8_t startMinute, uint8_t endHour,
+ uint8_t endMinute);
+
+/**
+ * @brief Door Lock Cluster GetYeardayScheduleResponse Command callback
+ * @param scheduleId
+ * @param userId
+ * @param status
+ * @param localStartTime
+ * @param localEndTime
+ */
+
+bool emberAfDoorLockClusterGetYeardayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status,
+ uint32_t localStartTime, uint32_t localEndTime);
+
+/**
+ * @brief Door Lock Cluster LockDoorResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterLockDoorResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetHolidayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetHolidayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetPinResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetPinResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetRfidResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetRfidResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetUserTypeResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetUserTypeResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetWeekdayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetYeardayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetYeardayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster UnlockDoorResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterUnlockDoorResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster UnlockWithTimeoutResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(uint8_t status);
+
+/**
+ * @brief Groups Cluster AddGroupResponse Command callback
+ * @param status
+ * @param groupId
+ */
+
+bool emberAfGroupsClusterAddGroupResponseCallback(uint8_t status, uint16_t groupId);
+
+/**
+ * @brief Groups Cluster GetGroupMembershipResponse Command callback
+ * @param capacity
+ * @param groupCount
+ * @param groupList
+ */
+
+bool emberAfGroupsClusterGetGroupMembershipResponseCallback(uint8_t capacity, uint8_t groupCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * groupList);
+
+/**
+ * @brief Groups Cluster RemoveGroupResponse Command callback
+ * @param status
+ * @param groupId
+ */
+
+bool emberAfGroupsClusterRemoveGroupResponseCallback(uint8_t status, uint16_t groupId);
+
+/**
+ * @brief Groups Cluster ViewGroupResponse Command callback
+ * @param status
+ * @param groupId
+ * @param groupName
+ */
+
+bool emberAfGroupsClusterViewGroupResponseCallback(uint8_t status, uint16_t groupId, uint8_t * groupName);
+
+/**
+ * @brief Identify Cluster IdentifyQueryResponse Command callback
+ * @param timeout
+ */
+
+bool emberAfIdentifyClusterIdentifyQueryResponseCallback(uint16_t timeout);
+
+/**
+ * @brief Scenes Cluster AddSceneResponse Command callback
+ * @param status
+ * @param groupId
+ * @param sceneId
+ */
+
+bool emberAfScenesClusterAddSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId);
+
+/**
+ * @brief Scenes Cluster GetSceneMembershipResponse Command callback
+ * @param status
+ * @param capacity
+ * @param groupId
+ * @param sceneCount
+ * @param sceneList
+ */
+
+bool emberAfScenesClusterGetSceneMembershipResponseCallback(uint8_t status, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList);
+
+/**
+ * @brief Scenes Cluster RemoveAllScenesResponse Command callback
+ * @param status
+ * @param groupId
+ */
+
+bool emberAfScenesClusterRemoveAllScenesResponseCallback(uint8_t status, uint16_t groupId);
+
+/**
+ * @brief Scenes Cluster RemoveSceneResponse Command callback
+ * @param status
+ * @param groupId
+ * @param sceneId
+ */
+
+bool emberAfScenesClusterRemoveSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId);
+
+/**
+ * @brief Scenes Cluster StoreSceneResponse Command callback
+ * @param status
+ * @param groupId
+ * @param sceneId
+ */
+
+bool emberAfScenesClusterStoreSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId);
+
+/**
+ * @brief Scenes Cluster ViewSceneResponse Command callback
+ * @param status
+ * @param groupId
+ * @param sceneId
+ * @param transitionTime
+ * @param sceneName
+ * @param extensionFieldSets
+ */
+
+bool emberAfScenesClusterViewSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
+ uint8_t * sceneName,
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets);
+
+//
+// Non-Cluster Related Callbacks
+//
+
+/** @brief Add To Current App Tasks
+ *
+ * This function is only useful to sleepy end devices. This function will note
+ * the passed item as part of a set of tasks the application has outstanding
+ * (e.g. message sent requiring APS acknwoledgement). This will affect how the
+ * application behaves with regard to sleeping and polling. Until the
+ * outstanding task is completed, the device may poll more frequently and sleep
+ * less often.
+ *
+ * @param tasks Ver.: always
+ */
+void emberAfAddToCurrentAppTasksCallback(EmberAfApplicationTask tasks);
+
+/** @brief Remove From Current App Tasks
+ *
+ * This function is only useful to sleepy end devices. This function will
+ * remove the passed item from the set of tasks the application has outstanding
+ * (e.g. message sent requiring APS acknwoledgement). This will affect how the
+ * application behaves with regard to sleeping and polling. Removing the item
+ * from the list of outstanding tasks may allow the device to sleep longer and
+ * poll less frequently. If there are other outstanding tasks the system may
+ * still have to stay away and poll more often.
+ *
+ * @param tasks Ver.: always
+ */
+void emberAfRemoveFromCurrentAppTasksCallback(EmberAfApplicationTask tasks);
+
+/** @brief Allow Network Write Attribute
+ *
+ * This function is called by the application framework before it writes an
+ * attribute in response to a write attribute request from an external device.
+ * The value passed into this callback is the value to which the attribute is to
+ * be set by the framework.
+ Example: In mirroring simple metering data
+ * on an Energy Services Interface (ESI) (formerly called Energy Service Portal
+ * (ESP) in SE 1.0).), a mirrored simple meter needs to write read-only
+ * attributes on its mirror. The-meter-mirror sample application, located in
+ * app/framework/sample-apps, uses this callback to allow the mirrored device to
+ * write simple metering attributes on the mirror regardless of the fact that
+ * most simple metering attributes are defined as read-only by the ZigBee
+ * specification.
+ Note: The ZCL specification does not (as of this
+ * writing) specify any permission-level security for writing writeable
+ * attributes. As far as the ZCL specification is concerned, if an attribute is
+ * writeable, any device that has a link key for the device should be able to
+ * write that attribute. Furthermore if an attribute is read only, it should not
+ * be written over the air. Thus, if you implement permissions for writing
+ * attributes as a feature, you MAY be operating outside the specification. This
+ * is unlikely to be a problem for writing read-only attributes, but it may be a
+ * problem for attributes that are writeable according to the specification but
+ * restricted by the application implementing this callback.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param value Ver.: always
+ * @param type Ver.: always
+ */
+EmberAfAttributeWritePermission emberAfAllowNetworkWriteAttributeCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
+ chip::AttributeId attributeId, uint8_t mask,
+ uint16_t manufacturerCode, uint8_t * value, uint8_t type);
+
+/** @brief Attribute Read Access
+ *
+ * This function is called whenever the Application Framework needs to check
+ * access permission for an attribute read.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param attributeId Ver.: always
+ */
+bool emberAfAttributeReadAccessCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, uint16_t manufacturerCode,
+ chip::AttributeId attributeId);
+
+/** @brief Attribute Write Access
+ *
+ * This function is called whenever the Application Framework needs to check
+ * access permission for an attribute write.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param attributeId Ver.: always
+ */
+bool emberAfAttributeWriteAccessCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, uint16_t manufacturerCode,
+ chip::AttributeId attributeId);
+
+/** @brief Default Response
+ *
+ * This function is called by the application framework when a Default Response
+ * command is received from an external device. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param commandId The command identifier to which this is a response. Ver.:
+ * always
+ * @param status Specifies either SUCCESS or the nature of the error that was
+ * detected in the received command. Ver.: always
+ */
+bool emberAfDefaultResponseCallback(chip::ClusterId clusterId, chip::CommandId commandId, EmberAfStatus status);
+
+/** @brief Configure Reporting Response
+ *
+ * This function is called by the application framework when a Configure
+ * Reporting Response command is received from an external device. The
+ * application should return true if the message was processed or false if it
+ * was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of attribute status records. Ver.:
+ * always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfConfigureReportingResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief Read Reporting Configuration Response
+ *
+ * This function is called by the application framework when a Read Reporting
+ * Configuration Response command is received from an external device. The
+ * application should return true if the message was processed or false if it
+ * was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of attribute reporting configuration
+ * records. Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief Discover Attributes Response
+ *
+ * This function is called by the application framework when a Discover
+ * Attributes Response or Discover Attributes Extended Response command is
+ * received from an external device. The Discover Attributes Response command
+ * contains a bool indicating if discovery is complete and a list of zero or
+ * more attribute identifier/type records. The final argument indicates whether
+ * the response is in the extended format or not. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param discoveryComplete Indicates whether there are more attributes to be
+ * discovered. true if there are no more attributes to be discovered. Ver.:
+ * always
+ * @param buffer Buffer containing the list of attribute identifier/type
+ * records. Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ * @param extended Indicates whether the response is in the extended format or
+ * not. Ver.: always
+ */
+bool emberAfDiscoverAttributesResponseCallback(chip::ClusterId clusterId, bool discoveryComplete, uint8_t * buffer, uint16_t bufLen,
+ bool extended);
+
+/** @brief Discover Commands Generated Response
+ *
+ * This function is called by the framework when Discover Commands Generated
+ * Response is received.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param manufacturerCode Manufacturer code Ver.: always
+ * @param discoveryComplete Indicates whether there are more commands to be
+ * discovered. Ver.: always
+ * @param commandIds Buffer containing the list of command identifiers. Ver.:
+ * always
+ * @param commandIdCount The length of bytes of the list, whish is the same as
+ * the number of identifiers. Ver.: always
+ */
+bool emberAfDiscoverCommandsGeneratedResponseCallback(chip::ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ chip::CommandId * commandIds, uint16_t commandIdCount);
+
+/** @brief Discover Commands Received Response
+ *
+ * This function is called by the framework when Discover Commands Received
+ * Response is received.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param manufacturerCode Manufacturer code Ver.: always
+ * @param discoveryComplete Indicates whether there are more commands to be
+ * discovered. Ver.: always
+ * @param commandIds Buffer containing the list of command identifiers. Ver.:
+ * always
+ * @param commandIdCount The length of bytes of the list, whish is the same as
+ * the number of identifiers. Ver.: always
+ */
+bool emberAfDiscoverCommandsReceivedResponseCallback(chip::ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ chip::CommandId * commandIds, uint16_t commandIdCount);
+
+/** @brief Pre Command Received
+ *
+ * This callback is the second in the Application Framework's message processing
+ * chain. At this point in the processing of incoming over-the-air messages, the
+ * application has determined that the incoming message is a ZCL command. It
+ * parses enough of the message to populate an EmberAfClusterCommand struct. The
+ * Application Framework defines this struct value in a local scope to the
+ * command processing but also makes it available through a global pointer
+ * called emberAfCurrentCommand, in app/framework/util/util.c. When command
+ * processing is complete, this pointer is cleared.
+ *
+ * @param cmd Ver.: always
+ */
+bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand * cmd);
+
+/** @brief Pre Message Send
+ *
+ * This function is called by the framework when it is about to pass a message
+ * to the stack primitives for sending. This message may or may not be ZCL,
+ * ZDO, or some other protocol. This is called prior to
+ any ZigBee
+ * fragmentation that may be done. If the function returns true it is assumed
+ * the callback has consumed and processed the message. The callback must also
+ * set the EmberStatus status code to be passed back to the caller. The
+ * framework will do no further processing on the message.
+ If the
+ * function returns false then it is assumed that the callback has not processed
+ * the mesasge and the framework will continue to process accordingly.
+ *
+ * @param messageStruct The structure containing the parameters of the APS
+ * message to be sent. Ver.: always
+ * @param status A pointer to the status code value that will be returned to the
+ * caller. Ver.: always
+ */
+bool emberAfPreMessageSendCallback(EmberAfMessageStruct * messageStruct, EmberStatus * status);
+
+/** @brief Message Sent
+ *
+ * This function is called by the application framework from the message sent
+ * handler, when it is informed by the stack regarding the message sent status.
+ * All of the values passed to the emberMessageSentHandler are passed on to this
+ * callback. This provides an opportunity for the application to verify that its
+ * message has been sent successfully and take the appropriate action. This
+ * callback should return a bool value of true or false. A value of true
+ * indicates that the message sent notification has been handled and should not
+ * be handled by the application framework.
+ *
+ * @param type Ver.: always
+ * @param indexOrDestination Ver.: always
+ * @param apsFrame Ver.: always
+ * @param msgLen Ver.: always
+ * @param message Ver.: always
+ * @param status Ver.: always
+ */
+bool emberAfMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, EmberApsFrame * apsFrame,
+ uint16_t msgLen, uint8_t * message, EmberStatus status);
+
+/** @brief Pre Attribute Change
+ *
+ * This function is called by the application framework before it changes an
+ * attribute value. The value passed into this callback is the value to which
+ * the attribute is to be set by the framework. The application should return
+ * ::EMBER_ZCL_STATUS_SUCCESS to permit the change or any other ::EmberAfStatus
+ * to reject it.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param type Ver.: always
+ * @param size Ver.: always
+ * @param value Ver.: always
+ */
+EmberAfStatus emberAfPreAttributeChangeCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, chip::AttributeId attributeId,
+ uint8_t mask, uint16_t manufacturerCode, uint8_t type, uint8_t size,
+ uint8_t * value);
+
+/** @brief Post Attribute Change
+ *
+ * This function is called by the application framework after it changes an
+ * attribute value. The value passed into this callback is the value to which
+ * the attribute was set by the framework.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param type Ver.: always
+ * @param size Ver.: always
+ * @param value Ver.: always
+ */
+void emberAfPostAttributeChangeCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, chip::AttributeId attributeId,
+ uint8_t mask, uint16_t manufacturerCode, uint8_t type, uint8_t size, uint8_t * value);
+
+/** @brief Read Attributes Response
+ *
+ * This function is called by the application framework when a Read Attributes
+ * Response command is received from an external device. The application should
+ * return true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of read attribute status records.
+ * Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfReadAttributesResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief External Attribute Read
+ *
+ * Like emberAfExternalAttributeWriteCallback above, this function is called
+ * when the framework needs to read an attribute that is not stored within the
+ * Application Framework's data structures.
+ All of the important
+ * information about the attribute itself is passed as a pointer to an
+ * EmberAfAttributeMetadata struct, which is stored within the application and
+ * used to manage the attribute. A complete description of the
+ * EmberAfAttributeMetadata struct is provided in
+ * app/framework/include/af-types.h
+ This function assumes that the
+ * application is able to read the attribute, write it into the passed buffer,
+ * and return immediately. Any attributes that require a state machine for
+ * reading and writing are not really candidates for externalization at the
+ * present time. The Application Framework does not currently include a state
+ * machine for reading or writing attributes that must take place across a
+ * series of application ticks. Attributes that cannot be read in a timely
+ * manner should be stored within the Application Framework and updated
+ * occasionally by the application code from within the
+ * emberAfMainTickCallback.
+ If the application was successfully able to
+ * read the attribute and write it into the passed buffer, it should return a
+ * value of EMBER_ZCL_STATUS_SUCCESS. Ensure that the size of the externally
+ * managed attribute value is smaller than what the buffer can hold. In the case
+ * of a buffer overflow throw an appropriate error such as
+ * EMBER_ZCL_STATUS_INSUFFICIENT_SPACE. Any other return value indicates the
+ * application was not able to read the attribute.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeMetadata Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param buffer Ver.: always
+ * @param maxReadLength Ver.: always
+ */
+EmberAfStatus emberAfExternalAttributeReadCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
+ EmberAfAttributeMetadata * attributeMetadata, uint16_t manufacturerCode,
+ uint8_t * buffer, uint16_t maxReadLength);
+
+/** @brief Write Attributes Response
+ *
+ * This function is called by the application framework when a Write Attributes
+ * Response command is received from an external device. The application should
+ * return true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of write attribute status records.
+ * Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfWriteAttributesResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief External Attribute Write
+ *
+ * This function is called whenever the Application Framework needs to write an
+ * attribute which is not stored within the data structures of the Application
+ * Framework itself. One of the new features in Version 2 is the ability to
+ * store attributes outside the Framework. This is particularly useful for
+ * attributes that do not need to be stored because they can be read off the
+ * hardware when they are needed, or are stored in some central location used by
+ * many modules within the system. In this case, you can indicate that the
+ * attribute is stored externally. When the framework needs to write an external
+ * attribute, it makes a call to this callback.
+ This callback is very
+ * useful for host micros which need to store attributes in persistent memory.
+ * Because each host micro (used with an Ember NCP) has its own type of
+ * persistent memory storage, the Application Framework does not include the
+ * ability to mark attributes as stored in flash the way that it does for Ember
+ * SoCs like the EM35x. On a host micro, any attributes that need to be stored
+ * in persistent memory should be marked as external and accessed through the
+ * external read and write callbacks. Any host code associated with the
+ * persistent storage should be implemented within this callback.
+ All of
+ * the important information about the attribute itself is passed as a pointer
+ * to an EmberAfAttributeMetadata struct, which is stored within the application
+ * and used to manage the attribute. A complete description of the
+ * EmberAfAttributeMetadata struct is provided in
+ * app/framework/include/af-types.h.
+ This function assumes that the
+ * application is able to write the attribute and return immediately. Any
+ * attributes that require a state machine for reading and writing are not
+ * candidates for externalization at the present time. The Application Framework
+ * does not currently include a state machine for reading or writing attributes
+ * that must take place across a series of application ticks. Attributes that
+ * cannot be written immediately should be stored within the Application
+ * Framework and updated occasionally by the application code from within the
+ * emberAfMainTickCallback.
+ If the application was successfully able to
+ * write the attribute, it returns a value of EMBER_ZCL_STATUS_SUCCESS. Any
+ * other return value indicates the application was not able to write the
+ * attribute.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeMetadata Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param buffer Ver.: always
+ */
+EmberAfStatus emberAfExternalAttributeWriteCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
+ EmberAfAttributeMetadata * attributeMetadata, uint16_t manufacturerCode,
+ uint8_t * buffer);
+
+/** @brief Report Attributes
+ *
+ * This function is called by the application framework when a Report Attributes
+ * command is received from an external device. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this command. Ver.: always
+ * @param buffer Buffer containing the list of attribute report records. Ver.:
+ * always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfReportAttributesCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief Get Current Time
+ *
+ * This callback is called when device attempts to get current time from the
+ * hardware. If this device has means to retrieve exact time, then this method
+ * should implement it. If the callback can't provide the exact time it should
+ * return 0 to indicate failure. Default action is to return 0, which indicates
+ * that device does not have access to real time.
+ *
+ */
+uint32_t emberAfGetCurrentTimeCallback();
+
+/** @brief Get Endpoint Info
+ *
+ * This function is a callback to an application implemented endpoint that
+ * operates outside the normal application framework. When the framework wishes
+ * to perform operations with that endpoint it uses this callback to retrieve
+ * the endpoint's information. If the endpoint exists and the application can
+ * provide data then true shall be returned. Otherwise the callback must return
+ * false.
+ *
+ * @param endpoint The endpoint to retrieve data for. Ver.: always
+ * @param returnNetworkIndex The index corresponding to the ZigBee network the
+ * endpoint belongs to. If not using a multi-network device, 0 must be
+ * returned. Otherwise on a multi-network device the stack will switch to this
+ * network before sending the message. Ver.: always
+ * @param returnEndpointInfo A pointer to a data struct that will be written
+ * with information about the endpoint. Ver.: always
+ */
+bool emberAfGetEndpointInfoCallback(chip::EndpointId endpoint, uint8_t * returnNetworkIndex,
+ EmberAfEndpointInfoStruct * returnEndpointInfo);
+
+/** @brief Get Source Route Overhead
+ *
+ * This function is called by the framework to determine the overhead required
+ * in the network frame for source routing to a particular destination.
+ *
+ * @param destination The node id of the destination Ver.: always
+ */
+uint8_t emberAfGetSourceRouteOverheadCallback(chip::NodeId destination);
+
+/** @brief Registration Abort
+ *
+ * This callback is called when the device should abort the registration
+ * process.
+ *
+ */
+void emberAfRegistrationAbortCallback();
+
+/** @brief Interpan Send Message
+ *
+ * This function will send a raw MAC message with interpan frame format using
+ * the passed parameters.
+ *
+ * @param header Interpan header info Ver.: always
+ * @param messageLength The length of the message received or to send Ver.:
+ * always
+ * @param message The message data received or to send. Ver.: always
+ */
+EmberStatus emberAfInterpanSendMessageCallback(EmberAfInterpanHeader * header, uint16_t messageLength, uint8_t * message);
+
+/** @brief Start Move
+ *
+ * This function is called to initiate the process for a device to move (rejoin)
+ * to a new parent.
+ *
+ */
+bool emberAfStartMoveCallback();
diff --git a/examples/chip-tool/gen/client-command-macro.h b/examples/chip-tool/gen/client-command-macro.h
new file mode 100644
index 0000000..0cdc542
--- /dev/null
+++ b/examples/chip-tool/gen/client-command-macro.h
@@ -0,0 +1,6192 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+/** @brief Command description for ReadAttributes
+ *
+ * Command: ReadAttributes
+ * @param attributeIds ATTRIBUTE_ID []
+ * @param attributeIdsLen int
+ */
+#define emberAfFillCommandGlobalReadAttributes(clusterId, attributeIds, attributeIdsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_ATTRIBUTES_COMMAND_ID, "b", attributeIds, attributeIdsLen);
+
+/** @brief Command description for ReadAttributesResponse
+ *
+ * Command: ReadAttributesResponse
+ * @param readAttributeStatusRecords ReadAttributeStatusRecord []
+ * @param readAttributeStatusRecordsLen int
+ */
+#define emberAfFillCommandGlobalReadAttributesResponse(clusterId, readAttributeStatusRecords, readAttributeStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_ATTRIBUTES_RESPONSE_COMMAND_ID, "b", readAttributeStatusRecords, \
+ readAttributeStatusRecordsLen);
+
+/** @brief Command description for WriteAttributes
+ *
+ * Command: WriteAttributes
+ * @param writeAttributeRecords WriteAttributeRecord []
+ * @param writeAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributes(clusterId, writeAttributeRecords, writeAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_COMMAND_ID, "b", writeAttributeRecords, \
+ writeAttributeRecordsLen);
+
+/** @brief Command description for WriteAttributesUndivided
+ *
+ * Command: WriteAttributesUndivided
+ * @param writeAttributeRecords WriteAttributeRecord []
+ * @param writeAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesUndivided(clusterId, writeAttributeRecords, writeAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_UNDIVIDED_COMMAND_ID, "b", writeAttributeRecords, \
+ writeAttributeRecordsLen);
+
+/** @brief Command description for WriteAttributesResponse
+ *
+ * Command: WriteAttributesResponse
+ * @param writeAttributeStatusRecords WriteAttributeStatusRecord []
+ * @param writeAttributeStatusRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesResponse(clusterId, writeAttributeStatusRecords, writeAttributeStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_RESPONSE_COMMAND_ID, "b", writeAttributeStatusRecords, \
+ writeAttributeStatusRecordsLen);
+
+/** @brief Command description for WriteAttributesNoResponse
+ *
+ * Command: WriteAttributesNoResponse
+ * @param writeAttributeRecords WriteAttributeRecord []
+ * @param writeAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesNoResponse(clusterId, writeAttributeRecords, writeAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_NO_RESPONSE_COMMAND_ID, "b", writeAttributeRecords, \
+ writeAttributeRecordsLen);
+
+/** @brief Command description for ConfigureReporting
+ *
+ * Command: ConfigureReporting
+ * @param configureReportingRecords ConfigureReportingRecord []
+ * @param configureReportingRecordsLen int
+ */
+#define emberAfFillCommandGlobalConfigureReporting(clusterId, configureReportingRecords, configureReportingRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_CONFIGURE_REPORTING_COMMAND_ID, "b", configureReportingRecords, \
+ configureReportingRecordsLen);
+
+/** @brief Command description for ConfigureReportingResponse
+ *
+ * Command: ConfigureReportingResponse
+ * @param configureReportingStatusRecords ConfigureReportingStatusRecord []
+ * @param configureReportingStatusRecordsLen int
+ */
+#define emberAfFillCommandGlobalConfigureReportingResponse(clusterId, configureReportingStatusRecords, \
+ configureReportingStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_CONFIGURE_REPORTING_RESPONSE_COMMAND_ID, "b", configureReportingStatusRecords, \
+ configureReportingStatusRecordsLen);
+
+/** @brief Command description for ReadReportingConfiguration
+ *
+ * Command: ReadReportingConfiguration
+ * @param readReportingConfigurationAttributeRecords ReadReportingConfigurationAttributeRecord []
+ * @param readReportingConfigurationAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalReadReportingConfiguration(clusterId, readReportingConfigurationAttributeRecords, \
+ readReportingConfigurationAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_REPORTING_CONFIGURATION_COMMAND_ID, "b", \
+ readReportingConfigurationAttributeRecords, readReportingConfigurationAttributeRecordsLen);
+
+/** @brief Command description for ReadReportingConfigurationResponse
+ *
+ * Command: ReadReportingConfigurationResponse
+ * @param readReportingConfigurationRecords ReadReportingConfigurationRecord []
+ * @param readReportingConfigurationRecordsLen int
+ */
+#define emberAfFillCommandGlobalReadReportingConfigurationResponse(clusterId, readReportingConfigurationRecords, \
+ readReportingConfigurationRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_REPORTING_CONFIGURATION_RESPONSE_COMMAND_ID, "b", \
+ readReportingConfigurationRecords, readReportingConfigurationRecordsLen);
+
+/** @brief Command description for ReportAttributes
+ *
+ * Command: ReportAttributes
+ * @param reportAttributeRecords ReportAttributeRecord []
+ * @param reportAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalReportAttributes(clusterId, reportAttributeRecords, reportAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_REPORT_ATTRIBUTES_COMMAND_ID, "b", reportAttributeRecords, \
+ reportAttributeRecordsLen);
+
+/** @brief Command description for DefaultResponse
+ *
+ * Command: DefaultResponse
+ * @param commandId INT8U
+ * @param status Status
+ */
+#define emberAfFillCommandGlobalDefaultResponse(clusterId, commandId, status) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DEFAULT_RESPONSE_COMMAND_ID, "uu", commandId, status);
+
+/** @brief Command description for DiscoverAttributes
+ *
+ * Command: DiscoverAttributes
+ * @param startId ATTRIBUTE_ID
+ * @param maxAttributeIds INT8U
+ */
+#define emberAfFillCommandGlobalDiscoverAttributes(clusterId, startId, maxAttributeIds) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID, "uu", startId, maxAttributeIds);
+
+/** @brief Command description for DiscoverAttributesResponse
+ *
+ * Command: DiscoverAttributesResponse
+ * @param discoveryComplete INT8U
+ * @param discoverAttributesInfoRecords DiscoverAttributesInfoRecord []
+ * @param discoverAttributesInfoRecordsLen int
+ */
+#define emberAfFillCommandGlobalDiscoverAttributesResponse(clusterId, discoveryComplete, discoverAttributesInfoRecords, \
+ discoverAttributesInfoRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_ATTRIBUTES_RESPONSE_COMMAND_ID, "ub", discoveryComplete, \
+ discoverAttributesInfoRecords, discoverAttributesInfoRecordsLen);
+
+/** @brief Command description for ReadAttributesStructured
+ *
+ * Command: ReadAttributesStructured
+ * @param readStructuredAttributeRecords ReadStructuredAttributeRecord []
+ * @param readStructuredAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalReadAttributesStructured(clusterId, readStructuredAttributeRecords, \
+ readStructuredAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_ATTRIBUTES_STRUCTURED_COMMAND_ID, "b", readStructuredAttributeRecords, \
+ readStructuredAttributeRecordsLen);
+
+/** @brief Command description for WriteAttributesStructured
+ *
+ * Command: WriteAttributesStructured
+ * @param writeStructuredAttributeRecords WriteStructuredAttributeRecord []
+ * @param writeStructuredAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesStructured(clusterId, writeStructuredAttributeRecords, \
+ writeStructuredAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_STRUCTURED_COMMAND_ID, "b", writeStructuredAttributeRecords, \
+ writeStructuredAttributeRecordsLen);
+
+/** @brief Command description for WriteAttributesStructuredResponse
+ *
+ * Command: WriteAttributesStructuredResponse
+ * @param writeStructuredAttributeStatusRecords WriteStructuredAttributeStatusRecord []
+ * @param writeStructuredAttributeStatusRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesStructuredResponse(clusterId, writeStructuredAttributeStatusRecords, \
+ writeStructuredAttributeStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_STRUCTURED_RESPONSE_COMMAND_ID, "b", \
+ writeStructuredAttributeStatusRecords, writeStructuredAttributeStatusRecordsLen);
+
+/** @brief Command description for DiscoverCommandsReceived
+ *
+ * Command: DiscoverCommandsReceived
+ * @param startCommandId INT8U
+ * @param maxCommandIds INT8U
+ */
+#define emberAfFillCommandGlobalDiscoverCommandsReceived(clusterId, startCommandId, maxCommandIds) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_COMMANDS_RECEIVED_COMMAND_ID, "uu", startCommandId, maxCommandIds);
+
+/** @brief Command description for DiscoverCommandsReceivedResponse
+ *
+ * Command: DiscoverCommandsReceivedResponse
+ * @param discoveryComplete INT8U
+ * @param commandIds INT8U []
+ * @param commandIdsLen int
+ */
+#define emberAfFillCommandGlobalDiscoverCommandsReceivedResponse(clusterId, discoveryComplete, commandIds, commandIdsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_COMMANDS_RECEIVED_RESPONSE_COMMAND_ID, "ub", discoveryComplete, \
+ commandIds, commandIdsLen);
+
+/** @brief Command description for DiscoverCommandsGenerated
+ *
+ * Command: DiscoverCommandsGenerated
+ * @param startCommandId INT8U
+ * @param maxCommandIds INT8U
+ */
+#define emberAfFillCommandGlobalDiscoverCommandsGenerated(clusterId, startCommandId, maxCommandIds) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_COMMANDS_GENERATED_COMMAND_ID, "uu", startCommandId, maxCommandIds);
+
+/** @brief Command description for DiscoverCommandsGeneratedResponse
+ *
+ * Command: DiscoverCommandsGeneratedResponse
+ * @param discoveryComplete INT8U
+ * @param commandIds INT8U []
+ * @param commandIdsLen int
+ */
+#define emberAfFillCommandGlobalDiscoverCommandsGeneratedResponse(clusterId, discoveryComplete, commandIds, commandIdsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_COMMANDS_GENERATED_RESPONSE_COMMAND_ID, "ub", discoveryComplete, \
+ commandIds, commandIdsLen);
+
+/** @brief Command description for DiscoverAttributesExtended
+ *
+ * Command: DiscoverAttributesExtended
+ * @param startId ATTRIBUTE_ID
+ * @param maxAttributeIds INT8U
+ */
+#define emberAfFillCommandGlobalDiscoverAttributesExtended(clusterId, startId, maxAttributeIds) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_ATTRIBUTES_EXTENDED_COMMAND_ID, "uu", startId, maxAttributeIds);
+
+/** @brief Command description for DiscoverAttributesExtendedResponse
+ *
+ * Command: DiscoverAttributesExtendedResponse
+ * @param discoveryComplete INT8U
+ * @param extendedDiscoverAttributesInfoRecords ExtendedDiscoverAttributesInfoRecord []
+ * @param extendedDiscoverAttributesInfoRecordsLen int
+ */
+#define emberAfFillCommandGlobalDiscoverAttributesExtendedResponse( \
+ clusterId, discoveryComplete, extendedDiscoverAttributesInfoRecords, extendedDiscoverAttributesInfoRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_ATTRIBUTES_EXTENDED_RESPONSE_COMMAND_ID, "ub", discoveryComplete, \
+ extendedDiscoverAttributesInfoRecords, extendedDiscoverAttributesInfoRecordsLen);
+
+/** @brief Command description for ResetToFactoryDefaults
+ *
+ * Command: ResetToFactoryDefaults
+ */
+#define emberAfFillCommandBasicClusterResetToFactoryDefaults() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_TO_FACTORY_DEFAULTS_COMMAND_ID, "", );
+
+/** @brief Command description for Identify
+ *
+ * Command: Identify
+ * @param identifyTime INT16U
+ * @param timeout INT16U
+ */
+#define emberAfFillCommandIdentifyClusterIdentify(identifyTime, timeout) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IDENTIFY_COMMAND_ID, "uu", identifyTime, timeout);
+
+/** @brief Command description for IdentifyQuery
+ *
+ * Command: IdentifyQuery
+ */
+#define emberAfFillCommandIdentifyClusterIdentifyQuery() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IDENTIFY_QUERY_COMMAND_ID, "", );
+
+/** @brief Command description for EZModeInvoke
+ *
+ * Command: EZModeInvoke
+ * @param action BITMAP8
+ */
+#define emberAfFillCommandIdentifyClusterEZModeInvoke(action) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EZ_MODE_INVOKE_COMMAND_ID, "u", action);
+
+/** @brief Command description for UpdateCommissionState
+ *
+ * Command: UpdateCommissionState
+ * @param action ENUM8
+ * @param commissionStateMask BITMAP8
+ */
+#define emberAfFillCommandIdentifyClusterUpdateCommissionState(action, commissionStateMask) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UPDATE_COMMISSION_STATE_COMMAND_ID, "uu", action, commissionStateMask);
+
+/** @brief Command description for TriggerEffect
+ *
+ * Command: TriggerEffect
+ * @param effectId IdentifyEffectIdentifier
+ * @param effectVariant IdentifyEffectVariant
+ */
+#define emberAfFillCommandIdentifyClusterTriggerEffect(effectId, effectVariant) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRIGGER_EFFECT_COMMAND_ID, "uu", effectId, effectVariant);
+
+/** @brief Command description for AddGroup
+ *
+ * Command: AddGroup
+ * @param groupId INT16U
+ * @param status Status
+ * @param groupName CHAR_STRING
+ * @param groupId INT16U
+ */
+#define emberAfFillCommandGroupsClusterAddGroup(groupId, status, groupName, groupId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ADD_GROUP_COMMAND_ID, "uuuu", groupId, status, groupName, groupId);
+
+/** @brief Command description for ViewGroup
+ *
+ * Command: ViewGroup
+ * @param groupId INT16U
+ * @param status Status
+ * @param groupId INT16U
+ * @param groupName CHAR_STRING
+ */
+#define emberAfFillCommandGroupsClusterViewGroup(groupId, status, groupId, groupName) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_VIEW_GROUP_COMMAND_ID, "uuuu", groupId, status, groupId, groupName);
+
+/** @brief Command description for GetGroupMembership
+ *
+ * Command: GetGroupMembership
+ * @param groupCount INT8U
+ * @param capacity INT8U
+ * @param groupList INT16U []
+ * @param groupListLen int
+ * @param groupCount INT8U
+ * @param groupList INT16U []
+ * @param groupListLen int
+ */
+#define emberAfFillCommandGroupsClusterGetGroupMembership(groupCount, capacity, groupList, groupListLen, groupCount, groupList, \
+ groupListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID, "uubub", groupCount, capacity, groupList, groupListLen, \
+ groupCount, groupList, groupListLen);
+
+/** @brief Command description for RemoveGroup
+ *
+ * Command: RemoveGroup
+ * @param groupId INT16U
+ * @param status Status
+ * @param groupId INT16U
+ */
+#define emberAfFillCommandGroupsClusterRemoveGroup(groupId, status, groupId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_GROUP_COMMAND_ID, "uuu", groupId, status, groupId);
+
+/** @brief Command description for RemoveAllGroups
+ *
+ * Command: RemoveAllGroups
+ */
+#define emberAfFillCommandGroupsClusterRemoveAllGroups() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_ALL_GROUPS_COMMAND_ID, "", );
+
+/** @brief Command description for AddGroupIfIdentifying
+ *
+ * Command: AddGroupIfIdentifying
+ * @param groupId INT16U
+ * @param groupName CHAR_STRING
+ */
+#define emberAfFillCommandGroupsClusterAddGroupIfIdentifying(groupId, groupName) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID, "uu", groupId, groupName);
+
+/** @brief Command description for AddScene
+ *
+ * Command: AddScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param transitionTime INT16U
+ * @param sceneId INT8U
+ * @param sceneName CHAR_STRING
+ * @param extensionFieldSets SceneExtensionFieldSet []
+ * @param extensionFieldSetsLen int
+ */
+#define emberAfFillCommandScenesClusterAddScene(groupId, status, sceneId, groupId, transitionTime, sceneId, sceneName, \
+ extensionFieldSets, extensionFieldSetsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ADD_SCENE_COMMAND_ID, "uuuuuuub", groupId, status, sceneId, groupId, transitionTime, sceneId, \
+ sceneName, extensionFieldSets, extensionFieldSetsLen);
+
+/** @brief Command description for ViewScene
+ *
+ * Command: ViewScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ * @param transitionTime INT16U
+ * @param sceneName CHAR_STRING
+ * @param extensionFieldSets SceneExtensionFieldSet []
+ * @param extensionFieldSetsLen int
+ */
+#define emberAfFillCommandScenesClusterViewScene(groupId, status, sceneId, groupId, sceneId, transitionTime, sceneName, \
+ extensionFieldSets, extensionFieldSetsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_VIEW_SCENE_COMMAND_ID, "uuuuuuub", groupId, status, sceneId, groupId, sceneId, transitionTime, \
+ sceneName, extensionFieldSets, extensionFieldSetsLen);
+
+/** @brief Command description for RemoveScene
+ *
+ * Command: RemoveScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ */
+#define emberAfFillCommandScenesClusterRemoveScene(groupId, status, sceneId, groupId, sceneId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_SCENE_COMMAND_ID, "uuuuu", groupId, status, sceneId, groupId, sceneId);
+
+/** @brief Command description for RemoveAllScenes
+ *
+ * Command: RemoveAllScenes
+ * @param groupId INT16U
+ * @param status Status
+ * @param groupId INT16U
+ */
+#define emberAfFillCommandScenesClusterRemoveAllScenes(groupId, status, groupId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_ALL_SCENES_COMMAND_ID, "uuu", groupId, status, groupId);
+
+/** @brief Command description for StoreScene
+ *
+ * Command: StoreScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ */
+#define emberAfFillCommandScenesClusterStoreScene(groupId, status, sceneId, groupId, sceneId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STORE_SCENE_COMMAND_ID, "uuuuu", groupId, status, sceneId, groupId, sceneId);
+
+/** @brief Command description for RecallScene
+ *
+ * Command: RecallScene
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandScenesClusterRecallScene(groupId, sceneId, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RECALL_SCENE_COMMAND_ID, "uuu", groupId, sceneId, transitionTime);
+
+/** @brief Command description for GetSceneMembership
+ *
+ * Command: GetSceneMembership
+ * @param groupId INT16U
+ * @param status Status
+ * @param capacity INT8U
+ * @param groupId INT16U
+ * @param sceneCount INT8U
+ * @param sceneList INT8U []
+ * @param sceneListLen int
+ */
+#define emberAfFillCommandScenesClusterGetSceneMembership(groupId, status, capacity, groupId, sceneCount, sceneList, sceneListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID, "uuuuub", groupId, status, capacity, groupId, sceneCount, \
+ sceneList, sceneListLen);
+
+/** @brief Command description for EnhancedAddScene
+ *
+ * Command: EnhancedAddScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param transitionTime INT16U
+ * @param sceneId INT8U
+ * @param sceneName CHAR_STRING
+ * @param extensionFieldSets SceneExtensionFieldSet []
+ * @param extensionFieldSetsLen int
+ */
+#define emberAfFillCommandScenesClusterEnhancedAddScene(groupId, status, sceneId, groupId, transitionTime, sceneId, sceneName, \
+ extensionFieldSets, extensionFieldSetsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_ADD_SCENE_COMMAND_ID, "uuuuuuub", groupId, status, sceneId, groupId, transitionTime, \
+ sceneId, sceneName, extensionFieldSets, extensionFieldSetsLen);
+
+/** @brief Command description for EnhancedViewScene
+ *
+ * Command: EnhancedViewScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ * @param transitionTime INT16U
+ * @param sceneName CHAR_STRING
+ * @param extensionFieldSets SceneExtensionFieldSet []
+ * @param extensionFieldSetsLen int
+ */
+#define emberAfFillCommandScenesClusterEnhancedViewScene(groupId, status, sceneId, groupId, sceneId, transitionTime, sceneName, \
+ extensionFieldSets, extensionFieldSetsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_VIEW_SCENE_COMMAND_ID, "uuuuuuub", groupId, status, sceneId, groupId, sceneId, \
+ transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen);
+
+/** @brief Command description for CopyScene
+ *
+ * Command: CopyScene
+ * @param mode ScenesCopyMode
+ * @param status Status
+ * @param groupIdFrom INT16U
+ * @param groupIdFrom INT16U
+ * @param sceneIdFrom INT8U
+ * @param sceneIdFrom INT8U
+ * @param groupIdTo INT16U
+ * @param sceneIdTo INT8U
+ */
+#define emberAfFillCommandScenesClusterCopyScene(mode, status, groupIdFrom, groupIdFrom, sceneIdFrom, sceneIdFrom, groupIdTo, \
+ sceneIdTo) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_COPY_SCENE_COMMAND_ID, "uuuuuuuu", mode, status, groupIdFrom, groupIdFrom, sceneIdFrom, \
+ sceneIdFrom, groupIdTo, sceneIdTo);
+
+/** @brief Command description for Off
+ *
+ * Command: Off
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOff() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OFF_COMMAND_ID, "", );
+
+/** @brief Command description for On
+ *
+ * Command: On
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOn() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ON_COMMAND_ID, "", );
+
+/** @brief Command description for Toggle
+ *
+ * Command: Toggle
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterToggle() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TOGGLE_COMMAND_ID, "", );
+
+/** @brief Command description for OffWithEffect
+ *
+ * Command: OffWithEffect
+ * @param effectId OnOffEffectIdentifier
+ * @param effectVariant ENUM8
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOffWithEffect(effectId, effectVariant) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OFF_WITH_EFFECT_COMMAND_ID, "uu", effectId, effectVariant);
+
+/** @brief Command description for OnWithRecallGlobalScene
+ *
+ * Command: OnWithRecallGlobalScene
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOnWithRecallGlobalScene() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ON_WITH_RECALL_GLOBAL_SCENE_COMMAND_ID, "", );
+
+/** @brief Command description for OnWithTimedOff
+ *
+ * Command: OnWithTimedOff
+ * @param onOffControl OnOffControl
+ * @param onTime INT16U
+ * @param offWaitTime INT16U
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOnWithTimedOff(onOffControl, onTime, offWaitTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ON_WITH_TIMED_OFF_COMMAND_ID, "uuu", onOffControl, onTime, offWaitTime);
+
+/** @brief Command description for MoveToLevel
+ *
+ * Command: MoveToLevel
+ * @param level INT8U
+ * @param transitionTime INT16U
+ * @param optionMask BITMAP8
+ * @param optionOverride BITMAP8
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterMoveToLevel(level, transitionTime, optionMask, optionOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_TO_LEVEL_COMMAND_ID, "uuuu", level, transitionTime, optionMask, optionOverride);
+
+/** @brief Command description for Move
+ *
+ * Command: Move
+ * @param moveMode MoveMode
+ * @param rate INT8U
+ * @param optionMask BITMAP8
+ * @param optionOverride BITMAP8
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterMove(moveMode, rate, optionMask, optionOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_COMMAND_ID, "uuuu", moveMode, rate, optionMask, optionOverride);
+
+/** @brief Command description for Step
+ *
+ * Command: Step
+ * @param stepMode StepMode
+ * @param stepSize INT8U
+ * @param transitionTime INT16U
+ * @param optionMask BITMAP8
+ * @param optionOverride BITMAP8
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterStep(stepMode, stepSize, transitionTime, optionMask, optionOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STEP_COMMAND_ID, "uuuuu", stepMode, stepSize, transitionTime, optionMask, optionOverride);
+
+/** @brief Command description for Stop
+ *
+ * Command: Stop
+ * @param optionMask BITMAP8
+ * @param optionOverride BITMAP8
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterStop(optionMask, optionOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STOP_COMMAND_ID, "uu", optionMask, optionOverride);
+
+/** @brief Command description for MoveToLevelWithOnOff
+ *
+ * Command: MoveToLevelWithOnOff
+ * @param level INT8U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterMoveToLevelWithOnOff(level, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID, "uu", level, transitionTime);
+
+/** @brief Command description for MoveWithOnOff
+ *
+ * Command: MoveWithOnOff
+ * @param moveMode MoveMode
+ * @param rate INT8U
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterMoveWithOnOff(moveMode, rate) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_WITH_ON_OFF_COMMAND_ID, "uu", moveMode, rate);
+
+/** @brief Command description for StepWithOnOff
+ *
+ * Command: StepWithOnOff
+ * @param stepMode StepMode
+ * @param stepSize INT8U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterStepWithOnOff(stepMode, stepSize, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STEP_WITH_ON_OFF_COMMAND_ID, "uuu", stepMode, stepSize, transitionTime);
+
+/** @brief Command description for StopWithOnOff
+ *
+ * Command: StopWithOnOff
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterStopWithOnOff() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STOP_WITH_ON_OFF_COMMAND_ID, "", );
+
+/** @brief Command description for ResetAlarm
+ *
+ * Command: ResetAlarm
+ * @param alarmCode ENUM8
+ * @param alarmCode ENUM8
+ * @param clusterId CLUSTER_ID
+ * @param clusterId CLUSTER_ID
+ */
+#define emberAfFillCommandAlarmsClusterResetAlarm(alarmCode, alarmCode, clusterId, clusterId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_ALARM_COMMAND_ID, "uuuu", alarmCode, alarmCode, clusterId, clusterId);
+
+/** @brief Command description for ResetAllAlarms
+ *
+ * Command: ResetAllAlarms
+ * @param status Status
+ * @param alarmCode ENUM8
+ * @param clusterId CLUSTER_ID
+ * @param timeStamp INT32U
+ */
+#define emberAfFillCommandAlarmsClusterResetAllAlarms(status, alarmCode, clusterId, timeStamp) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_ALL_ALARMS_COMMAND_ID, "uuuu", status, alarmCode, clusterId, timeStamp);
+
+/** @brief Command description for GetAlarm
+ *
+ * Command: GetAlarm
+ */
+#define emberAfFillCommandAlarmsClusterGetAlarm() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_ALARM_COMMAND_ID, "", );
+
+/** @brief Command description for ResetAlarmLog
+ *
+ * Command: ResetAlarmLog
+ */
+#define emberAfFillCommandAlarmsClusterResetAlarmLog() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_ALARM_LOG_COMMAND_ID, "", );
+
+/** @brief Command description for SetAbsoluteLocation
+ *
+ * Command: SetAbsoluteLocation
+ * @param coordinate1 INT16S
+ * @param status Status
+ * @param coordinate2 INT16S
+ * @param power INT16S
+ * @param coordinate3 INT16S
+ * @param pathLossExponent INT16U
+ * @param power INT16S
+ * @param calculationPeriod INT16U
+ * @param pathLossExponent INT16U
+ * @param numberRssiMeasurements INT8U
+ * @param reportingPeriod INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterSetAbsoluteLocation(coordinate1, status, coordinate2, power, coordinate3, pathLossExponent, power, \
+ calculationPeriod, pathLossExponent, numberRssiMeasurements, reportingPeriod) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_ABSOLUTE_LOCATION_COMMAND_ID, "uuuuuuuuuuu", coordinate1, status, coordinate2, power, \
+ coordinate3, pathLossExponent, power, calculationPeriod, pathLossExponent, \
+ numberRssiMeasurements, reportingPeriod);
+
+/** @brief Command description for SetDeviceConfiguration
+ *
+ * Command: SetDeviceConfiguration
+ * @param power INT16S
+ * @param status Status
+ * @param pathLossExponent INT16U
+ * @param locationType LocationType
+ * @param calculationPeriod INT16U
+ * @param coordinate1 INT16S
+ * @param numberRssiMeasurements INT8U
+ * @param coordinate2 INT16S
+ * @param reportingPeriod INT16U
+ * @param coordinate3 INT16S
+ * @param power INT16S
+ * @param pathLossExponent INT16U
+ * @param locationMethod LocationMethod
+ * @param qualityMeasure INT8U
+ * @param locationAge INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterSetDeviceConfiguration(power, status, pathLossExponent, locationType, calculationPeriod, coordinate1, \
+ numberRssiMeasurements, coordinate2, reportingPeriod, coordinate3, power, \
+ pathLossExponent, locationMethod, qualityMeasure, locationAge) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_DEVICE_CONFIGURATION_COMMAND_ID, "uuuuuuuuuuuuuuu", power, status, pathLossExponent, \
+ locationType, calculationPeriod, coordinate1, numberRssiMeasurements, coordinate2, \
+ reportingPeriod, coordinate3, power, pathLossExponent, locationMethod, qualityMeasure, \
+ locationAge);
+
+/** @brief Command description for GetDeviceConfiguration
+ *
+ * Command: GetDeviceConfiguration
+ * @param targetAddress IEEE_ADDRESS
+ * @param locationType LocationType
+ * @param coordinate1 INT16S
+ * @param coordinate2 INT16S
+ * @param coordinate3 INT16S
+ * @param power INT16S
+ * @param pathLossExponent INT16U
+ * @param locationMethod LocationMethod
+ * @param qualityMeasure INT8U
+ * @param locationAge INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterGetDeviceConfiguration(targetAddress, locationType, coordinate1, coordinate2, coordinate3, power, \
+ pathLossExponent, locationMethod, qualityMeasure, locationAge) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_DEVICE_CONFIGURATION_COMMAND_ID, "uuuuuuuuuu", targetAddress, locationType, coordinate1, \
+ coordinate2, coordinate3, power, pathLossExponent, locationMethod, qualityMeasure, locationAge);
+
+/** @brief Command description for GetLocationData
+ *
+ * Command: GetLocationData
+ * @param flags GetLocationDataFlags
+ * @param locationType LocationType
+ * @param numberResponses INT8U
+ * @param coordinate1 INT16S
+ * @param targetAddress IEEE_ADDRESS
+ * @param coordinate2 INT16S
+ * @param coordinate3 INT16S
+ * @param qualityMeasure INT8U
+ * @param locationAge INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterGetLocationData(flags, locationType, numberResponses, coordinate1, targetAddress, coordinate2, coordinate3, \
+ qualityMeasure, locationAge) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_LOCATION_DATA_COMMAND_ID, "uuuuuuuuu", flags, locationType, numberResponses, \
+ coordinate1, targetAddress, coordinate2, coordinate3, qualityMeasure, locationAge);
+
+/** @brief Command description for RssiResponse
+ *
+ * Command: RssiResponse
+ * @param replyingDevice IEEE_ADDRESS
+ * @param locationType LocationType
+ * @param coordinate1 INT16S
+ * @param coordinate2 INT16S
+ * @param coordinate3 INT16S
+ * @param rssi INT8S
+ * @param numberRssiMeasurements INT8U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterRssiResponse(replyingDevice, locationType, coordinate1, coordinate2, coordinate3, rssi, numberRssiMeasurements) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RSSI_RESPONSE_COMMAND_ID, "uuuuuuu", replyingDevice, locationType, coordinate1, coordinate2, \
+ coordinate3, rssi, numberRssiMeasurements);
+
+/** @brief Command description for RssiRequest
+ *
+ * Command: RssiRequest
+ * @param targetAddress IEEE_ADDRESS
+ * @param numberRssiMeasurements INT8U
+ * @param calculationPeriod INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterRssiRequest(targetAddress, numberRssiMeasurements, calculationPeriod) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RSSI_REQUEST_COMMAND_ID, "uuu", targetAddress, numberRssiMeasurements, calculationPeriod);
+
+/** @brief Command description for AnchorNodeAnnounce
+ *
+ * Command: AnchorNodeAnnounce
+ * @param anchorNodeIeeeAddress IEEE_ADDRESS
+ * @param measuringDevice IEEE_ADDRESS
+ * @param coordinate1 INT16S
+ * @param neighbors INT8U
+ * @param coordinate2 INT16S
+ * @param neighborsInfo NeighborInfo []
+ * @param neighborsInfoLen int
+ * @param coordinate3 INT16S
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterAnchorNodeAnnounce(anchorNodeIeeeAddress, measuringDevice, coordinate1, neighbors, coordinate2, neighborsInfo, \
+ neighborsInfoLen, coordinate3) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ANCHOR_NODE_ANNOUNCE_COMMAND_ID, "uuuuubu", anchorNodeIeeeAddress, measuringDevice, \
+ coordinate1, neighbors, coordinate2, neighborsInfo, neighborsInfoLen, coordinate3);
+
+/** @brief Command description for RequestOwnLocation
+ *
+ * Command: RequestOwnLocation
+ * @param blindNode IEEE_ADDRESS
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterRequestOwnLocation(blindNode) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_OWN_LOCATION_COMMAND_ID, "u", blindNode);
+
+/** @brief Command description for RestartDevice
+ *
+ * Command: RestartDevice
+ * @param options RestartOptions
+ * @param status ENUM8
+ * @param delay INT8U
+ * @param jitter INT8U
+ */
+#define emberAfFillCommandCommissioningClusterRestartDevice(options, status, delay, jitter) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESTART_DEVICE_COMMAND_ID, "uuuu", options, status, delay, jitter);
+
+/** @brief Command description for SaveStartupParameters
+ *
+ * Command: SaveStartupParameters
+ * @param options BITMAP8
+ * @param status ENUM8
+ * @param index INT8U
+ */
+#define emberAfFillCommandCommissioningClusterSaveStartupParameters(options, status, index) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SAVE_STARTUP_PARAMETERS_COMMAND_ID, "uuu", options, status, index);
+
+/** @brief Command description for RestoreStartupParameters
+ *
+ * Command: RestoreStartupParameters
+ * @param options BITMAP8
+ * @param status ENUM8
+ * @param index INT8U
+ */
+#define emberAfFillCommandCommissioningClusterRestoreStartupParameters(options, status, index) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESTORE_STARTUP_PARAMETERS_COMMAND_ID, "uuu", options, status, index);
+
+/** @brief Command description for ResetStartupParameters
+ *
+ * Command: ResetStartupParameters
+ * @param options ResetOptions
+ * @param status ENUM8
+ * @param index INT8U
+ */
+#define emberAfFillCommandCommissioningClusterResetStartupParameters(options, status, index) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_STARTUP_PARAMETERS_COMMAND_ID, "uuu", options, status, index);
+
+/** @brief Command description for TransferPartitionedFrame
+ *
+ * Command: TransferPartitionedFrame
+ * @param fragmentationOptions BITMAP8
+ * @param ackOptions BITMAP8
+ * @param partitionedIndicatorAndFrame INT8U []
+ * @param partitionedIndicatorAndFrameLen int
+ * @param firstFrameIdAndNackList INT8U []
+ * @param firstFrameIdAndNackListLen int
+ */
+#define emberAfFillCommandPartitionClusterTransferPartitionedFrame(fragmentationOptions, ackOptions, partitionedIndicatorAndFrame, \
+ partitionedIndicatorAndFrameLen, firstFrameIdAndNackList, \
+ firstFrameIdAndNackListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_PARTITIONED_FRAME_COMMAND_ID, "uubb", fragmentationOptions, ackOptions, \
+ partitionedIndicatorAndFrame, partitionedIndicatorAndFrameLen, firstFrameIdAndNackList, \
+ firstFrameIdAndNackListLen);
+
+/** @brief Command description for ReadHandshakeParam
+ *
+ * Command: ReadHandshakeParam
+ * @param partitionedClusterId CLUSTER_ID
+ * @param partitionedClusterId CLUSTER_ID
+ * @param attributeList ATTRIBUTE_ID []
+ * @param attributeListLen int
+ * @param readAttributeStatusRecords ReadAttributeStatusRecord []
+ * @param readAttributeStatusRecordsLen int
+ */
+#define emberAfFillCommandPartitionClusterReadHandshakeParam(partitionedClusterId, partitionedClusterId, attributeList, \
+ attributeListLen, readAttributeStatusRecords, \
+ readAttributeStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READ_HANDSHAKE_PARAM_COMMAND_ID, "uubb", partitionedClusterId, partitionedClusterId, \
+ attributeList, attributeListLen, readAttributeStatusRecords, readAttributeStatusRecordsLen);
+
+/** @brief Command description for WriteHandshakeParam
+ *
+ * Command: WriteHandshakeParam
+ * @param partitionedClusterId CLUSTER_ID
+ * @param writeAttributeRecords WriteAttributeRecord []
+ * @param writeAttributeRecordsLen int
+ */
+#define emberAfFillCommandPartitionClusterWriteHandshakeParam(partitionedClusterId, writeAttributeRecords, \
+ writeAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WRITE_HANDSHAKE_PARAM_COMMAND_ID, "ub", partitionedClusterId, writeAttributeRecords, \
+ writeAttributeRecordsLen);
+
+/** @brief Command description for ImageNotify
+ *
+ * Command: ImageNotify
+ * @param payloadType ENUM8
+ * @param queryJitter INT8U
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param newFileVersion INT32U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterImageNotify(payloadType, queryJitter, manufacturerId, imageType, newFileVersion) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IMAGE_NOTIFY_COMMAND_ID, "uuuuu", payloadType, queryJitter, manufacturerId, imageType, \
+ newFileVersion);
+
+/** @brief Command description for QueryNextImageRequest
+ *
+ * Command: QueryNextImageRequest
+ * @param fieldControl INT8U
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param currentFileVersion INT32U
+ * @param hardwareVersion INT16U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterQueryNextImageRequest(fieldControl, manufacturerId, imageType, currentFileVersion, hardwareVersion) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUERY_NEXT_IMAGE_REQUEST_COMMAND_ID, "uuuuu", fieldControl, manufacturerId, imageType, \
+ currentFileVersion, hardwareVersion);
+
+/** @brief Command description for QueryNextImageResponse
+ *
+ * Command: QueryNextImageResponse
+ * @param status Status
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param imageSize INT32U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterQueryNextImageResponse(status, manufacturerId, imageType, fileVersion, imageSize) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUERY_NEXT_IMAGE_RESPONSE_COMMAND_ID, "uuuuu", status, manufacturerId, imageType, \
+ fileVersion, imageSize);
+
+/** @brief Command description for ImageBlockRequest
+ *
+ * Command: ImageBlockRequest
+ * @param fieldControl INT8U
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param fileOffset INT32U
+ * @param maxDataSize INT8U
+ * @param requestNodeAddress IEEE_ADDRESS
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterImageBlockRequest(fieldControl, manufacturerId, imageType, fileVersion, fileOffset, maxDataSize, \
+ requestNodeAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IMAGE_BLOCK_REQUEST_COMMAND_ID, "uuuuuuu", fieldControl, manufacturerId, imageType, \
+ fileVersion, fileOffset, maxDataSize, requestNodeAddress);
+
+/** @brief Command description for ImagePageRequest
+ *
+ * Command: ImagePageRequest
+ * @param fieldControl INT8U
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param fileOffset INT32U
+ * @param maxDataSize INT8U
+ * @param pageSize INT16U
+ * @param responseSpacing INT16U
+ * @param requestNodeAddress IEEE_ADDRESS
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterImagePageRequest(fieldControl, manufacturerId, imageType, fileVersion, fileOffset, maxDataSize, \
+ pageSize, responseSpacing, requestNodeAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IMAGE_PAGE_REQUEST_COMMAND_ID, "uuuuuuuuu", fieldControl, manufacturerId, imageType, \
+ fileVersion, fileOffset, maxDataSize, pageSize, responseSpacing, requestNodeAddress);
+
+/** @brief Command description for ImageBlockResponse
+ *
+ * Command: ImageBlockResponse
+ * @param status Status
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param fileOffset INT32U
+ * @param dataSize INT8U
+ * @param imageData INT8U []
+ * @param imageDataLen int
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterImageBlockResponse(status, manufacturerId, imageType, fileVersion, fileOffset, dataSize, imageData, \
+ imageDataLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IMAGE_BLOCK_RESPONSE_COMMAND_ID, "uuuuuub", status, manufacturerId, imageType, fileVersion, \
+ fileOffset, dataSize, imageData, imageDataLen);
+
+/** @brief Command description for UpgradeEndRequest
+ *
+ * Command: UpgradeEndRequest
+ * @param status Status
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterUpgradeEndRequest(status, manufacturerId, imageType, fileVersion) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UPGRADE_END_REQUEST_COMMAND_ID, "uuuu", status, manufacturerId, imageType, fileVersion);
+
+/** @brief Command description for UpgradeEndResponse
+ *
+ * Command: UpgradeEndResponse
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param currentTime UTC_TIME
+ * @param upgradeTime UTC_TIME
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterUpgradeEndResponse(manufacturerId, imageType, fileVersion, currentTime, upgradeTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UPGRADE_END_RESPONSE_COMMAND_ID, "uuuuu", manufacturerId, imageType, fileVersion, \
+ currentTime, upgradeTime);
+
+/** @brief Command description for QuerySpecificFileRequest
+ *
+ * Command: QuerySpecificFileRequest
+ * @param requestNodeAddress IEEE_ADDRESS
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param currentZigbeeStackVersion INT16U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterQuerySpecificFileRequest(requestNodeAddress, manufacturerId, imageType, fileVersion, \
+ currentZigbeeStackVersion) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUERY_SPECIFIC_FILE_REQUEST_COMMAND_ID, "uuuuu", requestNodeAddress, manufacturerId, \
+ imageType, fileVersion, currentZigbeeStackVersion);
+
+/** @brief Command description for QuerySpecificFileResponse
+ *
+ * Command: QuerySpecificFileResponse
+ * @param status Status
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param imageSize INT32U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterQuerySpecificFileResponse(status, manufacturerId, imageType, fileVersion, imageSize) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUERY_SPECIFIC_FILE_RESPONSE_COMMAND_ID, "uuuuu", status, manufacturerId, imageType, \
+ fileVersion, imageSize);
+
+/** @brief Command description for PowerProfileRequest
+ *
+ * Command: PowerProfileRequest
+ * @param powerProfileId INT8U
+ * @param totalProfileNum INT8U
+ * @param powerProfileId INT8U
+ * @param numOfTransferredPhases INT8U
+ * @param transferredPhases TransferredPhase []
+ * @param transferredPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileRequest(powerProfileId, totalProfileNum, powerProfileId, numOfTransferredPhases, transferredPhases, \
+ transferredPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_POWER_PROFILE_REQUEST_COMMAND_ID, "uuuub", powerProfileId, totalProfileNum, powerProfileId, \
+ numOfTransferredPhases, transferredPhases, transferredPhasesLen);
+
+/** @brief Command description for PowerProfileStateRequest
+ *
+ * Command: PowerProfileStateRequest
+ * @param totalProfileNum INT8U
+ * @param powerProfileId INT8U
+ * @param numOfTransferredPhases INT8U
+ * @param transferredPhases TransferredPhase []
+ * @param transferredPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileStateRequest(totalProfileNum, powerProfileId, numOfTransferredPhases, transferredPhases, \
+ transferredPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_POWER_PROFILE_STATE_REQUEST_COMMAND_ID, "uuub", totalProfileNum, powerProfileId, \
+ numOfTransferredPhases, transferredPhases, transferredPhasesLen);
+
+/** @brief Command description for GetPowerProfilePriceResponse
+ *
+ * Command: GetPowerProfilePriceResponse
+ * @param powerProfileId INT8U
+ * @param powerProfileCount INT8U
+ * @param currency INT16U
+ * @param powerProfileRecords PowerProfileRecord []
+ * @param powerProfileRecordsLen int
+ * @param price INT32U
+ * @param priceTrailingDigit INT8U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetPowerProfilePriceResponse(powerProfileId, powerProfileCount, currency, powerProfileRecords, \
+ powerProfileRecordsLen, price, priceTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_POWER_PROFILE_PRICE_RESPONSE_COMMAND_ID, "uuubuu", powerProfileId, powerProfileCount, \
+ currency, powerProfileRecords, powerProfileRecordsLen, price, priceTrailingDigit);
+
+/** @brief Command description for GetOverallSchedulePriceResponse
+ *
+ * Command: GetOverallSchedulePriceResponse
+ * @param currency INT16U
+ * @param powerProfileId INT8U
+ * @param price INT32U
+ * @param priceTrailingDigit INT8U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetOverallSchedulePriceResponse(currency, powerProfileId, price, priceTrailingDigit) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GET_OVERALL_SCHEDULE_PRICE_RESPONSE_COMMAND_ID, "uuuu", currency, powerProfileId, price, priceTrailingDigit);
+
+/** @brief Command description for EnergyPhasesScheduleNotification
+ *
+ * Command: EnergyPhasesScheduleNotification
+ * @param powerProfileId INT8U
+ * @param powerProfileCount INT8U
+ * @param numOfScheduledPhases INT8U
+ * @param powerProfileRecords PowerProfileRecord []
+ * @param powerProfileRecordsLen int
+ * @param scheduledPhases ScheduledPhase []
+ * @param scheduledPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterEnergyPhasesScheduleNotification(powerProfileId, powerProfileCount, numOfScheduledPhases, powerProfileRecords, \
+ powerProfileRecordsLen, scheduledPhases, scheduledPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENERGY_PHASES_SCHEDULE_NOTIFICATION_COMMAND_ID, "uuubb", powerProfileId, powerProfileCount, \
+ numOfScheduledPhases, powerProfileRecords, powerProfileRecordsLen, scheduledPhases, \
+ scheduledPhasesLen);
+
+/** @brief Command description for GetOverallSchedulePrice
+ *
+ * Command: GetOverallSchedulePrice
+ * @param powerProfileId INT8U
+ * @param numOfScheduledPhases INT8U
+ * @param scheduledPhases ScheduledPhase []
+ * @param scheduledPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetOverallSchedulePrice(powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_OVERALL_SCHEDULE_PRICE_COMMAND_ID, "uub", powerProfileId, numOfScheduledPhases, \
+ scheduledPhases, scheduledPhasesLen);
+
+/** @brief Command description for PowerProfileScheduleConstraintsRequest
+ *
+ * Command: PowerProfileScheduleConstraintsRequest
+ * @param powerProfileId INT8U
+ * @param powerProfileId INT8U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileScheduleConstraintsRequest(powerProfileId, powerProfileId) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_REQUEST_COMMAND_ID, "uu", powerProfileId, powerProfileId);
+
+/** @brief Command description for EnergyPhasesScheduleStateRequest
+ *
+ * Command: EnergyPhasesScheduleStateRequest
+ * @param powerProfileId INT8U
+ * @param powerProfileId INT8U
+ * @param numOfScheduledPhases INT8U
+ * @param scheduledPhases ScheduledPhase []
+ * @param scheduledPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterEnergyPhasesScheduleStateRequest(powerProfileId, powerProfileId, numOfScheduledPhases, scheduledPhases, \
+ scheduledPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENERGY_PHASES_SCHEDULE_STATE_REQUEST_COMMAND_ID, "uuub", powerProfileId, powerProfileId, \
+ numOfScheduledPhases, scheduledPhases, scheduledPhasesLen);
+
+/** @brief Command description for GetPowerProfilePriceExtendedResponse
+ *
+ * Command: GetPowerProfilePriceExtendedResponse
+ * @param powerProfileId INT8U
+ * @param powerProfileId INT8U
+ * @param currency INT16U
+ * @param numOfScheduledPhases INT8U
+ * @param price INT32U
+ * @param scheduledPhases ScheduledPhase []
+ * @param scheduledPhasesLen int
+ * @param priceTrailingDigit INT8U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetPowerProfilePriceExtendedResponse(powerProfileId, powerProfileId, currency, numOfScheduledPhases, price, \
+ scheduledPhases, scheduledPhasesLen, priceTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_RESPONSE_COMMAND_ID, "uuuuubu", powerProfileId, \
+ powerProfileId, currency, numOfScheduledPhases, price, scheduledPhases, scheduledPhasesLen, \
+ priceTrailingDigit);
+
+/** @brief Command description for PowerProfileScheduleConstraintsNotification
+ *
+ * Command: PowerProfileScheduleConstraintsNotification
+ * @param powerProfileId INT8U
+ * @param startAfter INT16U
+ * @param stopBefore INT16U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileScheduleConstraintsNotification(powerProfileId, startAfter, stopBefore) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_NOTIFICATION_COMMAND_ID, "uuu", powerProfileId, startAfter, stopBefore);
+
+/** @brief Command description for PowerProfileScheduleConstraintsResponse
+ *
+ * Command: PowerProfileScheduleConstraintsResponse
+ * @param powerProfileId INT8U
+ * @param startAfter INT16U
+ * @param stopBefore INT16U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileScheduleConstraintsResponse(powerProfileId, startAfter, stopBefore) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_RESPONSE_COMMAND_ID, "uuu", powerProfileId, startAfter, stopBefore);
+
+/** @brief Command description for GetPowerProfilePriceExtended
+ *
+ * Command: GetPowerProfilePriceExtended
+ * @param options BITMAP8
+ * @param powerProfileId INT8U
+ * @param powerProfileStartTime INT16U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetPowerProfilePriceExtended(options, powerProfileId, powerProfileStartTime) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_COMMAND_ID, "uuu", options, powerProfileId, powerProfileStartTime);
+
+/** @brief Command description for ExecutionOfACommand
+ *
+ * Command: ExecutionOfACommand
+ * @param commandId CommandIdentification
+ * @param applianceStatus ApplianceStatus
+ * @param remoteEnableFlagsAndDeviceStatus2 RemoteEnableFlagsAndDeviceStatus2
+ * @param applianceStatus2 INT24U
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterExecutionOfACommand(commandId, applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EXECUTION_OF_A_COMMAND_COMMAND_ID, "uuuu", commandId, applianceStatus, \
+ remoteEnableFlagsAndDeviceStatus2, applianceStatus2);
+
+/** @brief Command description for SignalState
+ *
+ * Command: SignalState
+ * @param applianceStatus ApplianceStatus
+ * @param remoteEnableFlagsAndDeviceStatus2 RemoteEnableFlagsAndDeviceStatus2
+ * @param applianceStatus2 INT24U
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterSignalState(applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_SIGNAL_STATE_COMMAND_ID, "uuu", applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2);
+
+/** @brief Command description for WriteFunctions
+ *
+ * Command: WriteFunctions
+ * @param functionId INT16U
+ * @param functionDataType ENUM8
+ * @param functionData INT8U []
+ * @param functionDataLen int
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterWriteFunctions(functionId, functionDataType, functionData, functionDataLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_WRITE_FUNCTIONS_COMMAND_ID, "uub", functionId, functionDataType, functionData, functionDataLen);
+
+/** @brief Command description for OverloadPauseResume
+ *
+ * Command: OverloadPauseResume
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterOverloadPauseResume() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OVERLOAD_PAUSE_RESUME_COMMAND_ID, "", );
+
+/** @brief Command description for OverloadPause
+ *
+ * Command: OverloadPause
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterOverloadPause() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OVERLOAD_PAUSE_COMMAND_ID, "", );
+
+/** @brief Command description for OverloadWarning
+ *
+ * Command: OverloadWarning
+ * @param warningEvent WarningEvent
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterOverloadWarning(warningEvent) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OVERLOAD_WARNING_COMMAND_ID, "u", warningEvent);
+
+/** @brief Command description for CheckIn
+ *
+ * Command: CheckIn
+ * @param startFastPolling BOOLEAN
+ * @param fastPollTimeout INT16U
+ */
+#define emberAfFillCommandPoll \
+ ControlClusterCheckIn(startFastPolling, fastPollTimeout) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CHECK_IN_COMMAND_ID, "uu", startFastPolling, fastPollTimeout);
+
+/** @brief Command description for FastPollStop
+ *
+ * Command: FastPollStop
+ */
+#define emberAfFillCommandPoll \
+ ControlClusterFastPollStop() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_FAST_POLL_STOP_COMMAND_ID, "", );
+
+/** @brief Command description for SetLongPollInterval
+ *
+ * Command: SetLongPollInterval
+ * @param newLongPollInterval INT32U
+ */
+#define emberAfFillCommandPoll \
+ ControlClusterSetLongPollInterval(newLongPollInterval) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_LONG_POLL_INTERVAL_COMMAND_ID, "u", newLongPollInterval);
+
+/** @brief Command description for SetShortPollInterval
+ *
+ * Command: SetShortPollInterval
+ * @param newShortPollInterval INT16U
+ */
+#define emberAfFillCommandPoll \
+ ControlClusterSetShortPollInterval(newShortPollInterval) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_SHORT_POLL_INTERVAL_COMMAND_ID, "u", newShortPollInterval);
+
+/** @brief Command description for GpNotification
+ *
+ * Command: GpNotification
+ * @param options GpNotificationOption
+ * @param options GpNotificationResponseOption
+ * @param gpdSrcId INT32U
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param gpdIeee IEEE_ADDRESS
+ * @param gpdEndpoint INT8U
+ * @param endpoint INT8U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdCommandId INT8U
+ * @param gpdCommandPayload OCTET_STRING
+ * @param gppShortAddress INT16U
+ * @param gppDistance INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpNotification(options, options, gpdSrcId, gpdSrcId, gpdIeee, gpdIeee, gpdEndpoint, endpoint, \
+ gpdSecurityFrameCounter, gpdSecurityFrameCounter, gpdCommandId, gpdCommandPayload, gppShortAddress, \
+ gppDistance) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_NOTIFICATION_COMMAND_ID, "uuuuuuuuuuuuuu", options, options, gpdSrcId, gpdSrcId, gpdIeee, \
+ gpdIeee, gpdEndpoint, endpoint, gpdSecurityFrameCounter, gpdSecurityFrameCounter, gpdCommandId, \
+ gpdCommandPayload, gppShortAddress, gppDistance);
+
+/** @brief Command description for GpPairingSearch
+ *
+ * Command: GpPairingSearch
+ * @param options GpPairingSearchOption
+ * @param options GpPairingOption
+ * @param gpdSrcId INT32U
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param endpoint INT8U
+ * @param sinkIeeeAddress IEEE_ADDRESS
+ * @param sinkNwkAddress INT16U
+ * @param sinkGroupId INT16U
+ * @param deviceId GpDeviceId
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdKey SECURITY_KEY
+ * @param assignedAlias INT16U
+ * @param groupcastRadius INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpPairingSearch(options, options, gpdSrcId, gpdSrcId, gpdIeee, gpdIeee, endpoint, endpoint, sinkIeeeAddress, \
+ sinkNwkAddress, sinkGroupId, deviceId, gpdSecurityFrameCounter, gpdKey, assignedAlias, \
+ groupcastRadius) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_PAIRING_SEARCH_COMMAND_ID, "uuuuuuuuuuuuuuuu", options, options, gpdSrcId, gpdSrcId, \
+ gpdIeee, gpdIeee, endpoint, endpoint, sinkIeeeAddress, sinkNwkAddress, sinkGroupId, deviceId, \
+ gpdSecurityFrameCounter, gpdKey, assignedAlias, groupcastRadius);
+
+/** @brief Command description for GpProxyCommissioningMode
+ *
+ * Command: GpProxyCommissioningMode
+ * @param options GpProxyCommissioningModeOption
+ * @param commissioningWindow INT16U
+ * @param channel INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpProxyCommissioningMode(options, commissioningWindow, channel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_PROXY_COMMISSIONING_MODE_COMMAND_ID, "uuu", options, commissioningWindow, channel);
+
+/** @brief Command description for GpTunnelingStop
+ *
+ * Command: GpTunnelingStop
+ * @param options GpTunnelingStopOption
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gppShortAddress INT16U
+ * @param gppDistance INT8S
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpTunnelingStop(options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter, gppShortAddress, gppDistance) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_TUNNELING_STOP_COMMAND_ID, "uuuuuuu", options, gpdSrcId, gpdIeee, endpoint, \
+ gpdSecurityFrameCounter, gppShortAddress, gppDistance);
+
+/** @brief Command description for GpCommissioningNotification
+ *
+ * Command: GpCommissioningNotification
+ * @param options GpCommissioningNotificationOption
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdCommandId INT8U
+ * @param gpdCommandPayload OCTET_STRING
+ * @param gppShortAddress INT16U
+ * @param gppLink INT8U
+ * @param mic INT32U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpCommissioningNotification(options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter, gpdCommandId, \
+ gpdCommandPayload, gppShortAddress, gppLink, mic) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_COMMISSIONING_NOTIFICATION_COMMAND_ID, "uuuuuuuuuu", options, gpdSrcId, gpdIeee, \
+ endpoint, gpdSecurityFrameCounter, gpdCommandId, gpdCommandPayload, gppShortAddress, gppLink, \
+ mic);
+
+/** @brief Command description for GpSinkCommissioningMode
+ *
+ * Command: GpSinkCommissioningMode
+ * @param options GpSinkCommissioningModeOptions
+ * @param gpmAddrForSecurity INT16U
+ * @param gpmAddrForPairing INT16U
+ * @param sinkEndpoint INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpSinkCommissioningMode(options, gpmAddrForSecurity, gpmAddrForPairing, sinkEndpoint) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GP_SINK_COMMISSIONING_MODE_COMMAND_ID, "uuuu", options, gpmAddrForSecurity, gpmAddrForPairing, sinkEndpoint);
+
+/** @brief Command description for GpResponse
+ *
+ * Command: GpResponse
+ * @param options GpResponseOption
+ * @param tempMasterShortAddress INT16U
+ * @param tempMasterTxChannel BITMAP8
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param gpdCommandId INT8U
+ * @param gpdCommandPayload OCTET_STRING
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpResponse(options, tempMasterShortAddress, tempMasterTxChannel, gpdSrcId, gpdIeee, endpoint, gpdCommandId, \
+ gpdCommandPayload) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_RESPONSE_COMMAND_ID, "uuuuuuuu", options, tempMasterShortAddress, tempMasterTxChannel, \
+ gpdSrcId, gpdIeee, endpoint, gpdCommandId, gpdCommandPayload);
+
+/** @brief Command description for GpTranslationTableUpdate
+ *
+ * Command: GpTranslationTableUpdate
+ * @param options GpTranslationTableUpdateOption
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param translations GpTranslationTableUpdateTranslation []
+ * @param translationsLen int
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpTranslationTableUpdate(options, gpdSrcId, gpdIeee, endpoint, translations, translationsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_TRANSLATION_TABLE_UPDATE_COMMAND_ID, "uuuub", options, gpdSrcId, gpdIeee, endpoint, \
+ translations, translationsLen);
+
+/** @brief Command description for GpTranslationTableRequest
+ *
+ * Command: GpTranslationTableRequest
+ * @param startIndex INT8U
+ * @param status GpTranslationTableResponseStatus
+ * @param options GpTranslationTableResponseOption
+ * @param totalNumberOfEntries INT8U
+ * @param startIndex INT8U
+ * @param entriesCount INT8U
+ * @param translationTableList INT8U []
+ * @param translationTableListLen int
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpTranslationTableRequest(startIndex, status, options, totalNumberOfEntries, startIndex, entriesCount, \
+ translationTableList, translationTableListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_TRANSLATION_TABLE_REQUEST_COMMAND_ID, "uuuuuub", startIndex, status, options, \
+ totalNumberOfEntries, startIndex, entriesCount, translationTableList, translationTableListLen);
+
+/** @brief Command description for GpPairingConfiguration
+ *
+ * Command: GpPairingConfiguration
+ * @param actions GpPairingConfigurationActions
+ * @param options GpPairingConfigurationOption
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param deviceId INT8U
+ * @param groupListCount INT8U
+ * @param groupList GpPairingConfigurationGroupList []
+ * @param groupListLen int
+ * @param gpdAssignedAlias INT16U
+ * @param groupcastRadius INT8U
+ * @param securityOptions INT8U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdSecurityKey SECURITY_KEY
+ * @param numberOfPairedEndpoints INT8U
+ * @param pairedEndpoints INT8U []
+ * @param pairedEndpointsLen int
+ * @param applicationInformation GpApplicationInformation
+ * @param manufacturerId INT16U
+ * @param modeId INT16U
+ * @param numberOfGpdCommands INT8U
+ * @param gpdCommandIdList INT8U []
+ * @param gpdCommandIdListLen int
+ * @param clusterIdListCount INT8U
+ * @param clusterListServer INT16U []
+ * @param clusterListServerLen int
+ * @param clusterListClient INT16U []
+ * @param clusterListClientLen int
+ * @param switchInformationLength INT8U
+ * @param switchConfiguration INT8U
+ * @param currentContactStatus INT8U
+ * @param totalNumberOfReports INT8U
+ * @param numberOfReports INT8U
+ * @param reportDescriptor INT8U []
+ * @param reportDescriptorLen int
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpPairingConfiguration( \
+ actions, options, gpdSrcId, gpdIeee, endpoint, deviceId, groupListCount, groupList, groupListLen, gpdAssignedAlias, \
+ groupcastRadius, securityOptions, gpdSecurityFrameCounter, gpdSecurityKey, numberOfPairedEndpoints, pairedEndpoints, \
+ pairedEndpointsLen, applicationInformation, manufacturerId, modeId, numberOfGpdCommands, gpdCommandIdList, \
+ gpdCommandIdListLen, clusterIdListCount, clusterListServer, clusterListServerLen, clusterListClient, clusterListClientLen, \
+ switchInformationLength, switchConfiguration, currentContactStatus, totalNumberOfReports, numberOfReports, \
+ reportDescriptor, reportDescriptorLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_PAIRING_CONFIGURATION_COMMAND_ID, "uuuuuuubuuuuuubuuuububbuuuuub", actions, options, \
+ gpdSrcId, gpdIeee, endpoint, deviceId, groupListCount, groupList, groupListLen, \
+ gpdAssignedAlias, groupcastRadius, securityOptions, gpdSecurityFrameCounter, gpdSecurityKey, \
+ numberOfPairedEndpoints, pairedEndpoints, pairedEndpointsLen, applicationInformation, \
+ manufacturerId, modeId, numberOfGpdCommands, gpdCommandIdList, gpdCommandIdListLen, \
+ clusterIdListCount, clusterListServer, clusterListServerLen, clusterListClient, \
+ clusterListClientLen, switchInformationLength, switchConfiguration, currentContactStatus, \
+ totalNumberOfReports, numberOfReports, reportDescriptor, reportDescriptorLen);
+
+/** @brief Command description for GpSinkTableRequest
+ *
+ * Command: GpSinkTableRequest
+ * @param options GpSinkTableRequestOptions
+ * @param status ENUM8
+ * @param gpdSrcId INT32U
+ * @param totalNumberofNonEmptySinkTableEntries INT8U
+ * @param gpdIeee INT64U
+ * @param startIndex INT8U
+ * @param endpoint INT8U
+ * @param sinkTableEntriesCount INT8U
+ * @param index INT8U
+ * @param sinkTableEntries INT8U []
+ * @param sinkTableEntriesLen int
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpSinkTableRequest(options, status, gpdSrcId, totalNumberofNonEmptySinkTableEntries, gpdIeee, startIndex, \
+ endpoint, sinkTableEntriesCount, index, sinkTableEntries, sinkTableEntriesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_SINK_TABLE_REQUEST_COMMAND_ID, "uuuuuuuuub", options, status, gpdSrcId, \
+ totalNumberofNonEmptySinkTableEntries, gpdIeee, startIndex, endpoint, sinkTableEntriesCount, \
+ index, sinkTableEntries, sinkTableEntriesLen);
+
+/** @brief Command description for GpProxyTableResponse
+ *
+ * Command: GpProxyTableResponse
+ * @param status GpProxyTableResponseStatus
+ * @param options GpProxyTableRequestOptions
+ * @param totalNumberOfNonEmptyProxyTableEntries INT8U
+ * @param gpdSrcId INT32U
+ * @param startIndex INT8U
+ * @param gpdIeee INT64U
+ * @param entriesCount INT8U
+ * @param endpoint INT8U
+ * @param proxyTableEntries INT8U []
+ * @param proxyTableEntriesLen int
+ * @param index INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpProxyTableResponse(status, options, totalNumberOfNonEmptyProxyTableEntries, gpdSrcId, startIndex, gpdIeee, \
+ entriesCount, endpoint, proxyTableEntries, proxyTableEntriesLen, index) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_PROXY_TABLE_RESPONSE_COMMAND_ID, "uuuuuuuubu", status, options, \
+ totalNumberOfNonEmptyProxyTableEntries, gpdSrcId, startIndex, gpdIeee, entriesCount, endpoint, \
+ proxyTableEntries, proxyTableEntriesLen, index);
+
+/** @brief Command description for LockDoor
+ *
+ * Command: LockDoor
+ * @param PIN CHAR_STRING
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterLockDoor(PIN, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LOCK_DOOR_COMMAND_ID, "uu", PIN, status);
+
+/** @brief Command description for UnlockDoor
+ *
+ * Command: UnlockDoor
+ * @param PIN CHAR_STRING
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterUnlockDoor(PIN, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNLOCK_DOOR_COMMAND_ID, "uu", PIN, status);
+
+/** @brief Command description for Toggle
+ *
+ * Command: Toggle
+ * @param pin CHAR_STRING
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterToggle(pin, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TOGGLE_COMMAND_ID, "uu", pin, status);
+
+/** @brief Command description for UnlockWithTimeout
+ *
+ * Command: UnlockWithTimeout
+ * @param timeoutInSeconds INT16U
+ * @param status INT8U
+ * @param pin CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterUnlockWithTimeout(timeoutInSeconds, status, pin) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID, "uuu", timeoutInSeconds, status, pin);
+
+/** @brief Command description for GetLogRecord
+ *
+ * Command: GetLogRecord
+ * @param logIndex INT16U
+ * @param logEntryId INT16U
+ * @param timestamp INT32U
+ * @param eventType ENUM8
+ * @param source INT8U
+ * @param eventIdOrAlarmCode INT8U
+ * @param userId INT16U
+ * @param pin CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetLogRecord(logIndex, logEntryId, timestamp, eventType, source, eventIdOrAlarmCode, userId, pin) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_LOG_RECORD_COMMAND_ID, "uuuuuuuu", logIndex, logEntryId, timestamp, eventType, source, \
+ eventIdOrAlarmCode, userId, pin);
+
+/** @brief Command description for SetPin
+ *
+ * Command: SetPin
+ * @param userId INT16U
+ * @param status DoorLockSetPinOrIdStatus
+ * @param userStatus DoorLockUserStatus
+ * @param userType DoorLockUserType
+ * @param pin CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetPin(userId, status, userStatus, userType, pin) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_PIN_COMMAND_ID, "uuuuu", userId, status, userStatus, userType, pin);
+
+/** @brief Command description for GetPin
+ *
+ * Command: GetPin
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param userStatus DoorLockUserStatus
+ * @param userType DoorLockUserType
+ * @param pin CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetPin(userId, userId, userStatus, userType, pin) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PIN_COMMAND_ID, "uuuuu", userId, userId, userStatus, userType, pin);
+
+/** @brief Command description for ClearPin
+ *
+ * Command: ClearPin
+ * @param userId INT16U
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearPin(userId, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_PIN_COMMAND_ID, "uu", userId, status);
+
+/** @brief Command description for ClearAllPins
+ *
+ * Command: ClearAllPins
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearAllPins(status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_ALL_PINS_COMMAND_ID, "u", status);
+
+/** @brief Command description for SetUserStatus
+ *
+ * Command: SetUserStatus
+ * @param userId INT16U
+ * @param status INT8U
+ * @param userStatus INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetUserStatus(userId, status, userStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_USER_STATUS_COMMAND_ID, "uuu", userId, status, userStatus);
+
+/** @brief Command description for GetUserStatus
+ *
+ * Command: GetUserStatus
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetUserStatus(userId, userId, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_USER_STATUS_COMMAND_ID, "uuu", userId, userId, status);
+
+/** @brief Command description for SetWeekdaySchedule
+ *
+ * Command: SetWeekdaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param userId INT16U
+ * @param daysMask DoorLockDayOfWeek
+ * @param startHour INT8U
+ * @param startMinute INT8U
+ * @param endHour INT8U
+ * @param endMinute INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetWeekdaySchedule(scheduleId, status, userId, daysMask, startHour, startMinute, endHour, endMinute) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_WEEKDAY_SCHEDULE_COMMAND_ID, "uuuuuuuu", scheduleId, status, userId, daysMask, \
+ startHour, startMinute, endHour, endMinute);
+
+/** @brief Command description for GetWeekdaySchedule
+ *
+ * Command: GetWeekdaySchedule
+ * @param scheduleId INT8U
+ * @param scheduleId INT8U
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param status INT8U
+ * @param daysMask INT8U
+ * @param startHour INT8U
+ * @param startMinute INT8U
+ * @param endHour INT8U
+ * @param endMinute INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetWeekdaySchedule(scheduleId, scheduleId, userId, userId, status, daysMask, startHour, startMinute, endHour, \
+ endMinute) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_WEEKDAY_SCHEDULE_COMMAND_ID, "uuuuuuuuuu", scheduleId, scheduleId, userId, userId, \
+ status, daysMask, startHour, startMinute, endHour, endMinute);
+
+/** @brief Command description for ClearWeekdaySchedule
+ *
+ * Command: ClearWeekdaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param userId INT16U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearWeekdaySchedule(scheduleId, status, userId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_WEEKDAY_SCHEDULE_COMMAND_ID, "uuu", scheduleId, status, userId);
+
+/** @brief Command description for SetYeardaySchedule
+ *
+ * Command: SetYeardaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param userId INT16U
+ * @param localStartTime INT32U
+ * @param localEndTime INT32U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetYeardaySchedule(scheduleId, status, userId, localStartTime, localEndTime) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_SET_YEARDAY_SCHEDULE_COMMAND_ID, "uuuuu", scheduleId, status, userId, localStartTime, localEndTime);
+
+/** @brief Command description for GetYeardaySchedule
+ *
+ * Command: GetYeardaySchedule
+ * @param scheduleId INT8U
+ * @param scheduleId INT8U
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param status INT8U
+ * @param localStartTime INT32U
+ * @param localEndTime INT32U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetYeardaySchedule(scheduleId, scheduleId, userId, userId, status, localStartTime, localEndTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_YEARDAY_SCHEDULE_COMMAND_ID, "uuuuuuu", scheduleId, scheduleId, userId, userId, status, \
+ localStartTime, localEndTime);
+
+/** @brief Command description for ClearYeardaySchedule
+ *
+ * Command: ClearYeardaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param userId INT16U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearYeardaySchedule(scheduleId, status, userId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_YEARDAY_SCHEDULE_COMMAND_ID, "uuu", scheduleId, status, userId);
+
+/** @brief Command description for SetHolidaySchedule
+ *
+ * Command: SetHolidaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param localStartTime INT32U
+ * @param localEndTime INT32U
+ * @param operatingModeDuringHoliday ENUM8
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetHolidaySchedule(scheduleId, status, localStartTime, localEndTime, operatingModeDuringHoliday) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_HOLIDAY_SCHEDULE_COMMAND_ID, "uuuuu", scheduleId, status, localStartTime, localEndTime, \
+ operatingModeDuringHoliday);
+
+/** @brief Command description for GetHolidaySchedule
+ *
+ * Command: GetHolidaySchedule
+ * @param scheduleId INT8U
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param localStartTime INT32U
+ * @param localEndTime INT32U
+ * @param operatingModeDuringHoliday ENUM8
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetHolidaySchedule(scheduleId, scheduleId, status, localStartTime, localEndTime, operatingModeDuringHoliday) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_HOLIDAY_SCHEDULE_COMMAND_ID, "uuuuuu", scheduleId, scheduleId, status, localStartTime, \
+ localEndTime, operatingModeDuringHoliday);
+
+/** @brief Command description for ClearHolidaySchedule
+ *
+ * Command: ClearHolidaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearHolidaySchedule(scheduleId, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID, "uu", scheduleId, status);
+
+/** @brief Command description for SetUserType
+ *
+ * Command: SetUserType
+ * @param userId INT16U
+ * @param status INT8U
+ * @param userType DoorLockUserType
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetUserType(userId, status, userType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_USER_TYPE_COMMAND_ID, "uuu", userId, status, userType);
+
+/** @brief Command description for GetUserType
+ *
+ * Command: GetUserType
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param userType DoorLockUserType
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetUserType(userId, userId, userType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_USER_TYPE_COMMAND_ID, "uuu", userId, userId, userType);
+
+/** @brief Command description for SetRfid
+ *
+ * Command: SetRfid
+ * @param userId INT16U
+ * @param status DoorLockSetPinOrIdStatus
+ * @param userStatus DoorLockUserStatus
+ * @param userType DoorLockUserType
+ * @param id CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetRfid(userId, status, userStatus, userType, id) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_RFID_COMMAND_ID, "uuuuu", userId, status, userStatus, userType, id);
+
+/** @brief Command description for GetRfid
+ *
+ * Command: GetRfid
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param userStatus DoorLockUserStatus
+ * @param userType DoorLockUserType
+ * @param rfid CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetRfid(userId, userId, userStatus, userType, rfid) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_RFID_COMMAND_ID, "uuuuu", userId, userId, userStatus, userType, rfid);
+
+/** @brief Command description for ClearRfid
+ *
+ * Command: ClearRfid
+ * @param userId INT16U
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearRfid(userId, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_RFID_COMMAND_ID, "uu", userId, status);
+
+/** @brief Command description for ClearAllRfids
+ *
+ * Command: ClearAllRfids
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearAllRfids(status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_ALL_RFIDS_COMMAND_ID, "u", status);
+
+/** @brief Command description for OperationEventNotification
+ *
+ * Command: OperationEventNotification
+ * @param source INT8U
+ * @param eventCode DoorLockOperationEventCode
+ * @param userId INT16U
+ * @param pin CHAR_STRING
+ * @param timeStamp INT32U
+ * @param data CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterOperationEventNotification(source, eventCode, userId, pin, timeStamp, data) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_OPERATION_EVENT_NOTIFICATION_COMMAND_ID, "uuuuuu", source, eventCode, userId, pin, timeStamp, data);
+
+/** @brief Command description for ProgrammingEventNotification
+ *
+ * Command: ProgrammingEventNotification
+ * @param source INT8U
+ * @param eventCode DoorLockProgrammingEventCode
+ * @param userId INT16U
+ * @param pin CHAR_STRING
+ * @param userType DoorLockUserType
+ * @param userStatus DoorLockUserStatus
+ * @param timeStamp INT32U
+ * @param data CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterProgrammingEventNotification(source, eventCode, userId, pin, userType, userStatus, timeStamp, data) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PROGRAMMING_EVENT_NOTIFICATION_COMMAND_ID, "uuuuuuuu", source, eventCode, userId, pin, \
+ userType, userStatus, timeStamp, data);
+
+/** @brief Command description for WindowCoveringUpOpen
+ *
+ * Command: WindowCoveringUpOpen
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringUpOpen() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_UP_OPEN_COMMAND_ID, "", );
+
+/** @brief Command description for WindowCoveringDownClose
+ *
+ * Command: WindowCoveringDownClose
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringDownClose() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_DOWN_CLOSE_COMMAND_ID, "", );
+
+/** @brief Command description for WindowCoveringStop
+ *
+ * Command: WindowCoveringStop
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringStop() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_STOP_COMMAND_ID, "", );
+
+/** @brief Command description for WindowCoveringGoToLiftValue
+ *
+ * Command: WindowCoveringGoToLiftValue
+ * @param liftValue INT16U
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringGoToLiftValue(liftValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_GO_TO_LIFT_VALUE_COMMAND_ID, "u", liftValue);
+
+/** @brief Command description for WindowCoveringGoToLiftPercentage
+ *
+ * Command: WindowCoveringGoToLiftPercentage
+ * @param percentageLiftValue INT8U
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringGoToLiftPercentage(percentageLiftValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_GO_TO_LIFT_PERCENTAGE_COMMAND_ID, "u", percentageLiftValue);
+
+/** @brief Command description for WindowCoveringGoToTiltValue
+ *
+ * Command: WindowCoveringGoToTiltValue
+ * @param tiltValue INT16U
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringGoToTiltValue(tiltValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_GO_TO_TILT_VALUE_COMMAND_ID, "u", tiltValue);
+
+/** @brief Command description for WindowCoveringGoToTiltPercentage
+ *
+ * Command: WindowCoveringGoToTiltPercentage
+ * @param percentageTiltValue INT8U
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringGoToTiltPercentage(percentageTiltValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_GO_TO_TILT_PERCENTAGE_COMMAND_ID, "u", percentageTiltValue);
+
+/** @brief Command description for BarrierControlGoToPercent
+ *
+ * Command: BarrierControlGoToPercent
+ * @param percentOpen INT8U
+ */
+#define emberAfFillCommandBarrier \
+ ControlClusterBarrierControlGoToPercent(percentOpen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID, "u", percentOpen);
+
+/** @brief Command description for BarrierControlStop
+ *
+ * Command: BarrierControlStop
+ */
+#define emberAfFillCommandBarrier \
+ ControlClusterBarrierControlStop() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BARRIER_CONTROL_STOP_COMMAND_ID, "", );
+
+/** @brief Command description for SetpointRaiseLower
+ *
+ * Command: SetpointRaiseLower
+ * @param mode SetpointAdjustMode
+ * @param numberOfTransitionsForSequence ENUM8
+ * @param amount INT8S
+ * @param dayOfWeekForSequence DayOfWeek
+ * @param modeForSequence ModeForSequence
+ * @param payload INT8U []
+ * @param payloadLen int
+ */
+#define emberAfFillCommandThermostatClusterSetpointRaiseLower(mode, numberOfTransitionsForSequence, amount, dayOfWeekForSequence, \
+ modeForSequence, payload, payloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SETPOINT_RAISE_LOWER_COMMAND_ID, "uuuuub", mode, numberOfTransitionsForSequence, amount, \
+ dayOfWeekForSequence, modeForSequence, payload, payloadLen);
+
+/** @brief Command description for SetWeeklySchedule
+ *
+ * Command: SetWeeklySchedule
+ * @param numberOfTransitionsForSequence ENUM8
+ * @param timeOfDay INT16U
+ * @param dayOfWeekForSequence DayOfWeek
+ * @param relayStatus BITMAP16
+ * @param modeForSequence ModeForSequence
+ * @param localTemperature INT16S
+ * @param payload INT8U []
+ * @param payloadLen int
+ * @param humidityInPercentage INT8U
+ * @param setpoint INT16S
+ * @param unreadEntries INT16U
+ */
+#define emberAfFillCommandThermostatClusterSetWeeklySchedule(numberOfTransitionsForSequence, timeOfDay, dayOfWeekForSequence, \
+ relayStatus, modeForSequence, localTemperature, payload, payloadLen, \
+ humidityInPercentage, setpoint, unreadEntries) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_WEEKLY_SCHEDULE_COMMAND_ID, "uuuuuubuuu", numberOfTransitionsForSequence, timeOfDay, \
+ dayOfWeekForSequence, relayStatus, modeForSequence, localTemperature, payload, payloadLen, \
+ humidityInPercentage, setpoint, unreadEntries);
+
+/** @brief Command description for GetWeeklySchedule
+ *
+ * Command: GetWeeklySchedule
+ * @param daysToReturn DayOfWeek
+ * @param modeToReturn ModeForSequence
+ */
+#define emberAfFillCommandThermostatClusterGetWeeklySchedule(daysToReturn, modeToReturn) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_WEEKLY_SCHEDULE_COMMAND_ID, "uu", daysToReturn, modeToReturn);
+
+/** @brief Command description for ClearWeeklySchedule
+ *
+ * Command: ClearWeeklySchedule
+ */
+#define emberAfFillCommandThermostatClusterClearWeeklySchedule() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_WEEKLY_SCHEDULE_COMMAND_ID, "", );
+
+/** @brief Command description for GetRelayStatusLog
+ *
+ * Command: GetRelayStatusLog
+ */
+#define emberAfFillCommandThermostatClusterGetRelayStatusLog() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_RELAY_STATUS_LOG_COMMAND_ID, "", );
+
+/** @brief Command description for MoveToHue
+ *
+ * Command: MoveToHue
+ * @param hue INT8U
+ * @param direction HueDirection
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToHue(hue, direction, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MOVE_TO_HUE_COMMAND_ID, "uuuuu", hue, direction, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveHue
+ *
+ * Command: MoveHue
+ * @param moveMode HueMoveMode
+ * @param rate INT8U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveHue(moveMode, rate, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_HUE_COMMAND_ID, "uuuu", moveMode, rate, optionsMask, optionsOverride);
+
+/** @brief Command description for StepHue
+ *
+ * Command: StepHue
+ * @param stepMode HueStepMode
+ * @param stepSize INT8U
+ * @param transitionTime INT8U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStepHue(stepMode, stepSize, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_STEP_HUE_COMMAND_ID, "uuuuu", stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveToSaturation
+ *
+ * Command: MoveToSaturation
+ * @param saturation INT8U
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToSaturation(saturation, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MOVE_TO_SATURATION_COMMAND_ID, "uuuu", saturation, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveSaturation
+ *
+ * Command: MoveSaturation
+ * @param moveMode SaturationMoveMode
+ * @param rate INT8U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveSaturation(moveMode, rate, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_SATURATION_COMMAND_ID, "uuuu", moveMode, rate, optionsMask, optionsOverride);
+
+/** @brief Command description for StepSaturation
+ *
+ * Command: StepSaturation
+ * @param stepMode SaturationStepMode
+ * @param stepSize INT8U
+ * @param transitionTime INT8U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStepSaturation(stepMode, stepSize, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_STEP_SATURATION_COMMAND_ID, "uuuuu", stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveToHueAndSaturation
+ *
+ * Command: MoveToHueAndSaturation
+ * @param hue INT8U
+ * @param saturation INT8U
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToHueAndSaturation(hue, saturation, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID, "uuuuu", hue, saturation, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveToColor
+ *
+ * Command: MoveToColor
+ * @param colorX INT16U
+ * @param colorY INT16U
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToColor(colorX, colorY, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MOVE_TO_COLOR_COMMAND_ID, "uuuuu", colorX, colorY, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveColor
+ *
+ * Command: MoveColor
+ * @param rateX INT16S
+ * @param rateY INT16S
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveColor(rateX, rateY, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_COLOR_COMMAND_ID, "uuuu", rateX, rateY, optionsMask, optionsOverride);
+
+/** @brief Command description for StepColor
+ *
+ * Command: StepColor
+ * @param stepX INT16S
+ * @param stepY INT16S
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStepColor(stepX, stepY, transitionTime, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STEP_COLOR_COMMAND_ID, "uuuuu", stepX, stepY, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveToColorTemperature
+ *
+ * Command: MoveToColorTemperature
+ * @param colorTemperature INT16U
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToColorTemperature(colorTemperature, transitionTime, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID, "uuuu", colorTemperature, transitionTime, optionsMask, \
+ optionsOverride);
+
+/** @brief Command description for EnhancedMoveToHue
+ *
+ * Command: EnhancedMoveToHue
+ * @param enhancedHue INT16U
+ * @param direction HueDirection
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterEnhancedMoveToHue(enhancedHue, direction, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_MOVE_TO_HUE_COMMAND_ID, "uuu", enhancedHue, direction, transitionTime);
+
+/** @brief Command description for EnhancedMoveHue
+ *
+ * Command: EnhancedMoveHue
+ * @param moveMode HueMoveMode
+ * @param rate INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterEnhancedMoveHue(moveMode, rate) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_MOVE_HUE_COMMAND_ID, "uu", moveMode, rate);
+
+/** @brief Command description for EnhancedStepHue
+ *
+ * Command: EnhancedStepHue
+ * @param stepMode HueStepMode
+ * @param stepSize INT16U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterEnhancedStepHue(stepMode, stepSize, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_STEP_HUE_COMMAND_ID, "uuu", stepMode, stepSize, transitionTime);
+
+/** @brief Command description for EnhancedMoveToHueAndSaturation
+ *
+ * Command: EnhancedMoveToHueAndSaturation
+ * @param enhancedHue INT16U
+ * @param saturation INT8U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterEnhancedMoveToHueAndSaturation(enhancedHue, saturation, transitionTime) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_ENHANCED_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID, "uuu", enhancedHue, saturation, transitionTime);
+
+/** @brief Command description for ColorLoopSet
+ *
+ * Command: ColorLoopSet
+ * @param updateFlags ColorLoopUpdateFlags
+ * @param action ColorLoopAction
+ * @param direction ColorLoopDirection
+ * @param time INT16U
+ * @param startHue INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterColorLoopSet(updateFlags, action, direction, time, startHue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_COLOR_LOOP_SET_COMMAND_ID, "uuuuu", updateFlags, action, direction, time, startHue);
+
+/** @brief Command description for StopMoveStep
+ *
+ * Command: StopMoveStep
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStopMoveStep(optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STOP_MOVE_STEP_COMMAND_ID, "uu", optionsMask, optionsOverride);
+
+/** @brief Command description for MoveColorTemperature
+ *
+ * Command: MoveColorTemperature
+ * @param moveMode HueMoveMode
+ * @param rate INT16U
+ * @param colorTemperatureMinimum INT16U
+ * @param colorTemperatureMaximum INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveColorTemperature(moveMode, rate, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, \
+ optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID, "uuuuuu", moveMode, rate, colorTemperatureMinimum, \
+ colorTemperatureMaximum, optionsMask, optionsOverride);
+
+/** @brief Command description for StepColorTemperature
+ *
+ * Command: StepColorTemperature
+ * @param stepMode HueStepMode
+ * @param stepSize INT16U
+ * @param transitionTime INT16U
+ * @param colorTemperatureMinimum INT16U
+ * @param colorTemperatureMaximum INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStepColorTemperature(stepMode, stepSize, transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, \
+ optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID, "uuuuuuu", stepMode, stepSize, transitionTime, \
+ colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
+
+/** @brief Command description for ZoneEnrollResponse
+ *
+ * Command: ZoneEnrollResponse
+ * @param enrollResponseCode IasEnrollResponseCode
+ * @param zoneStatus IasZoneStatus
+ * @param zoneId INT8U
+ * @param extendedStatus BITMAP8
+ * @param zoneId INT8U
+ * @param delay INT16U
+ */
+#define emberAfFillCommandIAS \
+ ZoneClusterZoneEnrollResponse(enrollResponseCode, zoneStatus, zoneId, extendedStatus, zoneId, delay) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID, "uuuuuu", enrollResponseCode, zoneStatus, zoneId, \
+ extendedStatus, zoneId, delay);
+
+/** @brief Command description for InitiateNormalOperationMode
+ *
+ * Command: InitiateNormalOperationMode
+ * @param zoneType IasZoneType
+ * @param manufacturerCode INT16U
+ */
+#define emberAfFillCommandIAS \
+ ZoneClusterInitiateNormalOperationMode(zoneType, manufacturerCode) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_INITIATE_NORMAL_OPERATION_MODE_COMMAND_ID, "uu", zoneType, manufacturerCode);
+
+/** @brief Command description for InitiateNormalOperationModeResponse
+ *
+ * Command: InitiateNormalOperationModeResponse
+ * @param testModeDuration INT8U
+ * @param currentZoneSensitivityLevel INT8U
+ */
+#define emberAfFillCommandIAS \
+ ZoneClusterInitiateNormalOperationModeResponse(testModeDuration, currentZoneSensitivityLevel) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_INITIATE_NORMAL_OPERATION_MODE_RESPONSE_COMMAND_ID, "uu", testModeDuration, currentZoneSensitivityLevel);
+
+/** @brief Command description for InitiateTestModeResponse
+ *
+ * Command: InitiateTestModeResponse
+ */
+#define emberAfFillCommandIAS \
+ ZoneClusterInitiateTestModeResponse() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_INITIATE_TEST_MODE_RESPONSE_COMMAND_ID, "", );
+
+/** @brief Command description for Arm
+ *
+ * Command: Arm
+ * @param armMode IasAceArmMode
+ * @param armNotification IasAceArmNotification
+ * @param armDisarmCode CHAR_STRING
+ * @param zoneId INT8U
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterArm(armMode, armNotification, armDisarmCode, zoneId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ARM_COMMAND_ID, "uuuu", armMode, armNotification, armDisarmCode, zoneId);
+
+/** @brief Command description for Bypass
+ *
+ * Command: Bypass
+ * @param numberOfZones INT8U
+ * @param section0 BITMAP16
+ * @param zoneIds INT8U []
+ * @param zoneIdsLen int
+ * @param section1 BITMAP16
+ * @param armDisarmCode CHAR_STRING
+ * @param section2 BITMAP16
+ * @param section3 BITMAP16
+ * @param section4 BITMAP16
+ * @param section5 BITMAP16
+ * @param section6 BITMAP16
+ * @param section7 BITMAP16
+ * @param section8 BITMAP16
+ * @param section9 BITMAP16
+ * @param section10 BITMAP16
+ * @param section11 BITMAP16
+ * @param section12 BITMAP16
+ * @param section13 BITMAP16
+ * @param section14 BITMAP16
+ * @param section15 BITMAP16
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterBypass(numberOfZones, section0, zoneIds, zoneIdsLen, section1, armDisarmCode, section2, section3, section4, \
+ section5, section6, section7, section8, section9, section10, section11, section12, section13, section14, \
+ section15) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BYPASS_COMMAND_ID, "uubuuuuuuuuuuuuuuuu", numberOfZones, section0, zoneIds, zoneIdsLen, \
+ section1, armDisarmCode, section2, section3, section4, section5, section6, section7, section8, \
+ section9, section10, section11, section12, section13, section14, section15);
+
+/** @brief Command description for Emergency
+ *
+ * Command: Emergency
+ * @param zoneId INT8U
+ * @param zoneType IasZoneType
+ * @param ieeeAddress IEEE_ADDRESS
+ * @param zoneLabel CHAR_STRING
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterEmergency(zoneId, zoneType, ieeeAddress, zoneLabel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EMERGENCY_COMMAND_ID, "uuuu", zoneId, zoneType, ieeeAddress, zoneLabel);
+
+/** @brief Command description for Fire
+ *
+ * Command: Fire
+ * @param zoneId INT8U
+ * @param zoneStatus ENUM16
+ * @param audibleNotification IasAceAudibleNotification
+ * @param zoneLabel CHAR_STRING
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterFire(zoneId, zoneStatus, audibleNotification, zoneLabel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_FIRE_COMMAND_ID, "uuuu", zoneId, zoneStatus, audibleNotification, zoneLabel);
+
+/** @brief Command description for Panic
+ *
+ * Command: Panic
+ * @param panelStatus IasAcePanelStatus
+ * @param secondsRemaining INT8U
+ * @param audibleNotification IasAceAudibleNotification
+ * @param alarmStatus IasAceAlarmStatus
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterPanic(panelStatus, secondsRemaining, audibleNotification, alarmStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PANIC_COMMAND_ID, "uuuu", panelStatus, secondsRemaining, audibleNotification, alarmStatus);
+
+/** @brief Command description for GetZoneIdMap
+ *
+ * Command: GetZoneIdMap
+ * @param panelStatus IasAcePanelStatus
+ * @param secondsRemaining INT8U
+ * @param audibleNotification IasAceAudibleNotification
+ * @param alarmStatus IasAceAlarmStatus
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetZoneIdMap(panelStatus, secondsRemaining, audibleNotification, alarmStatus) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GET_ZONE_ID_MAP_COMMAND_ID, "uuuu", panelStatus, secondsRemaining, audibleNotification, alarmStatus);
+
+/** @brief Command description for GetZoneInformation
+ *
+ * Command: GetZoneInformation
+ * @param zoneId INT8U
+ * @param numberOfZones INT8U
+ * @param zoneIds INT8U []
+ * @param zoneIdsLen int
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetZoneInformation(zoneId, numberOfZones, zoneIds, zoneIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_ZONE_INFORMATION_COMMAND_ID, "uub", zoneId, numberOfZones, zoneIds, zoneIdsLen);
+
+/** @brief Command description for GetPanelStatus
+ *
+ * Command: GetPanelStatus
+ * @param numberOfZones INT8U
+ * @param bypassResult IasAceBypassResult []
+ * @param bypassResultLen int
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetPanelStatus(numberOfZones, bypassResult, bypassResultLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PANEL_STATUS_COMMAND_ID, "ub", numberOfZones, bypassResult, bypassResultLen);
+
+/** @brief Command description for GetBypassedZoneList
+ *
+ * Command: GetBypassedZoneList
+ * @param zoneStatusComplete BOOLEAN
+ * @param numberOfZones INT8U
+ * @param zoneStatusResult IasAceZoneStatusResult []
+ * @param zoneStatusResultLen int
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetBypassedZoneList(zoneStatusComplete, numberOfZones, zoneStatusResult, zoneStatusResultLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_BYPASSED_ZONE_LIST_COMMAND_ID, "uub", zoneStatusComplete, numberOfZones, \
+ zoneStatusResult, zoneStatusResultLen);
+
+/** @brief Command description for GetZoneStatus
+ *
+ * Command: GetZoneStatus
+ * @param startingZoneId INT8U
+ * @param maxNumberOfZoneIds INT8U
+ * @param zoneStatusMaskFlag BOOLEAN
+ * @param zoneStatusMask BITMAP16
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetZoneStatus(startingZoneId, maxNumberOfZoneIds, zoneStatusMaskFlag, zoneStatusMask) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GET_ZONE_STATUS_COMMAND_ID, "uuuu", startingZoneId, maxNumberOfZoneIds, zoneStatusMaskFlag, zoneStatusMask);
+
+/** @brief Command description for StartWarning
+ *
+ * Command: StartWarning
+ * @param warningInfo WarningInfo
+ * @param warningDuration INT16U
+ * @param strobeDutyCycle INT8U
+ * @param strobeLevel ENUM8
+ */
+#define emberAfFillCommandIAS \
+ WDClusterStartWarning(warningInfo, warningDuration, strobeDutyCycle, strobeLevel) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_START_WARNING_COMMAND_ID, "uuuu", warningInfo, warningDuration, strobeDutyCycle, strobeLevel);
+
+/** @brief Command description for Squawk
+ *
+ * Command: Squawk
+ * @param squawkInfo SquawkInfo
+ */
+#define emberAfFillCommandIAS \
+ WDClusterSquawk(squawkInfo) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SQUAWK_COMMAND_ID, "u", squawkInfo);
+
+/** @brief Command description for MatchProtocolAddress
+ *
+ * Command: MatchProtocolAddress
+ * @param protocolAddress OCTET_STRING
+ * @param deviceIeeeAddress IEEE_ADDRESS
+ * @param protocolAddress OCTET_STRING
+ */
+#define emberAfFillCommandGeneric \
+ TunnelClusterMatchProtocolAddress(protocolAddress, deviceIeeeAddress, protocolAddress) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MATCH_PROTOCOL_ADDRESS_COMMAND_ID, "uuu", protocolAddress, deviceIeeeAddress, protocolAddress);
+
+/** @brief Command description for AdvertiseProtocolAddress
+ *
+ * Command: AdvertiseProtocolAddress
+ * @param protocolAddress OCTET_STRING
+ */
+#define emberAfFillCommandGeneric \
+ TunnelClusterAdvertiseProtocolAddress(protocolAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ADVERTISE_PROTOCOL_ADDRESS_COMMAND_ID, "u", protocolAddress);
+
+/** @brief Command description for TransferNpdu
+ *
+ * Command: TransferNpdu
+ * @param npdu DATA8 []
+ * @param npduLen int
+ */
+#define emberAfFillCommandBACnet \
+ Protocol TunnelClusterTransferNpdu(npdu, npduLen) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_NPDU_COMMAND_ID, "b", npdu, npduLen);
+
+/** @brief Command description for TransferAPDU
+ *
+ * Command: TransferAPDU
+ * @param apdu OCTET_STRING
+ */
+#define emberAfFillCommand11073 \
+ Protocol TunnelClusterTransferAPDU(apdu) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_APDU_COMMAND_ID, "u", apdu);
+
+/** @brief Command description for ConnectRequest
+ *
+ * Command: ConnectRequest
+ * @param connectControl 11073ConnectRequestConnectControl
+ * @param idleTimeout INT16U
+ * @param managerTarget IEEE_ADDRESS
+ * @param managerEndpoint INT8U
+ */
+#define emberAfFillCommand11073 \
+ Protocol TunnelClusterConnectRequest(connectControl, idleTimeout, managerTarget, managerEndpoint) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_CONNECT_REQUEST_COMMAND_ID, "uuuu", connectControl, idleTimeout, managerTarget, managerEndpoint);
+
+/** @brief Command description for DisconnectRequest
+ *
+ * Command: DisconnectRequest
+ * @param managerIEEEAddress IEEE_ADDRESS
+ */
+#define emberAfFillCommand11073 \
+ Protocol TunnelClusterDisconnectRequest(managerIEEEAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISCONNECT_REQUEST_COMMAND_ID, "u", managerIEEEAddress);
+
+/** @brief Command description for ConnectStatusNotification
+ *
+ * Command: ConnectStatusNotification
+ * @param connectStatus 11073TunnelConnectionStatus
+ */
+#define emberAfFillCommand11073 \
+ Protocol TunnelClusterConnectStatusNotification(connectStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONNECT_STATUS_NOTIFICATION_COMMAND_ID, "u", connectStatus);
+
+/** @brief Command description for TransferApdu
+ *
+ * Command: TransferApdu
+ * @param apdu OCTET_STRING
+ */
+#define emberAfFillCommandISO \
+ 7816 Protocol TunnelClusterTransferApdu(apdu) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_APDU_COMMAND_ID, "u", apdu);
+
+/** @brief Command description for InsertSmartCard
+ *
+ * Command: InsertSmartCard
+ */
+#define emberAfFillCommandISO \
+ 7816 Protocol TunnelClusterInsertSmartCard() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_INSERT_SMART_CARD_COMMAND_ID, "", );
+
+/** @brief Command description for ExtractSmartCard
+ *
+ * Command: ExtractSmartCard
+ */
+#define emberAfFillCommandISO \
+ 7816 Protocol TunnelClusterExtractSmartCard() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EXTRACT_SMART_CARD_COMMAND_ID, "", );
+
+/** @brief Command description for PublishPrice
+ *
+ * Command: PublishPrice
+ * @param providerId INT32U
+ * @param commandOptions AmiCommandOptions
+ * @param rateLabel OCTET_STRING
+ * @param issuerEventId INT32U
+ * @param currentTime UTC_TIME
+ * @param unitOfMeasure AmiUnitOfMeasure
+ * @param currency INT16U
+ * @param priceTrailingDigitAndPriceTier PriceTrailingDigitAndPriceTier
+ * @param numberOfPriceTiersAndRegisterTier PriceNumberOfPriceTiersAndRegisterTier
+ * @param startTime UTC_TIME
+ * @param durationInMinutes INT16U
+ * @param price INT32U
+ * @param priceRatio INT8U
+ * @param generationPrice INT32U
+ * @param generationPriceRatio INT8U
+ * @param alternateCostDelivered INT32U
+ * @param alternateCostUnit AlternateCostUnit
+ * @param alternateCostTrailingDigit AlternateCostTrailingDigit
+ * @param numberOfBlockThresholds INT8U
+ * @param priceControl PriceControlMask
+ * @param numberOfGenerationTiers INT8U
+ * @param generationTier GenerationTier
+ * @param extendedNumberOfPriceTiers ExtendedNumberOfPriceTiers
+ * @param extendedPriceTier ExtendedPriceTier
+ * @param extendedRegisterTier ExtendedRegisterTier
+ */
+#define emberAfFillCommandPriceClusterPublishPrice( \
+ providerId, commandOptions, rateLabel, issuerEventId, currentTime, unitOfMeasure, currency, priceTrailingDigitAndPriceTier, \
+ numberOfPriceTiersAndRegisterTier, startTime, durationInMinutes, price, priceRatio, generationPrice, generationPriceRatio, \
+ alternateCostDelivered, alternateCostUnit, alternateCostTrailingDigit, numberOfBlockThresholds, priceControl, \
+ numberOfGenerationTiers, generationTier, extendedNumberOfPriceTiers, extendedPriceTier, extendedRegisterTier) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_PRICE_COMMAND_ID, "uuuuuuuuuuuuuuuuuuuuuuuuu", providerId, commandOptions, rateLabel, \
+ issuerEventId, currentTime, unitOfMeasure, currency, priceTrailingDigitAndPriceTier, \
+ numberOfPriceTiersAndRegisterTier, startTime, durationInMinutes, price, priceRatio, generationPrice, \
+ generationPriceRatio, alternateCostDelivered, alternateCostUnit, alternateCostTrailingDigit, \
+ numberOfBlockThresholds, priceControl, numberOfGenerationTiers, generationTier, \
+ extendedNumberOfPriceTiers, extendedPriceTier, extendedRegisterTier);
+
+/** @brief Command description for PublishBlockPeriod
+ *
+ * Command: PublishBlockPeriod
+ * @param providerId INT32U
+ * @param startTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param numberOfEvents INT8U
+ * @param blockPeriodStartTime UTC_TIME
+ * @param blockPeriodDuration INT24U
+ * @param numberOfPriceTiersAndNumberOfBlockThresholds BITMAP8
+ * @param blockPeriodControl BlockPeriodControl
+ * @param blockPeriodDurationType BlockPeriodDurationType
+ * @param tariffType TariffType
+ * @param tariffResolutionPeriod TariffResolutionPeriod
+ */
+#define emberAfFillCommandPriceClusterPublishBlockPeriod( \
+ providerId, startTime, issuerEventId, numberOfEvents, blockPeriodStartTime, blockPeriodDuration, \
+ numberOfPriceTiersAndNumberOfBlockThresholds, blockPeriodControl, blockPeriodDurationType, tariffType, tariffResolutionPeriod) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_BLOCK_PERIOD_COMMAND_ID, "uuuuuuuuuuu", providerId, startTime, issuerEventId, \
+ numberOfEvents, blockPeriodStartTime, blockPeriodDuration, \
+ numberOfPriceTiersAndNumberOfBlockThresholds, blockPeriodControl, blockPeriodDurationType, \
+ tariffType, tariffResolutionPeriod);
+
+/** @brief Command description for PublishConversionFactor
+ *
+ * Command: PublishConversionFactor
+ * @param issuerEventId INT32U
+ * @param providerId INT32U
+ * @param startTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param conversionFactor INT32U
+ * @param priceAckTime UTC_TIME
+ * @param conversionFactorTrailingDigit ConversionFactorTrailingDigit
+ * @param control PriceControlMask
+ */
+#define emberAfFillCommandPriceClusterPublishConversionFactor( \
+ issuerEventId, providerId, startTime, issuerEventId, conversionFactor, priceAckTime, conversionFactorTrailingDigit, control) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CONVERSION_FACTOR_COMMAND_ID, "uuuuuuuu", issuerEventId, providerId, startTime, \
+ issuerEventId, conversionFactor, priceAckTime, conversionFactorTrailingDigit, control);
+
+/** @brief Command description for PublishCalorificValue
+ *
+ * Command: PublishCalorificValue
+ * @param issuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param startTime UTC_TIME
+ * @param numberOfEvents INT8U
+ * @param calorificValue INT32U
+ * @param tariffType TariffType
+ * @param calorificValueUnit CalorificValueUnit
+ * @param calorificValueTrailingDigit CalorificValueTrailingDigit
+ */
+#define emberAfFillCommandPriceClusterPublishCalorificValue(issuerEventId, startTime, startTime, numberOfEvents, calorificValue, \
+ tariffType, calorificValueUnit, calorificValueTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CALORIFIC_VALUE_COMMAND_ID, "uuuuuuuu", issuerEventId, startTime, startTime, \
+ numberOfEvents, calorificValue, tariffType, calorificValueUnit, calorificValueTrailingDigit);
+
+/** @brief Command description for PublishTariffInformation
+ *
+ * Command: PublishTariffInformation
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param issuerTariffId INT32U
+ * @param numberOfCommands INT8U
+ * @param startTime UTC_TIME
+ * @param tariffTypeChargingScheme TariffTypeChargingScheme
+ * @param tariffLabel OCTET_STRING
+ * @param numberOfPriceTiersInUse INT8U
+ * @param numberOfBlockThresholdsInUse INT8U
+ * @param unitOfMeasure AmiUnitOfMeasure
+ * @param currency INT16U
+ * @param priceTrailingDigit PriceTrailingDigit
+ * @param standingCharge INT32U
+ * @param tierBlockMode TierBlockMode
+ * @param blockThresholdMultiplier INT24U
+ * @param blockThresholdDivisor INT24U
+ */
+#define emberAfFillCommandPriceClusterPublishTariffInformation( \
+ providerId, earliestStartTime, issuerEventId, minIssuerEventId, issuerTariffId, numberOfCommands, startTime, \
+ tariffTypeChargingScheme, tariffLabel, numberOfPriceTiersInUse, numberOfBlockThresholdsInUse, unitOfMeasure, currency, \
+ priceTrailingDigit, standingCharge, tierBlockMode, blockThresholdMultiplier, blockThresholdDivisor) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_TARIFF_INFORMATION_COMMAND_ID, "uuuuuuuuuuuuuuuuuu", providerId, earliestStartTime, \
+ issuerEventId, minIssuerEventId, issuerTariffId, numberOfCommands, startTime, \
+ tariffTypeChargingScheme, tariffLabel, numberOfPriceTiersInUse, numberOfBlockThresholdsInUse, \
+ unitOfMeasure, currency, priceTrailingDigit, standingCharge, tierBlockMode, \
+ blockThresholdMultiplier, blockThresholdDivisor);
+
+/** @brief Command description for PublishPriceMatrix
+ *
+ * Command: PublishPriceMatrix
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param issuerTariffId INT32U
+ * @param commandIndex INT8U
+ * @param numberOfCommands INT8U
+ * @param subPayloadControl PriceMatrixSubPayloadControl
+ * @param payload PriceMatrixSubPayload []
+ * @param payloadLen int
+ */
+#define emberAfFillCommandPriceClusterPublishPriceMatrix(providerId, earliestStartTime, issuerEventId, minIssuerEventId, \
+ startTime, numberOfCommands, issuerTariffId, commandIndex, \
+ numberOfCommands, subPayloadControl, payload, payloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_PRICE_MATRIX_COMMAND_ID, "uuuuuuuuuub", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, startTime, numberOfCommands, issuerTariffId, commandIndex, numberOfCommands, \
+ subPayloadControl, payload, payloadLen);
+
+/** @brief Command description for PublishBlockThresholds
+ *
+ * Command: PublishBlockThresholds
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param issuerTariffId INT32U
+ * @param tariffType TariffType
+ * @param commandIndex INT8U
+ * @param numberOfCommands INT8U
+ * @param subPayloadControl BlockThresholdSubPayloadControl
+ * @param payload BlockThresholdSubPayload []
+ * @param payloadLen int
+ */
+#define emberAfFillCommandPriceClusterPublishBlockThresholds( \
+ providerId, earliestStartTime, issuerEventId, minIssuerEventId, startTime, numberOfCommands, issuerTariffId, tariffType, \
+ commandIndex, numberOfCommands, subPayloadControl, payload, payloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_BLOCK_THRESHOLDS_COMMAND_ID, "uuuuuuuuuuub", providerId, earliestStartTime, \
+ issuerEventId, minIssuerEventId, startTime, numberOfCommands, issuerTariffId, tariffType, \
+ commandIndex, numberOfCommands, subPayloadControl, payload, payloadLen);
+
+/** @brief Command description for PublishCO2Value
+ *
+ * Command: PublishCO2Value
+ * @param providerId INT32U
+ * @param issuerTariffId INT32U
+ * @param issuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param tariffType TariffType
+ * @param cO2Value INT32U
+ * @param cO2ValueUnit CO2Unit
+ * @param cO2ValueTrailingDigit CO2TrailingDigit
+ */
+#define emberAfFillCommandPriceClusterPublishCO2Value(providerId, issuerTariffId, issuerEventId, startTime, tariffType, cO2Value, \
+ cO2ValueUnit, cO2ValueTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CO2_VALUE_COMMAND_ID, "uuuuuuuu", providerId, issuerTariffId, issuerEventId, startTime, \
+ tariffType, cO2Value, cO2ValueUnit, cO2ValueTrailingDigit);
+
+/** @brief Command description for PublishTierLabels
+ *
+ * Command: PublishTierLabels
+ * @param providerId INT32U
+ * @param issuerTariffId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerTariffId INT32U
+ * @param commandIndex INT8U
+ * @param numberOfCommands INT8U
+ * @param numberOfLabels INT8U
+ * @param tierLabelsPayload INT8U []
+ * @param tierLabelsPayloadLen int
+ */
+#define emberAfFillCommandPriceClusterPublishTierLabels(providerId, issuerTariffId, issuerEventId, issuerTariffId, commandIndex, \
+ numberOfCommands, numberOfLabels, tierLabelsPayload, tierLabelsPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_TIER_LABELS_COMMAND_ID, "uuuuuuub", providerId, issuerTariffId, issuerEventId, \
+ issuerTariffId, commandIndex, numberOfCommands, numberOfLabels, tierLabelsPayload, \
+ tierLabelsPayloadLen);
+
+/** @brief Command description for PublishBillingPeriod
+ *
+ * Command: PublishBillingPeriod
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param billingPeriodStartTime UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param billingPeriodDuration BillingPeriodDuration
+ * @param tariffType TariffType
+ * @param billingPeriodDurationType BillingPeriodDurationType
+ * @param tariffType TariffType
+ */
+#define emberAfFillCommandPriceClusterPublishBillingPeriod(providerId, earliestStartTime, issuerEventId, minIssuerEventId, \
+ billingPeriodStartTime, numberOfCommands, billingPeriodDuration, \
+ tariffType, billingPeriodDurationType, tariffType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_BILLING_PERIOD_COMMAND_ID, "uuuuuuuuuu", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, billingPeriodStartTime, numberOfCommands, billingPeriodDuration, tariffType, \
+ billingPeriodDurationType, tariffType);
+
+/** @brief Command description for PublishConsolidatedBill
+ *
+ * Command: PublishConsolidatedBill
+ * @param providerId INT32U
+ * @param issuerTariffId INT32U
+ * @param issuerEventId INT32U
+ * @param billingPeriodStartTime UTC_TIME
+ * @param billingPeriodDuration BillingPeriodDuration
+ * @param billingPeriodDurationType BillingPeriodDurationType
+ * @param tariffType TariffType
+ * @param consolidatedBill INT32U
+ * @param currency INT16U
+ * @param billTrailingDigit BillTrailingDigit
+ */
+#define emberAfFillCommandPriceClusterPublishConsolidatedBill(providerId, issuerTariffId, issuerEventId, billingPeriodStartTime, \
+ billingPeriodDuration, billingPeriodDurationType, tariffType, \
+ consolidatedBill, currency, billTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CONSOLIDATED_BILL_COMMAND_ID, "uuuuuuuuuu", providerId, issuerTariffId, issuerEventId, \
+ billingPeriodStartTime, billingPeriodDuration, billingPeriodDurationType, tariffType, \
+ consolidatedBill, currency, billTrailingDigit);
+
+/** @brief Command description for PublishCppEvent
+ *
+ * Command: PublishCppEvent
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param durationInMinutes INT16U
+ * @param tariffType TariffType
+ * @param tariffType TariffType
+ * @param cppPriceTier CppPriceTier
+ * @param cppAuth PublishCppEventCppAuth
+ */
+#define emberAfFillCommandPriceClusterPublishCppEvent(providerId, earliestStartTime, issuerEventId, minIssuerEventId, startTime, \
+ numberOfCommands, durationInMinutes, tariffType, tariffType, cppPriceTier, \
+ cppAuth) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CPP_EVENT_COMMAND_ID, "uuuuuuuuuuu", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, startTime, numberOfCommands, durationInMinutes, tariffType, tariffType, \
+ cppPriceTier, cppAuth);
+
+/** @brief Command description for PublishCreditPayment
+ *
+ * Command: PublishCreditPayment
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param creditPaymentDueDate UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param creditPaymentOverDueAmount INT32U
+ * @param tariffType TariffType
+ * @param creditPaymentStatus CreditPaymentStatus
+ * @param creditPayment INT32U
+ * @param creditPaymentDate UTC_TIME
+ * @param creditPaymentRef OCTET_STRING
+ */
+#define emberAfFillCommandPriceClusterPublishCreditPayment( \
+ providerId, earliestStartTime, issuerEventId, minIssuerEventId, creditPaymentDueDate, numberOfCommands, \
+ creditPaymentOverDueAmount, tariffType, creditPaymentStatus, creditPayment, creditPaymentDate, creditPaymentRef) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CREDIT_PAYMENT_COMMAND_ID, "uuuuuuuuuuuu", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, creditPaymentDueDate, numberOfCommands, creditPaymentOverDueAmount, tariffType, \
+ creditPaymentStatus, creditPayment, creditPaymentDate, creditPaymentRef);
+
+/** @brief Command description for PublishCurrencyConversion
+ *
+ * Command: PublishCurrencyConversion
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerEventId INT32U
+ * @param cppAuth CppEventResponseCppAuth
+ * @param startTime UTC_TIME
+ * @param oldCurrency INT16U
+ * @param newCurrency INT16U
+ * @param conversionFactor INT32U
+ * @param conversionFactorTrailingDigit ConversionFactorTrailingDigit
+ * @param currencyChangeControlFlags CurrencyChangeControl
+ */
+#define emberAfFillCommandPriceClusterPublishCurrencyConversion(providerId, issuerEventId, issuerEventId, cppAuth, startTime, \
+ oldCurrency, newCurrency, conversionFactor, \
+ conversionFactorTrailingDigit, currencyChangeControlFlags) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CURRENCY_CONVERSION_COMMAND_ID, "uuuuuuuuuu", providerId, issuerEventId, issuerEventId, \
+ cppAuth, startTime, oldCurrency, newCurrency, conversionFactor, conversionFactorTrailingDigit, \
+ currencyChangeControlFlags);
+
+/** @brief Command description for CancelTariff
+ *
+ * Command: CancelTariff
+ * @param providerId INT32U
+ * @param latestEndTime UTC_TIME
+ * @param issuerTariffId INT32U
+ * @param numberOfRecords INT8U
+ * @param tariffType TariffType
+ */
+#define emberAfFillCommandPriceClusterCancelTariff(providerId, latestEndTime, issuerTariffId, numberOfRecords, tariffType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_TARIFF_COMMAND_ID, "uuuuu", providerId, latestEndTime, issuerTariffId, numberOfRecords, \
+ tariffType);
+
+/** @brief Command description for GetCurrencyConversionCommand
+ *
+ * Command: GetCurrencyConversionCommand
+ */
+#define emberAfFillCommandPriceClusterGetCurrencyConversionCommand() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CURRENCY_CONVERSION_COMMAND_COMMAND_ID, "", );
+
+/** @brief Command description for GetTariffCancellation
+ *
+ * Command: GetTariffCancellation
+ */
+#define emberAfFillCommandPriceClusterGetTariffCancellation() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_TARIFF_CANCELLATION_COMMAND_ID, "", );
+
+/** @brief Command description for LoadControlEvent
+ *
+ * Command: LoadControlEvent
+ * @param issuerEventId INT32U
+ * @param issuerEventId INT32U
+ * @param deviceClass AmiDeviceClass
+ * @param eventStatus AmiEventStatus
+ * @param utilityEnrollmentGroup INT8U
+ * @param eventStatusTime UTC_TIME
+ * @param startTime UTC_TIME
+ * @param criticalityLevelApplied AmiCriticalityLevel
+ * @param durationInMinutes INT16U
+ * @param coolingTemperatureSetPointApplied INT16U
+ * @param criticalityLevel AmiCriticalityLevel
+ * @param heatingTemperatureSetPointApplied INT16U
+ * @param coolingTemperatureOffset INT8U
+ * @param averageLoadAdjustmentPercentageApplied INT8S
+ * @param heatingTemperatureOffset INT8U
+ * @param dutyCycleApplied INT8U
+ * @param coolingTemperatureSetPoint INT16S
+ * @param eventControl AmiEventControl
+ * @param heatingTemperatureSetPoint INT16S
+ * @param signatureType SignatureType
+ * @param averageLoadAdjustmentPercentage INT8S
+ * @param signature Signature
+ * @param dutyCycle INT8U
+ * @param eventControl AmiEventControl
+ */
+#define emberAfFillCommandDemand \
+ Response and Load ControlClusterLoadControlEvent( \
+ issuerEventId, issuerEventId, deviceClass, eventStatus, utilityEnrollmentGroup, eventStatusTime, startTime, \
+ criticalityLevelApplied, durationInMinutes, coolingTemperatureSetPointApplied, criticalityLevel, \
+ heatingTemperatureSetPointApplied, coolingTemperatureOffset, averageLoadAdjustmentPercentageApplied, \
+ heatingTemperatureOffset, dutyCycleApplied, coolingTemperatureSetPoint, eventControl, heatingTemperatureSetPoint, \
+ signatureType, averageLoadAdjustmentPercentage, signature, dutyCycle, eventControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LOAD_CONTROL_EVENT_COMMAND_ID, "uuuuuuuuuuuuuuuuuuuuuuuu", issuerEventId, issuerEventId, \
+ deviceClass, eventStatus, utilityEnrollmentGroup, eventStatusTime, startTime, \
+ criticalityLevelApplied, durationInMinutes, coolingTemperatureSetPointApplied, criticalityLevel, \
+ heatingTemperatureSetPointApplied, coolingTemperatureOffset, \
+ averageLoadAdjustmentPercentageApplied, heatingTemperatureOffset, dutyCycleApplied, \
+ coolingTemperatureSetPoint, eventControl, heatingTemperatureSetPoint, signatureType, \
+ averageLoadAdjustmentPercentage, signature, dutyCycle, eventControl);
+
+/** @brief Command description for CancelLoadControlEvent
+ *
+ * Command: CancelLoadControlEvent
+ * @param issuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param deviceClass AmiDeviceClass
+ * @param numberOfEvents INT8U
+ * @param utilityEnrollmentGroup INT8U
+ * @param issuerEventId INT32U
+ * @param cancelControl AmiCancelControl
+ * @param effectiveTime UTC_TIME
+ */
+#define emberAfFillCommandDemand \
+ Response and Load ControlClusterCancelLoadControlEvent(issuerEventId, startTime, deviceClass, numberOfEvents, \
+ utilityEnrollmentGroup, issuerEventId, cancelControl, effectiveTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_LOAD_CONTROL_EVENT_COMMAND_ID, "uuuuuuuu", issuerEventId, startTime, deviceClass, \
+ numberOfEvents, utilityEnrollmentGroup, issuerEventId, cancelControl, effectiveTime);
+
+/** @brief Command description for CancelAllLoadControlEvents
+ *
+ * Command: CancelAllLoadControlEvents
+ * @param cancelControl AmiCancelControl
+ */
+#define emberAfFillCommandDemand \
+ Response and Load ControlClusterCancelAllLoadControlEvents(cancelControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_ALL_LOAD_CONTROL_EVENTS_COMMAND_ID, "u", cancelControl);
+
+/** @brief Command description for GetProfileResponse
+ *
+ * Command: GetProfileResponse
+ * @param endTime UTC_TIME
+ * @param intervalChannel AmiIntervalChannel
+ * @param status AmiGetProfileStatus
+ * @param endTime UTC_TIME
+ * @param profileIntervalPeriod AmiIntervalPeriod
+ * @param numberOfPeriods INT8U
+ * @param numberOfPeriodsDelivered INT8U
+ * @param intervals INT24U []
+ * @param intervalsLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterGetProfileResponse(endTime, intervalChannel, status, endTime, profileIntervalPeriod, numberOfPeriods, \
+ numberOfPeriodsDelivered, intervals, intervalsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PROFILE_RESPONSE_COMMAND_ID, "uuuuuuub", endTime, intervalChannel, status, endTime, \
+ profileIntervalPeriod, numberOfPeriods, numberOfPeriodsDelivered, intervals, intervalsLen);
+
+/** @brief Command description for RequestMirror
+ *
+ * Command: RequestMirror
+ * @param endpointId INT16U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterRequestMirror(endpointId) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_MIRROR_COMMAND_ID, "u", endpointId);
+
+/** @brief Command description for RemoveMirror
+ *
+ * Command: RemoveMirror
+ * @param endpointId INT16U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterRemoveMirror(endpointId) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_MIRROR_COMMAND_ID, "u", endpointId);
+
+/** @brief Command description for RequestFastPollModeResponse
+ *
+ * Command: RequestFastPollModeResponse
+ * @param appliedUpdatePeriod INT8U
+ * @param fastPollUpdatePeriod INT8U
+ * @param fastPollModeEndtime UTC_TIME
+ * @param duration INT8U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterRequestFastPollModeResponse(appliedUpdatePeriod, fastPollUpdatePeriod, fastPollModeEndtime, duration) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_FAST_POLL_MODE_RESPONSE_COMMAND_ID, "uuuu", appliedUpdatePeriod, \
+ fastPollUpdatePeriod, fastPollModeEndtime, duration);
+
+/** @brief Command description for ScheduleSnapshotResponse
+ *
+ * Command: ScheduleSnapshotResponse
+ * @param issuerEventId INT32U
+ * @param issuerEventId INT32U
+ * @param snapshotResponsePayload SnapshotResponsePayload []
+ * @param snapshotResponsePayloadLen int
+ * @param commandIndex INT8U
+ * @param commandCount INT8U
+ * @param snapshotSchedulePayload SnapshotSchedulePayload []
+ * @param snapshotSchedulePayloadLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterScheduleSnapshotResponse(issuerEventId, issuerEventId, snapshotResponsePayload, snapshotResponsePayloadLen, \
+ commandIndex, commandCount, snapshotSchedulePayload, snapshotSchedulePayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SCHEDULE_SNAPSHOT_RESPONSE_COMMAND_ID, "uubuub", issuerEventId, issuerEventId, \
+ snapshotResponsePayload, snapshotResponsePayloadLen, commandIndex, commandCount, \
+ snapshotSchedulePayload, snapshotSchedulePayloadLen);
+
+/** @brief Command description for TakeSnapshotResponse
+ *
+ * Command: TakeSnapshotResponse
+ * @param snapshotId INT32U
+ * @param snapshotCause SnapshotCause
+ * @param snapshotConfirmation SnapshotConfirmation
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterTakeSnapshotResponse(snapshotId, snapshotCause, snapshotConfirmation) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TAKE_SNAPSHOT_RESPONSE_COMMAND_ID, "uuu", snapshotId, snapshotCause, snapshotConfirmation);
+
+/** @brief Command description for PublishSnapshot
+ *
+ * Command: PublishSnapshot
+ * @param snapshotId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param snapshotTime UTC_TIME
+ * @param latestEndTime UTC_TIME
+ * @param totalSnapshotsFound INT8U
+ * @param snapshotOffset INT8U
+ * @param commandIndex INT8U
+ * @param snapshotCause SnapshotCause
+ * @param totalCommands INT8U
+ * @param snapshotCause SnapshotCause
+ * @param snapshotPayloadType SnapshotPayloadType
+ * @param snapshotPayload INT8U []
+ * @param snapshotPayloadLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterPublishSnapshot(snapshotId, earliestStartTime, snapshotTime, latestEndTime, totalSnapshotsFound, \
+ snapshotOffset, commandIndex, snapshotCause, totalCommands, snapshotCause, snapshotPayloadType, \
+ snapshotPayload, snapshotPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_SNAPSHOT_COMMAND_ID, "uuuuuuuuuuub", snapshotId, earliestStartTime, snapshotTime, \
+ latestEndTime, totalSnapshotsFound, snapshotOffset, commandIndex, snapshotCause, totalCommands, \
+ snapshotCause, snapshotPayloadType, snapshotPayload, snapshotPayloadLen);
+
+/** @brief Command description for GetSampledDataResponse
+ *
+ * Command: GetSampledDataResponse
+ * @param sampleId INT16U
+ * @param issuerEventId INT32U
+ * @param sampleStartTime UTC_TIME
+ * @param startSamplingTime UTC_TIME
+ * @param sampleType SampleType
+ * @param sampleType SampleType
+ * @param sampleRequestInterval INT16U
+ * @param sampleRequestInterval INT16U
+ * @param numberOfSamples INT16U
+ * @param maxNumberOfSamples INT16U
+ * @param samples INT24U []
+ * @param samplesLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterGetSampledDataResponse(sampleId, issuerEventId, sampleStartTime, startSamplingTime, sampleType, sampleType, \
+ sampleRequestInterval, sampleRequestInterval, numberOfSamples, maxNumberOfSamples, \
+ samples, samplesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SAMPLED_DATA_RESPONSE_COMMAND_ID, "uuuuuuuuuub", sampleId, issuerEventId, \
+ sampleStartTime, startSamplingTime, sampleType, sampleType, sampleRequestInterval, \
+ sampleRequestInterval, numberOfSamples, maxNumberOfSamples, samples, samplesLen);
+
+/** @brief Command description for ConfigureMirror
+ *
+ * Command: ConfigureMirror
+ * @param issuerEventId INT32U
+ * @param sampleId INT16U
+ * @param reportingInterval INT24U
+ * @param earliestSampleTime UTC_TIME
+ * @param mirrorNotificationReporting BOOLEAN
+ * @param sampleType SampleType
+ * @param notificationScheme INT8U
+ * @param numberOfSamples INT16U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterConfigureMirror(issuerEventId, sampleId, reportingInterval, earliestSampleTime, mirrorNotificationReporting, \
+ sampleType, notificationScheme, numberOfSamples) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_MIRROR_COMMAND_ID, "uuuuuuuu", issuerEventId, sampleId, reportingInterval, \
+ earliestSampleTime, mirrorNotificationReporting, sampleType, notificationScheme, \
+ numberOfSamples);
+
+/** @brief Command description for ConfigureNotificationScheme
+ *
+ * Command: ConfigureNotificationScheme
+ * @param issuerEventId INT32U
+ * @param notificationScheme INT8U
+ * @param notificationScheme INT8U
+ * @param notificationFlags BITMAP32 []
+ * @param notificationFlagsLen int
+ * @param notificationFlagOrder BITMAP32
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterConfigureNotificationScheme(issuerEventId, notificationScheme, notificationScheme, notificationFlags, \
+ notificationFlagsLen, notificationFlagOrder) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_NOTIFICATION_SCHEME_COMMAND_ID, "uuubu", issuerEventId, notificationScheme, \
+ notificationScheme, notificationFlags, notificationFlagsLen, notificationFlagOrder);
+
+/** @brief Command description for ConfigureNotificationFlags
+ *
+ * Command: ConfigureNotificationFlags
+ * @param issuerEventId INT32U
+ * @param providerId INT32U
+ * @param notificationScheme INT8U
+ * @param issuerEventId INT32U
+ * @param notificationFlagAttributeId INT16U
+ * @param clusterId INT16U
+ * @param manufacturerCode INT16U
+ * @param numberOfCommands INT8U
+ * @param commandIds INT8U []
+ * @param commandIdsLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterConfigureNotificationFlags(issuerEventId, providerId, notificationScheme, issuerEventId, \
+ notificationFlagAttributeId, clusterId, manufacturerCode, numberOfCommands, \
+ commandIds, commandIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_NOTIFICATION_FLAGS_COMMAND_ID, "uuuuuuuub", issuerEventId, providerId, \
+ notificationScheme, issuerEventId, notificationFlagAttributeId, clusterId, manufacturerCode, \
+ numberOfCommands, commandIds, commandIdsLen);
+
+/** @brief Command description for GetNotifiedMessage
+ *
+ * Command: GetNotifiedMessage
+ * @param notificationScheme INT8U
+ * @param providerId INT32U
+ * @param notificationFlagAttributeId INT16U
+ * @param issuerEventId INT32U
+ * @param notificationFlagsN BITMAP32
+ * @param requestDateTime UTC_TIME
+ * @param implementationDateTime UTC_TIME
+ * @param proposedSupplyStatus MeteringSupplyStatus
+ * @param supplyControlBits SupplyControlBits
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterGetNotifiedMessage(notificationScheme, providerId, notificationFlagAttributeId, issuerEventId, \
+ notificationFlagsN, requestDateTime, implementationDateTime, proposedSupplyStatus, \
+ supplyControlBits) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_NOTIFIED_MESSAGE_COMMAND_ID, "uuuuuuuuu", notificationScheme, providerId, \
+ notificationFlagAttributeId, issuerEventId, notificationFlagsN, requestDateTime, \
+ implementationDateTime, proposedSupplyStatus, supplyControlBits);
+
+/** @brief Command description for SupplyStatusResponse
+ *
+ * Command: SupplyStatusResponse
+ * @param providerId INT32U
+ * @param proposedSupplyStatus ProposedSupplyStatus
+ * @param issuerEventId INT32U
+ * @param implementationDateTime UTC_TIME
+ * @param supplyStatus MeteringSupplyStatus
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterSupplyStatusResponse(providerId, proposedSupplyStatus, issuerEventId, implementationDateTime, supplyStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SUPPLY_STATUS_RESPONSE_COMMAND_ID, "uuuuu", providerId, proposedSupplyStatus, issuerEventId, \
+ implementationDateTime, supplyStatus);
+
+/** @brief Command description for StartSamplingResponse
+ *
+ * Command: StartSamplingResponse
+ * @param sampleId INT16U
+ * @param issuerEventId INT32U
+ * @param supplyTamperState SupplyStatus
+ * @param supplyDepletionState SupplyStatus
+ * @param supplyUncontrolledFlowState SupplyStatus
+ * @param loadLimitSupplyState SupplyStatus
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterStartSamplingResponse(sampleId, issuerEventId, supplyTamperState, supplyDepletionState, \
+ supplyUncontrolledFlowState, loadLimitSupplyState) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_SAMPLING_RESPONSE_COMMAND_ID, "uuuuuu", sampleId, issuerEventId, supplyTamperState, \
+ supplyDepletionState, supplyUncontrolledFlowState, loadLimitSupplyState);
+
+/** @brief Command description for SetUncontrolledFlowThreshold
+ *
+ * Command: SetUncontrolledFlowThreshold
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param uncontrolledFlowThreshold INT16U
+ * @param unitOfMeasure AmiUnitOfMeasure
+ * @param multiplier INT16U
+ * @param divisor INT16U
+ * @param stabilisationPeriod INT8U
+ * @param measurementPeriod INT16U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterSetUncontrolledFlowThreshold(providerId, issuerEventId, uncontrolledFlowThreshold, unitOfMeasure, multiplier, \
+ divisor, stabilisationPeriod, measurementPeriod) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_UNCONTROLLED_FLOW_THRESHOLD_COMMAND_ID, "uuuuuuuu", providerId, issuerEventId, \
+ uncontrolledFlowThreshold, unitOfMeasure, multiplier, divisor, stabilisationPeriod, \
+ measurementPeriod);
+
+/** @brief Command description for GetLastMessage
+ *
+ * Command: GetLastMessage
+ * @param messageId INT32U
+ * @param messageControl MessagingControlMask
+ * @param startTime UTC_TIME
+ * @param durationInMinutes INT16U
+ * @param message CHAR_STRING
+ * @param optionalExtendedMessageControl MessagingExtendedControlMask
+ */
+#define emberAfFillCommandMessagingClusterGetLastMessage(messageId, messageControl, startTime, durationInMinutes, message, \
+ optionalExtendedMessageControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_LAST_MESSAGE_COMMAND_ID, "uuuuuu", messageId, messageControl, startTime, durationInMinutes, \
+ message, optionalExtendedMessageControl);
+
+/** @brief Command description for CancelMessage
+ *
+ * Command: CancelMessage
+ * @param messageId INT32U
+ * @param messageId INT32U
+ * @param messageControl MessagingControlMask
+ * @param confirmationTime UTC_TIME
+ * @param messageConfirmationControl BITMAP8
+ * @param messageResponse OCTET_STRING
+ */
+#define emberAfFillCommandMessagingClusterCancelMessage(messageId, messageId, messageControl, confirmationTime, \
+ messageConfirmationControl, messageResponse) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_MESSAGE_COMMAND_ID, "uuuuuu", messageId, messageId, messageControl, confirmationTime, \
+ messageConfirmationControl, messageResponse);
+
+/** @brief Command description for DisplayProtectedMessage
+ *
+ * Command: DisplayProtectedMessage
+ * @param messageId INT32U
+ * @param earliestImplementationTime UTC_TIME
+ * @param messageControl MessagingControlMask
+ * @param startTime UTC_TIME
+ * @param durationInMinutes INT16U
+ * @param message CHAR_STRING
+ * @param optionalExtendedMessageControl MessagingExtendedControlMask
+ */
+#define emberAfFillCommandMessagingClusterDisplayProtectedMessage( \
+ messageId, earliestImplementationTime, messageControl, startTime, durationInMinutes, message, optionalExtendedMessageControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISPLAY_PROTECTED_MESSAGE_COMMAND_ID, "uuuuuuu", messageId, earliestImplementationTime, \
+ messageControl, startTime, durationInMinutes, message, optionalExtendedMessageControl);
+
+/** @brief Command description for CancelAllMessages
+ *
+ * Command: CancelAllMessages
+ * @param implementationDateTime UTC_TIME
+ */
+#define emberAfFillCommandMessagingClusterCancelAllMessages(implementationDateTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_ALL_MESSAGES_COMMAND_ID, "u", implementationDateTime);
+
+/** @brief Command description for RequestTunnel
+ *
+ * Command: RequestTunnel
+ * @param protocolId INT8U
+ * @param tunnelId INT16U
+ * @param manufacturerCode INT16U
+ * @param tunnelStatus TunnelingTunnelStatus
+ * @param flowControlSupport BOOLEAN
+ * @param maximumIncomingTransferSize INT16U
+ * @param maximumIncomingTransferSize INT16U
+ */
+#define emberAfFillCommandTunnelingClusterRequestTunnel(protocolId, tunnelId, manufacturerCode, tunnelStatus, flowControlSupport, \
+ maximumIncomingTransferSize, maximumIncomingTransferSize) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_TUNNEL_COMMAND_ID, "uuuuuuu", protocolId, tunnelId, manufacturerCode, tunnelStatus, \
+ flowControlSupport, maximumIncomingTransferSize, maximumIncomingTransferSize);
+
+/** @brief Command description for CloseTunnel
+ *
+ * Command: CloseTunnel
+ * @param tunnelId INT16U
+ * @param tunnelId INT16U
+ * @param data INT8U []
+ * @param dataLen int
+ */
+#define emberAfFillCommandTunnelingClusterCloseTunnel(tunnelId, tunnelId, data, dataLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLOSE_TUNNEL_COMMAND_ID, "uub", tunnelId, tunnelId, data, dataLen);
+
+/** @brief Command description for TransferDataClientToServer
+ *
+ * Command: TransferDataClientToServer
+ * @param tunnelId INT16U
+ * @param tunnelId INT16U
+ * @param data INT8U []
+ * @param dataLen int
+ * @param transferDataStatus TunnelingTransferDataStatus
+ */
+#define emberAfFillCommandTunnelingClusterTransferDataClientToServer(tunnelId, tunnelId, data, dataLen, transferDataStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID, "uubu", tunnelId, tunnelId, data, dataLen, \
+ transferDataStatus);
+
+/** @brief Command description for TransferDataErrorClientToServer
+ *
+ * Command: TransferDataErrorClientToServer
+ * @param tunnelId INT16U
+ * @param tunnelId INT16U
+ * @param transferDataStatus TunnelingTransferDataStatus
+ * @param numberOfBytesLeft INT16U
+ */
+#define emberAfFillCommandTunnelingClusterTransferDataErrorClientToServer(tunnelId, tunnelId, transferDataStatus, \
+ numberOfBytesLeft) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_DATA_ERROR_CLIENT_TO_SERVER_COMMAND_ID, "uuuu", tunnelId, tunnelId, transferDataStatus, \
+ numberOfBytesLeft);
+
+/** @brief Command description for AckTransferDataClientToServer
+ *
+ * Command: AckTransferDataClientToServer
+ * @param tunnelId INT16U
+ * @param tunnelId INT16U
+ * @param numberOfBytesLeft INT16U
+ * @param numberOfOctetsLeft INT16U
+ */
+#define emberAfFillCommandTunnelingClusterAckTransferDataClientToServer(tunnelId, tunnelId, numberOfBytesLeft, numberOfOctetsLeft) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ACK_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID, "uuuu", tunnelId, tunnelId, numberOfBytesLeft, \
+ numberOfOctetsLeft);
+
+/** @brief Command description for ReadyDataClientToServer
+ *
+ * Command: ReadyDataClientToServer
+ * @param tunnelId INT16U
+ * @param protocolListComplete BOOLEAN
+ * @param numberOfOctetsLeft INT16U
+ * @param protocolCount INT8U
+ * @param protocolList Protocol []
+ * @param protocolListLen int
+ */
+#define emberAfFillCommandTunnelingClusterReadyDataClientToServer(tunnelId, protocolListComplete, numberOfOctetsLeft, \
+ protocolCount, protocolList, protocolListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READY_DATA_CLIENT_TO_SERVER_COMMAND_ID, "uuuub", tunnelId, protocolListComplete, \
+ numberOfOctetsLeft, protocolCount, protocolList, protocolListLen);
+
+/** @brief Command description for GetSupportedTunnelProtocols
+ *
+ * Command: GetSupportedTunnelProtocols
+ * @param protocolOffset INT8U
+ * @param tunnelId INT16U
+ */
+#define emberAfFillCommandTunnelingClusterGetSupportedTunnelProtocols(protocolOffset, tunnelId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_ID, "uu", protocolOffset, tunnelId);
+
+/** @brief Command description for SelectAvailableEmergencyCredit
+ *
+ * Command: SelectAvailableEmergencyCredit
+ * @param commandIssueDateTime UTC_TIME
+ * @param originatingDevice OriginatingDevice
+ * @param siteId OCTET_STRING
+ * @param meterSerialNumber OCTET_STRING
+ */
+#define emberAfFillCommandPrepaymentClusterSelectAvailableEmergencyCredit(commandIssueDateTime, originatingDevice, siteId, \
+ meterSerialNumber) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_COMMAND_ID, "uuuu", commandIssueDateTime, originatingDevice, \
+ siteId, meterSerialNumber);
+
+/** @brief Command description for PublishPrepaySnapshot
+ *
+ * Command: PublishPrepaySnapshot
+ * @param snapshotId INT32U
+ * @param snapshotTime UTC_TIME
+ * @param totalSnapshotsFound INT8U
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param snapshotCause PrepaySnapshotPayloadCause
+ * @param snapshotPayloadType PrepaySnapshotPayloadType
+ * @param snapshotPayload INT8U []
+ * @param snapshotPayloadLen int
+ */
+#define emberAfFillCommandPrepaymentClusterPublishPrepaySnapshot(snapshotId, snapshotTime, totalSnapshotsFound, commandIndex, \
+ totalNumberOfCommands, snapshotCause, snapshotPayloadType, \
+ snapshotPayload, snapshotPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_PREPAY_SNAPSHOT_COMMAND_ID, "uuuuuuub", snapshotId, snapshotTime, totalSnapshotsFound, \
+ commandIndex, totalNumberOfCommands, snapshotCause, snapshotPayloadType, snapshotPayload, \
+ snapshotPayloadLen);
+
+/** @brief Command description for ChangeDebt
+ *
+ * Command: ChangeDebt
+ * @param issuerEventId INT32U
+ * @param friendlyCredit FriendlyCredit
+ * @param debtLabel OCTET_STRING
+ * @param friendlyCreditCalendarId INT32U
+ * @param debtAmount INT32U
+ * @param emergencyCreditLimit INT32U
+ * @param debtRecoveryMethod DebtRecoveryMethod
+ * @param emergencyCreditThreshold INT32U
+ * @param debtAmountType DebtAmountType
+ * @param debtRecoveryStartTime UTC_TIME
+ * @param debtRecoveryCollectionTime INT16U
+ * @param debtRecoveryFrequency DebtRecoveryFrequency
+ * @param debtRecoveryAmount INT32U
+ * @param debtRecoveryBalancePercentage INT16U
+ */
+#define emberAfFillCommandPrepaymentClusterChangeDebt( \
+ issuerEventId, friendlyCredit, debtLabel, friendlyCreditCalendarId, debtAmount, emergencyCreditLimit, debtRecoveryMethod, \
+ emergencyCreditThreshold, debtAmountType, debtRecoveryStartTime, debtRecoveryCollectionTime, debtRecoveryFrequency, \
+ debtRecoveryAmount, debtRecoveryBalancePercentage) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CHANGE_DEBT_COMMAND_ID, "uuuuuuuuuuuuuu", issuerEventId, friendlyCredit, debtLabel, \
+ friendlyCreditCalendarId, debtAmount, emergencyCreditLimit, debtRecoveryMethod, \
+ emergencyCreditThreshold, debtAmountType, debtRecoveryStartTime, debtRecoveryCollectionTime, \
+ debtRecoveryFrequency, debtRecoveryAmount, debtRecoveryBalancePercentage);
+
+/** @brief Command description for EmergencyCreditSetup
+ *
+ * Command: EmergencyCreditSetup
+ * @param issuerEventId INT32U
+ * @param resultType ResultType
+ * @param startTime UTC_TIME
+ * @param topUpValue INT32U
+ * @param emergencyCreditLimit INT32U
+ * @param sourceOfTopUp OriginatingDevice
+ * @param emergencyCreditThreshold INT32U
+ * @param creditRemaining INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterEmergencyCreditSetup(issuerEventId, resultType, startTime, topUpValue, \
+ emergencyCreditLimit, sourceOfTopUp, emergencyCreditThreshold, \
+ creditRemaining) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EMERGENCY_CREDIT_SETUP_COMMAND_ID, "uuuuuuuu", issuerEventId, resultType, startTime, topUpValue, \
+ emergencyCreditLimit, sourceOfTopUp, emergencyCreditThreshold, creditRemaining);
+
+/** @brief Command description for ConsumerTopUp
+ *
+ * Command: ConsumerTopUp
+ * @param originatingDevice OriginatingDevice
+ * @param topUpCode OCTET_STRING
+ */
+#define emberAfFillCommandPrepaymentClusterConsumerTopUp(originatingDevice, topUpCode) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONSUMER_TOP_UP_COMMAND_ID, "uu", originatingDevice, topUpCode);
+
+/** @brief Command description for CreditAdjustment
+ *
+ * Command: CreditAdjustment
+ * @param issuerEventId INT32U
+ * @param commandIndex INT8U
+ * @param startTime UTC_TIME
+ * @param totalNumberOfCommands INT8U
+ * @param creditAdjustmentType CreditAdjustmentType
+ * @param topUpPayload TopUpPayload []
+ * @param topUpPayloadLen int
+ * @param creditAdjustmentValue INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterCreditAdjustment(issuerEventId, commandIndex, startTime, totalNumberOfCommands, \
+ creditAdjustmentType, topUpPayload, topUpPayloadLen, \
+ creditAdjustmentValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CREDIT_ADJUSTMENT_COMMAND_ID, "uuuuubu", issuerEventId, commandIndex, startTime, \
+ totalNumberOfCommands, creditAdjustmentType, topUpPayload, topUpPayloadLen, creditAdjustmentValue);
+
+/** @brief Command description for ChangePaymentMode
+ *
+ * Command: ChangePaymentMode
+ * @param providerId INT32U
+ * @param commandIndex INT8U
+ * @param issuerEventId INT32U
+ * @param totalNumberOfCommands INT8U
+ * @param implementationDateTime UTC_TIME
+ * @param debtPayload DebtPayload []
+ * @param debtPayloadLen int
+ * @param proposedPaymentControlConfiguration PaymentControlConfiguration
+ * @param cutOffValue INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterChangePaymentMode(providerId, commandIndex, issuerEventId, totalNumberOfCommands, \
+ implementationDateTime, debtPayload, debtPayloadLen, \
+ proposedPaymentControlConfiguration, cutOffValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CHANGE_PAYMENT_MODE_COMMAND_ID, "uuuuubuu", providerId, commandIndex, issuerEventId, \
+ totalNumberOfCommands, implementationDateTime, debtPayload, debtPayloadLen, \
+ proposedPaymentControlConfiguration, cutOffValue);
+
+/** @brief Command description for GetPrepaySnapshot
+ *
+ * Command: GetPrepaySnapshot
+ * @param earliestStartTime UTC_TIME
+ * @param latestEndTime UTC_TIME
+ * @param snapshotOffset INT8U
+ * @param snapshotCause PrepaySnapshotPayloadCause
+ */
+#define emberAfFillCommandPrepaymentClusterGetPrepaySnapshot(earliestStartTime, latestEndTime, snapshotOffset, snapshotCause) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PREPAY_SNAPSHOT_COMMAND_ID, "uuuu", earliestStartTime, latestEndTime, snapshotOffset, \
+ snapshotCause);
+
+/** @brief Command description for GetTopUpLog
+ *
+ * Command: GetTopUpLog
+ * @param latestEndTime UTC_TIME
+ * @param numberOfRecords INT8U
+ */
+#define emberAfFillCommandPrepaymentClusterGetTopUpLog(latestEndTime, numberOfRecords) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_TOP_UP_LOG_COMMAND_ID, "uu", latestEndTime, numberOfRecords);
+
+/** @brief Command description for SetLowCreditWarningLevel
+ *
+ * Command: SetLowCreditWarningLevel
+ * @param lowCreditWarningLevel INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterSetLowCreditWarningLevel(lowCreditWarningLevel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_LOW_CREDIT_WARNING_LEVEL_COMMAND_ID, "u", lowCreditWarningLevel);
+
+/** @brief Command description for GetDebtRepaymentLog
+ *
+ * Command: GetDebtRepaymentLog
+ * @param latestEndTime UTC_TIME
+ * @param numberOfDebts INT8U
+ * @param debtType RepaymentDebtType
+ */
+#define emberAfFillCommandPrepaymentClusterGetDebtRepaymentLog(latestEndTime, numberOfDebts, debtType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_DEBT_REPAYMENT_LOG_COMMAND_ID, "uuu", latestEndTime, numberOfDebts, debtType);
+
+/** @brief Command description for SetMaximumCreditLimit
+ *
+ * Command: SetMaximumCreditLimit
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param implementationDateTime UTC_TIME
+ * @param maximumCreditLevel INT32U
+ * @param maximumCreditPerTopUp INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterSetMaximumCreditLimit(providerId, issuerEventId, implementationDateTime, \
+ maximumCreditLevel, maximumCreditPerTopUp) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_MAXIMUM_CREDIT_LIMIT_COMMAND_ID, "uuuuu", providerId, issuerEventId, implementationDateTime, \
+ maximumCreditLevel, maximumCreditPerTopUp);
+
+/** @brief Command description for SetOverallDebtCap
+ *
+ * Command: SetOverallDebtCap
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param implementationDateTime UTC_TIME
+ * @param overallDebtCap INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterSetOverallDebtCap(providerId, issuerEventId, implementationDateTime, overallDebtCap) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_OVERALL_DEBT_CAP_COMMAND_ID, "uuuu", providerId, issuerEventId, implementationDateTime, \
+ overallDebtCap);
+
+/** @brief Command description for ReportEventStatus
+ *
+ * Command: ReportEventStatus
+ * @param issuerEventId INT32U
+ * @param issuerEventId INT32U
+ * @param eventStatus AmiEventStatus
+ * @param deviceClass AmiDeviceClass
+ * @param eventStatusTime UTC_TIME
+ * @param utilityEnrollmentGroup INT8U
+ * @param criticalityLevelApplied AmiCriticalityLevel
+ * @param actionRequired INT8U
+ * @param coolingTemperatureSetPointApplied INT16U
+ * @param heatingTemperatureSetPointApplied INT16U
+ * @param averageLoadAdjustmentPercentageApplied INT8S
+ * @param dutyCycleApplied INT8U
+ * @param eventControl AmiEventControl
+ */
+#define emberAfFillCommandEnergy \
+ ManagementClusterReportEventStatus(issuerEventId, issuerEventId, eventStatus, deviceClass, eventStatusTime, \
+ utilityEnrollmentGroup, criticalityLevelApplied, actionRequired, \
+ coolingTemperatureSetPointApplied, heatingTemperatureSetPointApplied, \
+ averageLoadAdjustmentPercentageApplied, dutyCycleApplied, eventControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REPORT_EVENT_STATUS_COMMAND_ID, "uuuuuuuuuuuuu", issuerEventId, issuerEventId, eventStatus, \
+ deviceClass, eventStatusTime, utilityEnrollmentGroup, criticalityLevelApplied, actionRequired, \
+ coolingTemperatureSetPointApplied, heatingTemperatureSetPointApplied, \
+ averageLoadAdjustmentPercentageApplied, dutyCycleApplied, eventControl);
+
+/** @brief Command description for PublishCalendar
+ *
+ * Command: PublishCalendar
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param issuerCalendarId INT32U
+ * @param numberOfCalendars INT8U
+ * @param startTime UTC_TIME
+ * @param calendarType CalendarType
+ * @param calendarType CalendarType
+ * @param providerId INT32U
+ * @param calendarTimeReference CalendarTimeReference
+ * @param calendarName OCTET_STRING
+ * @param numberOfSeasons INT8U
+ * @param numberOfWeekProfiles INT8U
+ * @param numberOfDayProfiles INT8U
+ */
+#define emberAfFillCommandCalendarClusterPublishCalendar( \
+ providerId, earliestStartTime, issuerEventId, minIssuerEventId, issuerCalendarId, numberOfCalendars, startTime, calendarType, \
+ calendarType, providerId, calendarTimeReference, calendarName, numberOfSeasons, numberOfWeekProfiles, numberOfDayProfiles) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CALENDAR_COMMAND_ID, "uuuuuuuuuuuuuuu", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, issuerCalendarId, numberOfCalendars, startTime, calendarType, calendarType, \
+ providerId, calendarTimeReference, calendarName, numberOfSeasons, numberOfWeekProfiles, \
+ numberOfDayProfiles);
+
+/** @brief Command description for PublishDayProfile
+ *
+ * Command: PublishDayProfile
+ * @param providerId INT32U
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerCalendarId INT32U
+ * @param issuerCalendarId INT32U
+ * @param startDayId INT8U
+ * @param dayId INT8U
+ * @param numberOfDays INT8U
+ * @param totalNumberOfScheduleEntries INT8U
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param calendarType CalendarType
+ * @param dayScheduleEntries ScheduleEntry []
+ * @param dayScheduleEntriesLen int
+ */
+#define emberAfFillCommandCalendarClusterPublishDayProfile( \
+ providerId, providerId, issuerEventId, issuerCalendarId, issuerCalendarId, startDayId, dayId, numberOfDays, \
+ totalNumberOfScheduleEntries, commandIndex, totalNumberOfCommands, calendarType, dayScheduleEntries, dayScheduleEntriesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_DAY_PROFILE_COMMAND_ID, "uuuuuuuuuuuub", providerId, providerId, issuerEventId, \
+ issuerCalendarId, issuerCalendarId, startDayId, dayId, numberOfDays, totalNumberOfScheduleEntries, \
+ commandIndex, totalNumberOfCommands, calendarType, dayScheduleEntries, dayScheduleEntriesLen);
+
+/** @brief Command description for PublishWeekProfile
+ *
+ * Command: PublishWeekProfile
+ * @param providerId INT32U
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerCalendarId INT32U
+ * @param issuerCalendarId INT32U
+ * @param startWeekId INT8U
+ * @param weekId INT8U
+ * @param numberOfWeeks INT8U
+ * @param dayIdRefMonday INT8U
+ * @param dayIdRefTuesday INT8U
+ * @param dayIdRefWednesday INT8U
+ * @param dayIdRefThursday INT8U
+ * @param dayIdRefFriday INT8U
+ * @param dayIdRefSaturday INT8U
+ * @param dayIdRefSunday INT8U
+ */
+#define emberAfFillCommandCalendarClusterPublishWeekProfile( \
+ providerId, providerId, issuerEventId, issuerCalendarId, issuerCalendarId, startWeekId, weekId, numberOfWeeks, dayIdRefMonday, \
+ dayIdRefTuesday, dayIdRefWednesday, dayIdRefThursday, dayIdRefFriday, dayIdRefSaturday, dayIdRefSunday) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_WEEK_PROFILE_COMMAND_ID, "uuuuuuuuuuuuuuu", providerId, providerId, issuerEventId, \
+ issuerCalendarId, issuerCalendarId, startWeekId, weekId, numberOfWeeks, dayIdRefMonday, \
+ dayIdRefTuesday, dayIdRefWednesday, dayIdRefThursday, dayIdRefFriday, dayIdRefSaturday, \
+ dayIdRefSunday);
+
+/** @brief Command description for PublishSeasons
+ *
+ * Command: PublishSeasons
+ * @param providerId INT32U
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerCalendarId INT32U
+ * @param issuerCalendarId INT32U
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param seasonEntries SeasonEntry []
+ * @param seasonEntriesLen int
+ */
+#define emberAfFillCommandCalendarClusterPublishSeasons(providerId, providerId, issuerEventId, issuerCalendarId, issuerCalendarId, \
+ commandIndex, totalNumberOfCommands, seasonEntries, seasonEntriesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_SEASONS_COMMAND_ID, "uuuuuuub", providerId, providerId, issuerEventId, issuerCalendarId, \
+ issuerCalendarId, commandIndex, totalNumberOfCommands, seasonEntries, seasonEntriesLen);
+
+/** @brief Command description for PublishSpecialDays
+ *
+ * Command: PublishSpecialDays
+ * @param providerId INT32U
+ * @param startTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param numberOfEvents INT8U
+ * @param issuerCalendarId INT32U
+ * @param calendarType CalendarType
+ * @param startTime UTC_TIME
+ * @param providerId INT32U
+ * @param calendarType CalendarType
+ * @param issuerCalendarId INT32U
+ * @param totalNumberOfSpecialDays INT8U
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param specialDayEntries SpecialDay []
+ * @param specialDayEntriesLen int
+ */
+#define emberAfFillCommandCalendarClusterPublishSpecialDays( \
+ providerId, startTime, issuerEventId, numberOfEvents, issuerCalendarId, calendarType, startTime, providerId, calendarType, \
+ issuerCalendarId, totalNumberOfSpecialDays, commandIndex, totalNumberOfCommands, specialDayEntries, specialDayEntriesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_SPECIAL_DAYS_COMMAND_ID, "uuuuuuuuuuuuub", providerId, startTime, issuerEventId, \
+ numberOfEvents, issuerCalendarId, calendarType, startTime, providerId, calendarType, \
+ issuerCalendarId, totalNumberOfSpecialDays, commandIndex, totalNumberOfCommands, specialDayEntries, \
+ specialDayEntriesLen);
+
+/** @brief Command description for GetCalendarCancellation
+ *
+ * Command: GetCalendarCancellation
+ * @param providerId INT32U
+ * @param issuerCalendarId INT32U
+ * @param calendarType CalendarType
+ */
+#define emberAfFillCommandCalendarClusterGetCalendarCancellation(providerId, issuerCalendarId, calendarType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CALENDAR_CANCELLATION_COMMAND_ID, "uuu", providerId, issuerCalendarId, calendarType);
+
+/** @brief Command description for GetChangeOfTenancy
+ *
+ * Command: GetChangeOfTenancy
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param tariffType TariffType
+ * @param implementationDateTime UTC_TIME
+ * @param proposedTenancyChangeControl ProposedChangeControl
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterGetChangeOfTenancy(providerId, issuerEventId, tariffType, implementationDateTime, \
+ proposedTenancyChangeControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CHANGE_OF_TENANCY_COMMAND_ID, "uuuuu", providerId, issuerEventId, tariffType, \
+ implementationDateTime, proposedTenancyChangeControl);
+
+/** @brief Command description for GetChangeOfSupplier
+ *
+ * Command: GetChangeOfSupplier
+ * @param currentProviderId INT32U
+ * @param issuerEventId INT32U
+ * @param tariffType TariffType
+ * @param proposedProviderId INT32U
+ * @param providerChangeImplementationTime UTC_TIME
+ * @param providerChangeControl ProposedChangeControl
+ * @param proposedProviderName OCTET_STRING
+ * @param proposedProviderContactDetails OCTET_STRING
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterGetChangeOfSupplier(currentProviderId, issuerEventId, tariffType, proposedProviderId, \
+ providerChangeImplementationTime, providerChangeControl, proposedProviderName, \
+ proposedProviderContactDetails) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CHANGE_OF_SUPPLIER_COMMAND_ID, "uuuuuuuu", currentProviderId, issuerEventId, tariffType, \
+ proposedProviderId, providerChangeImplementationTime, providerChangeControl, \
+ proposedProviderName, proposedProviderContactDetails);
+
+/** @brief Command description for RequestNewPassword
+ *
+ * Command: RequestNewPassword
+ * @param passwordType PasswordType
+ * @param issuerEventId INT32U
+ * @param implementationDateTime UTC_TIME
+ * @param durationInMinutes INT16U
+ * @param passwordType PasswordType
+ * @param password OCTET_STRING
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterRequestNewPassword(passwordType, issuerEventId, implementationDateTime, durationInMinutes, passwordType, \
+ password) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_NEW_PASSWORD_COMMAND_ID, "uuuuuu", passwordType, issuerEventId, \
+ implementationDateTime, durationInMinutes, passwordType, password);
+
+/** @brief Command description for GetSiteId
+ *
+ * Command: GetSiteId
+ * @param issuerEventId INT32U
+ * @param siteIdTime UTC_TIME
+ * @param providerId INT32U
+ * @param siteId OCTET_STRING
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterGetSiteId(issuerEventId, siteIdTime, providerId, siteId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SITE_ID_COMMAND_ID, "uuuu", issuerEventId, siteIdTime, providerId, siteId);
+
+/** @brief Command description for ReportEventConfiguration
+ *
+ * Command: ReportEventConfiguration
+ * @param commandIndex INT8U
+ * @param issuerEventId INT32U
+ * @param totalCommands INT8U
+ * @param startDateTime UTC_TIME
+ * @param eventConfigurationPayload EventConfigurationPayload []
+ * @param eventConfigurationPayloadLen int
+ * @param eventConfiguration EventConfiguration
+ * @param configurationControl EventConfigurationControl
+ * @param eventConfigurationPayload INT8U []
+ * @param eventConfigurationPayloadLen int
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterReportEventConfiguration(commandIndex, issuerEventId, totalCommands, startDateTime, \
+ eventConfigurationPayload, eventConfigurationPayloadLen, eventConfiguration, \
+ configurationControl, eventConfigurationPayload, eventConfigurationPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REPORT_EVENT_CONFIGURATION_COMMAND_ID, "uuuubuub", commandIndex, issuerEventId, \
+ totalCommands, startDateTime, eventConfigurationPayload, eventConfigurationPayloadLen, \
+ eventConfiguration, configurationControl, eventConfigurationPayload, \
+ eventConfigurationPayloadLen);
+
+/** @brief Command description for GetCIN
+ *
+ * Command: GetCIN
+ * @param eventId INT16U
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterGetCIN(eventId) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CIN_COMMAND_ID, "u", eventId);
+
+/** @brief Command description for UpdateCIN
+ *
+ * Command: UpdateCIN
+ * @param issuerEventId INT32U
+ * @param implementationTime UTC_TIME
+ * @param providerId INT32U
+ * @param customerIdNumber OCTET_STRING
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterUpdateCIN(issuerEventId, implementationTime, providerId, customerIdNumber) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_UPDATE_CIN_COMMAND_ID, "uuuu", issuerEventId, implementationTime, providerId, customerIdNumber);
+
+/** @brief Command description for GetEventLog
+ *
+ * Command: GetEventLog
+ * @param eventControlLogId EventControlLogId
+ * @param logId EventLogId
+ * @param eventId INT16U
+ * @param eventId INT16U
+ * @param startTime UTC_TIME
+ * @param eventTime UTC_TIME
+ * @param endTime UTC_TIME
+ * @param eventControl EventActionControl
+ * @param numberOfEvents INT8U
+ * @param eventData OCTET_STRING
+ * @param eventOffset INT16U
+ */
+#define emberAfFillCommandEventsClusterGetEventLog(eventControlLogId, logId, eventId, eventId, startTime, eventTime, endTime, \
+ eventControl, numberOfEvents, eventData, eventOffset) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_EVENT_LOG_COMMAND_ID, "uuuuuuuuuuu", eventControlLogId, logId, eventId, eventId, startTime, \
+ eventTime, endTime, eventControl, numberOfEvents, eventData, eventOffset);
+
+/** @brief Command description for ClearEventLogRequest
+ *
+ * Command: ClearEventLogRequest
+ * @param logId EventLogId
+ * @param totalNumberOfEvents INT16U
+ * @param commandIndex INT8U
+ * @param totalCommands INT8U
+ * @param logPayloadControl NumberOfEventsLogPayloadControl
+ * @param logPayload EventLogPayload []
+ * @param logPayloadLen int
+ */
+#define emberAfFillCommandEventsClusterClearEventLogRequest(logId, totalNumberOfEvents, commandIndex, totalCommands, \
+ logPayloadControl, logPayload, logPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_EVENT_LOG_REQUEST_COMMAND_ID, "uuuuub", logId, totalNumberOfEvents, commandIndex, \
+ totalCommands, logPayloadControl, logPayload, logPayloadLen);
+
+/** @brief Command description for ClearEventLogResponse
+ *
+ * Command: ClearEventLogResponse
+ * @param clearedEventsLogs ClearedEventsLogs
+ */
+#define emberAfFillCommandEventsClusterClearEventLogResponse(clearedEventsLogs) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_EVENT_LOG_RESPONSE_COMMAND_ID, "u", clearedEventsLogs);
+
+/** @brief Command description for PairingResponse
+ *
+ * Command: PairingResponse
+ * @param pairingInformationVersion INT32U
+ * @param localPairingInformationVersion INT32U
+ * @param totalNumberOfDevices INT8U
+ * @param eui64OfRequestingDevice IEEE_ADDRESS
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param eui64s IEEE_ADDRESS []
+ * @param eui64sLen int
+ */
+#define emberAfFillCommandMDU \
+ PairingClusterPairingResponse(pairingInformationVersion, localPairingInformationVersion, totalNumberOfDevices, \
+ eui64OfRequestingDevice, commandIndex, totalNumberOfCommands, eui64s, eui64sLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PAIRING_RESPONSE_COMMAND_ID, "uuuuuub", pairingInformationVersion, \
+ localPairingInformationVersion, totalNumberOfDevices, eui64OfRequestingDevice, commandIndex, \
+ totalNumberOfCommands, eui64s, eui64sLen);
+
+/** @brief Command description for GetSuspendZclMessagesStatus
+ *
+ * Command: GetSuspendZclMessagesStatus
+ * @param period INT8U
+ */
+#define emberAfFillCommandSub \
+ -GHzClusterGetSuspendZclMessagesStatus(period) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SUSPEND_ZCL_MESSAGES_STATUS_COMMAND_ID, "u", period);
+
+/** @brief Command description for InitiateKeyEstablishmentRequest
+ *
+ * Command: InitiateKeyEstablishmentRequest
+ * @param keyEstablishmentSuite BITMAP16
+ * @param requestedKeyEstablishmentSuite BITMAP16
+ * @param ephemeralDataGenerateTime INT8U
+ * @param ephemeralDataGenerateTime INT8U
+ * @param confirmKeyGenerateTime INT8U
+ * @param confirmKeyGenerateTime INT8U
+ * @param identity Identity
+ * @param identity Identity
+ */
+#define emberAfFillCommandKey \
+ EstablishmentClusterInitiateKeyEstablishmentRequest(keyEstablishmentSuite, requestedKeyEstablishmentSuite, \
+ ephemeralDataGenerateTime, ephemeralDataGenerateTime, \
+ confirmKeyGenerateTime, confirmKeyGenerateTime, identity, identity) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_INITIATE_KEY_ESTABLISHMENT_REQUEST_COMMAND_ID, "uuuuuuuu", keyEstablishmentSuite, \
+ requestedKeyEstablishmentSuite, ephemeralDataGenerateTime, ephemeralDataGenerateTime, \
+ confirmKeyGenerateTime, confirmKeyGenerateTime, identity, identity);
+
+/** @brief Command description for EphemeralDataRequest
+ *
+ * Command: EphemeralDataRequest
+ * @param ephemeralData EphemeralData
+ * @param ephemeralData EphemeralData
+ */
+#define emberAfFillCommandKey \
+ EstablishmentClusterEphemeralDataRequest(ephemeralData, ephemeralData) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EPHEMERAL_DATA_REQUEST_COMMAND_ID, "uu", ephemeralData, ephemeralData);
+
+/** @brief Command description for ConfirmKeyDataRequest
+ *
+ * Command: ConfirmKeyDataRequest
+ * @param secureMessageAuthenticationCode Smac
+ * @param secureMessageAuthenticationCode Smac
+ */
+#define emberAfFillCommandKey \
+ EstablishmentClusterConfirmKeyDataRequest(secureMessageAuthenticationCode, secureMessageAuthenticationCode) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIRM_KEY_DATA_REQUEST_COMMAND_ID, "uu", secureMessageAuthenticationCode, \
+ secureMessageAuthenticationCode);
+
+/** @brief Command description for TerminateKeyEstablishment
+ *
+ * Command: TerminateKeyEstablishment
+ * @param statusCode AmiKeyEstablishmentStatus
+ * @param waitTime INT8U
+ * @param keyEstablishmentSuite BITMAP16
+ */
+#define emberAfFillCommandKey \
+ EstablishmentClusterTerminateKeyEstablishment(statusCode, waitTime, keyEstablishmentSuite) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TERMINATE_KEY_ESTABLISHMENT_COMMAND_ID, "uuu", statusCode, waitTime, keyEstablishmentSuite);
+
+/** @brief Command description for RequestInformation
+ *
+ * Command: RequestInformation
+ * @param inquiryId ENUM8
+ * @param number INT8U
+ * @param dataTypeId BITMAP8
+ * @param buffer INT8U []
+ * @param bufferLen int
+ * @param requestInformationPayload INT8U []
+ * @param requestInformationPayloadLen int
+ */
+#define emberAfFillCommandInformationClusterRequestInformation(inquiryId, number, dataTypeId, buffer, bufferLen, \
+ requestInformationPayload, requestInformationPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_INFORMATION_COMMAND_ID, "uuubb", inquiryId, number, dataTypeId, buffer, bufferLen, \
+ requestInformationPayload, requestInformationPayloadLen);
+
+/** @brief Command description for PushInformationResponse
+ *
+ * Command: PushInformationResponse
+ * @param notificationList Notification []
+ * @param notificationListLen int
+ * @param contents INT8U []
+ * @param contentsLen int
+ */
+#define emberAfFillCommandInformationClusterPushInformationResponse(notificationList, notificationListLen, contents, contentsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUSH_INFORMATION_RESPONSE_COMMAND_ID, "bb", notificationList, notificationListLen, contents, \
+ contentsLen);
+
+/** @brief Command description for SendPreference
+ *
+ * Command: SendPreference
+ * @param preferenceType INT16U
+ * @param statusFeedbackList Status []
+ * @param statusFeedbackListLen int
+ * @param preferencePayload INT8U []
+ * @param preferencePayloadLen int
+ */
+#define emberAfFillCommandInformationClusterSendPreference(preferenceType, statusFeedbackList, statusFeedbackListLen, \
+ preferencePayload, preferencePayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SEND_PREFERENCE_COMMAND_ID, "ubb", preferenceType, statusFeedbackList, statusFeedbackListLen, \
+ preferencePayload, preferencePayloadLen);
+
+/** @brief Command description for ServerRequestPreference
+ *
+ * Command: ServerRequestPreference
+ * @param statusFeedback Status
+ * @param preferenceType INT16U
+ * @param preferencePayload INT8U []
+ * @param preferencePayloadLen int
+ */
+#define emberAfFillCommandInformationClusterServerRequestPreference(statusFeedback, preferenceType, preferencePayload, \
+ preferencePayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SERVER_REQUEST_PREFERENCE_COMMAND_ID, "uub", statusFeedback, preferenceType, preferencePayload, \
+ preferencePayloadLen);
+
+/** @brief Command description for Update
+ *
+ * Command: Update
+ * @param accessControl ENUM8
+ * @param statusFeedbackList Status []
+ * @param statusFeedbackListLen int
+ * @param option BITMAP8
+ * @param contents INT8U []
+ * @param contentsLen int
+ */
+#define emberAfFillCommandInformationClusterUpdate(accessControl, statusFeedbackList, statusFeedbackListLen, option, contents, \
+ contentsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UPDATE_COMMAND_ID, "ubub", accessControl, statusFeedbackList, statusFeedbackListLen, option, \
+ contents, contentsLen);
+
+/** @brief Command description for Delete
+ *
+ * Command: Delete
+ * @param deletionOptions BITMAP8
+ * @param notificationList Notification []
+ * @param notificationListLen int
+ * @param contentIds INT16U []
+ * @param contentIdsLen int
+ */
+#define emberAfFillCommandInformationClusterDelete(deletionOptions, notificationList, notificationListLen, contentIds, \
+ contentIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DELETE_COMMAND_ID, "ubb", deletionOptions, notificationList, notificationListLen, contentIds, \
+ contentIdsLen);
+
+/** @brief Command description for ConfigureNodeDescription
+ *
+ * Command: ConfigureNodeDescription
+ * @param description CHAR_STRING
+ * @param notificationList Notification []
+ * @param notificationListLen int
+ */
+#define emberAfFillCommandInformationClusterConfigureNodeDescription(description, notificationList, notificationListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_NODE_DESCRIPTION_COMMAND_ID, "ub", description, notificationList, \
+ notificationListLen);
+
+/** @brief Command description for ConfigureDeliveryEnable
+ *
+ * Command: ConfigureDeliveryEnable
+ * @param enable BOOLEAN
+ */
+#define emberAfFillCommandInformationClusterConfigureDeliveryEnable(enable) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_DELIVERY_ENABLE_COMMAND_ID, "u", enable);
+
+/** @brief Command description for ConfigurePushInformationTimer
+ *
+ * Command: ConfigurePushInformationTimer
+ * @param timer INT32U
+ */
+#define emberAfFillCommandInformationClusterConfigurePushInformationTimer(timer) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_PUSH_INFORMATION_TIMER_COMMAND_ID, "u", timer);
+
+/** @brief Command description for ConfigureSetRootId
+ *
+ * Command: ConfigureSetRootId
+ * @param rootId INT16U
+ */
+#define emberAfFillCommandInformationClusterConfigureSetRootId(rootId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_SET_ROOT_ID_COMMAND_ID, "u", rootId);
+
+/** @brief Command description for ReadFileRequest
+ *
+ * Command: ReadFileRequest
+ * @param fileIndex INT16U
+ * @param writeOptions BITMAP8
+ * @param fileStartPositionAndRequestedOctetCount INT8U []
+ * @param fileStartPositionAndRequestedOctetCountLen int
+ * @param fileSize INT8U []
+ * @param fileSizeLen int
+ */
+#define emberAfFillCommandData \
+ SharingClusterReadFileRequest(fileIndex, writeOptions, fileStartPositionAndRequestedOctetCount, \
+ fileStartPositionAndRequestedOctetCountLen, fileSize, fileSizeLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READ_FILE_REQUEST_COMMAND_ID, "uubb", fileIndex, writeOptions, \
+ fileStartPositionAndRequestedOctetCount, fileStartPositionAndRequestedOctetCountLen, fileSize, \
+ fileSizeLen);
+
+/** @brief Command description for ReadRecordRequest
+ *
+ * Command: ReadRecordRequest
+ * @param fileIndex INT16U
+ * @param fileIndex INT16U
+ * @param fileStartRecordAndRequestedRecordCount INT8U []
+ * @param fileStartRecordAndRequestedRecordCountLen int
+ * @param fileStartPosition INT32U
+ * @param octetCount INT32U
+ */
+#define emberAfFillCommandData \
+ SharingClusterReadRecordRequest(fileIndex, fileIndex, fileStartRecordAndRequestedRecordCount, \
+ fileStartRecordAndRequestedRecordCountLen, fileStartPosition, octetCount) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READ_RECORD_REQUEST_COMMAND_ID, "uubuu", fileIndex, fileIndex, \
+ fileStartRecordAndRequestedRecordCount, fileStartRecordAndRequestedRecordCountLen, \
+ fileStartPosition, octetCount);
+
+/** @brief Command description for WriteFileResponse
+ *
+ * Command: WriteFileResponse
+ * @param status ENUM8
+ * @param fileIndex INT16U
+ * @param fileIndex INT8U []
+ * @param fileIndexLen int
+ * @param fileStartRecord INT16U
+ * @param recordCount INT16U
+ */
+#define emberAfFillCommandData \
+ SharingClusterWriteFileResponse(status, fileIndex, fileIndex, fileIndexLen, fileStartRecord, recordCount) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WRITE_FILE_RESPONSE_COMMAND_ID, "uubuu", status, fileIndex, fileIndex, fileIndexLen, \
+ fileStartRecord, recordCount);
+
+/** @brief Command description for FileTransmission
+ *
+ * Command: FileTransmission
+ * @param transmitOptions BITMAP8
+ * @param buffer INT8U []
+ * @param bufferLen int
+ */
+#define emberAfFillCommandData \
+ SharingClusterFileTransmission(transmitOptions, buffer, bufferLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_FILE_TRANSMISSION_COMMAND_ID, "ub", transmitOptions, buffer, bufferLen);
+
+/** @brief Command description for RecordTransmission
+ *
+ * Command: RecordTransmission
+ * @param transmitOptions BITMAP8
+ * @param buffer INT8U []
+ * @param bufferLen int
+ */
+#define emberAfFillCommandData \
+ SharingClusterRecordTransmission(transmitOptions, buffer, bufferLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RECORD_TRANSMISSION_COMMAND_ID, "ub", transmitOptions, buffer, bufferLen);
+
+/** @brief Command description for SearchGame
+ *
+ * Command: SearchGame
+ * @param specificGame ENUM8
+ * @param gameId INT16U
+ * @param gameId INT16U
+ * @param gameMaster BOOLEAN
+ * @param listOfGame CHAR_STRING
+ */
+#define emberAfFillCommandGamingClusterSearchGame(specificGame, gameId, gameId, gameMaster, listOfGame) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SEARCH_GAME_COMMAND_ID, "uuuuu", specificGame, gameId, gameId, gameMaster, listOfGame);
+
+/** @brief Command description for JoinGame
+ *
+ * Command: JoinGame
+ * @param gameId INT16U
+ * @param commandId INT8U
+ * @param joinAsMaster BOOLEAN
+ * @param status BITMAP8
+ * @param nameOfGame CHAR_STRING
+ * @param message CHAR_STRING
+ */
+#define emberAfFillCommandGamingClusterJoinGame(gameId, commandId, joinAsMaster, status, nameOfGame, message) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_JOIN_GAME_COMMAND_ID, "uuuuuu", gameId, commandId, joinAsMaster, status, nameOfGame, message);
+
+/** @brief Command description for StartGame
+ *
+ * Command: StartGame
+ */
+#define emberAfFillCommandGamingClusterStartGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for PauseGame
+ *
+ * Command: PauseGame
+ */
+#define emberAfFillCommandGamingClusterPauseGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PAUSE_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for ResumeGame
+ *
+ * Command: ResumeGame
+ */
+#define emberAfFillCommandGamingClusterResumeGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESUME_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for QuitGame
+ *
+ * Command: QuitGame
+ */
+#define emberAfFillCommandGamingClusterQuitGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUIT_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for EndGame
+ *
+ * Command: EndGame
+ */
+#define emberAfFillCommandGamingClusterEndGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_END_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for StartOver
+ *
+ * Command: StartOver
+ */
+#define emberAfFillCommandGamingClusterStartOver() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_OVER_COMMAND_ID, "", );
+
+/** @brief Command description for ActionControl
+ *
+ * Command: ActionControl
+ * @param actions BITMAP32
+ */
+#define emberAfFillCommandGamingClusterActionControl(actions) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ACTION_CONTROL_COMMAND_ID, "u", actions);
+
+/** @brief Command description for DownloadGame
+ *
+ * Command: DownloadGame
+ */
+#define emberAfFillCommandGamingClusterDownloadGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DOWNLOAD_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for PathCreation
+ *
+ * Command: PathCreation
+ * @param originatorAddress DATA16
+ * @param originatorAddress DATA16
+ * @param destinationAddress DATA16
+ * @param destinationAddress DATA16
+ * @param dataRate INT8U
+ * @param dataRate INT8U
+ */
+#define emberAfFillCommandData \
+ Rate ControlClusterPathCreation(originatorAddress, originatorAddress, destinationAddress, destinationAddress, dataRate, \
+ dataRate) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PATH_CREATION_COMMAND_ID, "uuuuuu", originatorAddress, originatorAddress, \
+ destinationAddress, destinationAddress, dataRate, dataRate);
+
+/** @brief Command description for DataRateNotification
+ *
+ * Command: DataRateNotification
+ * @param originatorAddress DATA16
+ * @param destinationAddress DATA16
+ * @param dataRate INT8U
+ */
+#define emberAfFillCommandData \
+ Rate ControlClusterDataRateNotification(originatorAddress, destinationAddress, dataRate) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DATA_RATE_NOTIFICATION_COMMAND_ID, "uuu", originatorAddress, destinationAddress, dataRate);
+
+/** @brief Command description for PathDeletion
+ *
+ * Command: PathDeletion
+ * @param originatorAddress DATA16
+ * @param destinationAddress DATA16
+ */
+#define emberAfFillCommandData \
+ Rate ControlClusterPathDeletion(originatorAddress, destinationAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PATH_DELETION_COMMAND_ID, "uu", originatorAddress, destinationAddress);
+
+/** @brief Command description for EstablishmentRequest
+ *
+ * Command: EstablishmentRequest
+ * @param flag BITMAP8
+ * @param ackNack ENUM8
+ * @param codecType ENUM8
+ * @param codecType ENUM8
+ * @param sampFreq ENUM8
+ * @param codecRate ENUM8
+ * @param serviceType ENUM8
+ * @param buffer INT8U []
+ * @param bufferLen int
+ */
+#define emberAfFillCommandVoice \
+ over ZigBeeClusterEstablishmentRequest(flag, ackNack, codecType, codecType, sampFreq, codecRate, serviceType, buffer, \
+ bufferLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ESTABLISHMENT_REQUEST_COMMAND_ID, "uuuuuuub", flag, ackNack, codecType, codecType, sampFreq, \
+ codecRate, serviceType, buffer, bufferLen);
+
+/** @brief Command description for VoiceTransmission
+ *
+ * Command: VoiceTransmission
+ * @param voiceData INT8U []
+ * @param voiceDataLen int
+ * @param sequenceNumber INT8U
+ * @param errorFlag ENUM8
+ */
+#define emberAfFillCommandVoice \
+ over ZigBeeClusterVoiceTransmission(voiceData, voiceDataLen, sequenceNumber, errorFlag) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_VOICE_TRANSMISSION_COMMAND_ID, "buu", voiceData, voiceDataLen, sequenceNumber, errorFlag);
+
+/** @brief Command description for VoiceTransmissionCompletion
+ *
+ * Command: VoiceTransmissionCompletion
+ * @param controlType ENUM8
+ */
+#define emberAfFillCommandVoice \
+ over ZigBeeClusterVoiceTransmissionCompletion(controlType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_VOICE_TRANSMISSION_COMPLETION_COMMAND_ID, "u", controlType);
+
+/** @brief Command description for ControlResponse
+ *
+ * Command: ControlResponse
+ * @param ackNack ENUM8
+ */
+#define emberAfFillCommandVoice \
+ over ZigBeeClusterControlResponse(ackNack) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONTROL_RESPONSE_COMMAND_ID, "u", ackNack);
+
+/** @brief Command description for JoinChatRequest
+ *
+ * Command: JoinChatRequest
+ * @param uid INT16U
+ * @param status ENUM8
+ * @param nickname CHAR_STRING
+ * @param cid INT16U
+ * @param cid INT16U
+ */
+#define emberAfFillCommandChattingClusterJoinChatRequest(uid, status, nickname, cid, cid) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_JOIN_CHAT_REQUEST_COMMAND_ID, "uuuuu", uid, status, nickname, cid, cid);
+
+/** @brief Command description for LeaveChatRequest
+ *
+ * Command: LeaveChatRequest
+ * @param cid INT16U
+ * @param status ENUM8
+ * @param uid INT16U
+ * @param cid INT16U
+ * @param chatParticipantList ChatParticipant []
+ * @param chatParticipantListLen int
+ */
+#define emberAfFillCommandChattingClusterLeaveChatRequest(cid, status, uid, cid, chatParticipantList, chatParticipantListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LEAVE_CHAT_REQUEST_COMMAND_ID, "uuuub", cid, status, uid, cid, chatParticipantList, \
+ chatParticipantListLen);
+
+/** @brief Command description for SearchChatRequest
+ *
+ * Command: SearchChatRequest
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param nickname CHAR_STRING
+ */
+#define emberAfFillCommandChattingClusterSearchChatRequest(cid, uid, nickname) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SEARCH_CHAT_REQUEST_COMMAND_ID, "uuu", cid, uid, nickname);
+
+/** @brief Command description for SwitchChairmanResponse
+ *
+ * Command: SwitchChairmanResponse
+ * @param cid INT16U
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param uid INT16U
+ * @param nickname CHAR_STRING
+ */
+#define emberAfFillCommandChattingClusterSwitchChairmanResponse(cid, cid, uid, uid, nickname) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SWITCH_CHAIRMAN_RESPONSE_COMMAND_ID, "uuuuu", cid, cid, uid, uid, nickname);
+
+/** @brief Command description for StartChatRequest
+ *
+ * Command: StartChatRequest
+ * @param name CHAR_STRING
+ * @param options BITMAP8
+ * @param uid INT16U
+ * @param chatRoomList ChatRoom []
+ * @param chatRoomListLen int
+ * @param nickname CHAR_STRING
+ */
+#define emberAfFillCommandChattingClusterStartChatRequest(name, options, uid, chatRoomList, chatRoomListLen, nickname) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_CHAT_REQUEST_COMMAND_ID, "uuubu", name, options, uid, chatRoomList, chatRoomListLen, \
+ nickname);
+
+/** @brief Command description for ChatMessage
+ *
+ * Command: ChatMessage
+ * @param destinationUid INT16U
+ * @param cid INT16U
+ * @param sourceUid INT16U
+ * @param cid INT16U
+ * @param nickname CHAR_STRING
+ * @param message CHAR_STRING
+ */
+#define emberAfFillCommandChattingClusterChatMessage(destinationUid, cid, sourceUid, cid, nickname, message) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CHAT_MESSAGE_COMMAND_ID, "uuuuuu", destinationUid, cid, sourceUid, cid, nickname, message);
+
+/** @brief Command description for GetNodeInformationRequest
+ *
+ * Command: GetNodeInformationRequest
+ * @param cid INT16U
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param nodeInformationList NodeInformation []
+ * @param nodeInformationListLen int
+ */
+#define emberAfFillCommandChattingClusterGetNodeInformationRequest(cid, cid, uid, nodeInformationList, nodeInformationListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_NODE_INFORMATION_REQUEST_COMMAND_ID, "uuub", cid, cid, uid, nodeInformationList, \
+ nodeInformationListLen);
+
+/** @brief Command description for SwitchChairmanNotification
+ *
+ * Command: SwitchChairmanNotification
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param address DATA16
+ * @param endpoint INT8U
+ */
+#define emberAfFillCommandChattingClusterSwitchChairmanNotification(cid, uid, address, endpoint) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SWITCH_CHAIRMAN_NOTIFICATION_COMMAND_ID, "uuuu", cid, uid, address, endpoint);
+
+/** @brief Command description for GetNodeInformationResponse
+ *
+ * Command: GetNodeInformationResponse
+ * @param status ENUM8
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param addressEndpointAndNickname INT8U []
+ * @param addressEndpointAndNicknameLen int
+ */
+#define emberAfFillCommandChattingClusterGetNodeInformationResponse(status, cid, uid, addressEndpointAndNickname, \
+ addressEndpointAndNicknameLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_NODE_INFORMATION_RESPONSE_COMMAND_ID, "uuub", status, cid, uid, addressEndpointAndNickname, \
+ addressEndpointAndNicknameLen);
+
+/** @brief Command description for BuyRequest
+ *
+ * Command: BuyRequest
+ * @param userId OCTET_STRING
+ * @param serialNumber OCTET_STRING
+ * @param userType INT16U
+ * @param currency INT32U
+ * @param serviceId INT16U
+ * @param priceTrailingDigit INT8U
+ * @param goodId OCTET_STRING
+ * @param price INT32U
+ * @param timestamp OCTET_STRING
+ * @param transId INT16U
+ * @param transStatus ENUM8
+ */
+#define emberAfFillCommandPaymentClusterBuyRequest(userId, serialNumber, userType, currency, serviceId, priceTrailingDigit, \
+ goodId, price, timestamp, transId, transStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BUY_REQUEST_COMMAND_ID, "uuuuuuuuuuu", userId, serialNumber, userType, currency, serviceId, \
+ priceTrailingDigit, goodId, price, timestamp, transId, transStatus);
+
+/** @brief Command description for AcceptPayment
+ *
+ * Command: AcceptPayment
+ * @param userId OCTET_STRING
+ * @param serialNumber OCTET_STRING
+ * @param userType INT16U
+ * @param currency INT32U
+ * @param serviceId INT16U
+ * @param priceTrailingDigit INT8U
+ * @param goodId OCTET_STRING
+ * @param price INT32U
+ * @param timestamp OCTET_STRING
+ */
+#define emberAfFillCommandPaymentClusterAcceptPayment(userId, serialNumber, userType, currency, serviceId, priceTrailingDigit, \
+ goodId, price, timestamp) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ACCEPT_PAYMENT_COMMAND_ID, "uuuuuuuuu", userId, serialNumber, userType, currency, serviceId, \
+ priceTrailingDigit, goodId, price, timestamp);
+
+/** @brief Command description for PaymentConfirm
+ *
+ * Command: PaymentConfirm
+ * @param serialNumber OCTET_STRING
+ * @param serialNumber OCTET_STRING
+ * @param transId INT16U
+ * @param status ENUM8
+ * @param transStatus ENUM8
+ */
+#define emberAfFillCommandPaymentClusterPaymentConfirm(serialNumber, serialNumber, transId, status, transStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PAYMENT_CONFIRM_COMMAND_ID, "uuuuu", serialNumber, serialNumber, transId, status, transStatus);
+
+/** @brief Command description for Subscribe
+ *
+ * Command: Subscribe
+ * @param userId OCTET_STRING
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ * @param serviceProviderId INT16U
+ */
+#define emberAfFillCommandBillingClusterSubscribe(userId, userId, serviceId, serviceId, serviceProviderId, serviceProviderId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SUBSCRIBE_COMMAND_ID, "uuuuuu", userId, userId, serviceId, serviceId, serviceProviderId, \
+ serviceProviderId);
+
+/** @brief Command description for Unsubscribe
+ *
+ * Command: Unsubscribe
+ * @param userId OCTET_STRING
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ * @param serviceProviderId INT16U
+ * @param timestamp OCTET_STRING
+ * @param duration INT16U
+ */
+#define emberAfFillCommandBillingClusterUnsubscribe(userId, userId, serviceId, serviceId, serviceProviderId, serviceProviderId, \
+ timestamp, duration) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNSUBSCRIBE_COMMAND_ID, "uuuuuuuu", userId, userId, serviceId, serviceId, serviceProviderId, \
+ serviceProviderId, timestamp, duration);
+
+/** @brief Command description for StartBillingSession
+ *
+ * Command: StartBillingSession
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ */
+#define emberAfFillCommandBillingClusterStartBillingSession(userId, serviceId, serviceProviderId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_BILLING_SESSION_COMMAND_ID, "uuu", userId, serviceId, serviceProviderId);
+
+/** @brief Command description for StopBillingSession
+ *
+ * Command: StopBillingSession
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ */
+#define emberAfFillCommandBillingClusterStopBillingSession(userId, serviceId, serviceProviderId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STOP_BILLING_SESSION_COMMAND_ID, "uuu", userId, serviceId, serviceProviderId);
+
+/** @brief Command description for BillStatusNotification
+ *
+ * Command: BillStatusNotification
+ * @param userId OCTET_STRING
+ * @param status ENUM8
+ */
+#define emberAfFillCommandBillingClusterBillStatusNotification(userId, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BILL_STATUS_NOTIFICATION_COMMAND_ID, "uu", userId, status);
+
+/** @brief Command description for SessionKeepAlive
+ *
+ * Command: SessionKeepAlive
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ */
+#define emberAfFillCommandBillingClusterSessionKeepAlive(userId, serviceId, serviceProviderId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SESSION_KEEP_ALIVE_COMMAND_ID, "uuu", userId, serviceId, serviceProviderId);
+
+/** @brief Command description for GetAlerts
+ *
+ * Command: GetAlerts
+ * @param alertsCount AlertCount
+ * @param alertStructures AlertStructure []
+ * @param alertStructuresLen int
+ */
+#define emberAfFillCommandAppliance \
+ Events and AlertClusterGetAlerts(alertsCount, alertStructures, alertStructuresLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_ALERTS_COMMAND_ID, "ub", alertsCount, alertStructures, alertStructuresLen);
+
+/** @brief Command description for AlertsNotification
+ *
+ * Command: AlertsNotification
+ * @param alertsCount AlertCount
+ * @param alertStructures AlertStructure []
+ * @param alertStructuresLen int
+ */
+#define emberAfFillCommandAppliance \
+ Events and AlertClusterAlertsNotification(alertsCount, alertStructures, alertStructuresLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ALERTS_NOTIFICATION_COMMAND_ID, "ub", alertsCount, alertStructures, alertStructuresLen);
+
+/** @brief Command description for EventsNotification
+ *
+ * Command: EventsNotification
+ * @param eventHeader INT8U
+ * @param eventId EventIdentification
+ */
+#define emberAfFillCommandAppliance \
+ Events and AlertClusterEventsNotification(eventHeader, eventId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EVENTS_NOTIFICATION_COMMAND_ID, "uu", eventHeader, eventId);
+
+/** @brief Command description for LogNotification
+ *
+ * Command: LogNotification
+ * @param timeStamp TIME_OF_DAY
+ * @param logId INT32U
+ * @param logId INT32U
+ * @param logLength INT32U
+ * @param logPayload INT8U []
+ * @param logPayloadLen int
+ */
+#define emberAfFillCommandAppliance \
+ StatisticsClusterLogNotification(timeStamp, logId, logId, logLength, logPayload, logPayloadLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_LOG_NOTIFICATION_COMMAND_ID, "uuuub", timeStamp, logId, logId, logLength, logPayload, logPayloadLen);
+
+/** @brief Command description for LogQueueRequest
+ *
+ * Command: LogQueueRequest
+ * @param timeStamp TIME_OF_DAY
+ * @param logId INT32U
+ * @param logLength INT32U
+ * @param logPayload INT8U []
+ * @param logPayloadLen int
+ */
+#define emberAfFillCommandAppliance \
+ StatisticsClusterLogQueueRequest(timeStamp, logId, logLength, logPayload, logPayloadLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_LOG_QUEUE_REQUEST_COMMAND_ID, "uuub", timeStamp, logId, logLength, logPayload, logPayloadLen);
+
+/** @brief Command description for LogQueueResponse
+ *
+ * Command: LogQueueResponse
+ * @param logQueueSize INT8U
+ * @param logIds INT32U []
+ * @param logIdsLen int
+ */
+#define emberAfFillCommandAppliance \
+ StatisticsClusterLogQueueResponse(logQueueSize, logIds, logIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LOG_QUEUE_RESPONSE_COMMAND_ID, "ub", logQueueSize, logIds, logIdsLen);
+
+/** @brief Command description for StatisticsAvailable
+ *
+ * Command: StatisticsAvailable
+ * @param logQueueSize INT8U
+ * @param logIds INT32U []
+ * @param logIdsLen int
+ */
+#define emberAfFillCommandAppliance \
+ StatisticsClusterStatisticsAvailable(logQueueSize, logIds, logIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STATISTICS_AVAILABLE_COMMAND_ID, "ub", logQueueSize, logIds, logIdsLen);
+
+/** @brief Command description for GetProfileInfoCommand
+ *
+ * Command: GetProfileInfoCommand
+ * @param profileCount INT8U
+ * @param profileIntervalPeriod ENUM8
+ * @param maxNumberOfIntervals INT8U
+ * @param listOfAttributes INT16U []
+ * @param listOfAttributesLen int
+ */
+#define emberAfFillCommandElectrical \
+ MeasurementClusterGetProfileInfoCommand(profileCount, profileIntervalPeriod, maxNumberOfIntervals, listOfAttributes, \
+ listOfAttributesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PROFILE_INFO_COMMAND_COMMAND_ID, "uuub", profileCount, profileIntervalPeriod, \
+ maxNumberOfIntervals, listOfAttributes, listOfAttributesLen);
+
+/** @brief Command description for GetMeasurementProfileResponseCommand
+ *
+ * Command: GetMeasurementProfileResponseCommand
+ * @param startTime INT32U
+ * @param attributeId INT16U
+ * @param status ENUM8
+ * @param startTime INT32U
+ * @param profileIntervalPeriod ENUM8
+ * @param numberOfIntervals ENUM8
+ * @param numberOfIntervalsDelivered INT8U
+ * @param attributeId INT16U
+ * @param intervals INT8U []
+ * @param intervalsLen int
+ */
+#define emberAfFillCommandElectrical \
+ MeasurementClusterGetMeasurementProfileResponseCommand(startTime, attributeId, status, startTime, profileIntervalPeriod, \
+ numberOfIntervals, numberOfIntervalsDelivered, attributeId, intervals, \
+ intervalsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_MEASUREMENT_PROFILE_RESPONSE_COMMAND_COMMAND_ID, "uuuuuuuub", startTime, attributeId, \
+ status, startTime, profileIntervalPeriod, numberOfIntervals, numberOfIntervalsDelivered, \
+ attributeId, intervals, intervalsLen);
+
+/** @brief Command description for ScanRequest
+ *
+ * Command: ScanRequest
+ * @param transaction INT32U
+ * @param zigbeeInformation ZigbeeInformation
+ * @param zllInformation ZllInformation
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterScanRequest(transaction, zigbeeInformation, zllInformation) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SCAN_REQUEST_COMMAND_ID, "uuu", transaction, zigbeeInformation, zllInformation);
+
+/** @brief Command description for ScanResponse
+ *
+ * Command: ScanResponse
+ * @param transaction INT32U
+ * @param rssiCorrection INT8U
+ * @param zigbeeInformation ZigbeeInformation
+ * @param zllInformation ZllInformation
+ * @param keyBitmask KeyBitmask
+ * @param responseId INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ * @param numberOfSubDevices INT8U
+ * @param totalGroupIds INT8U
+ * @param endpointId INT8U
+ * @param profileId INT16U
+ * @param deviceId INT16U
+ * @param version INT8U
+ * @param groupIdCount INT8U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterScanResponse(transaction, rssiCorrection, zigbeeInformation, zllInformation, keyBitmask, responseId, \
+ extendedPanId, networkUpdateId, logicalChannel, panId, networkAddress, numberOfSubDevices, \
+ totalGroupIds, endpointId, profileId, deviceId, version, groupIdCount) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SCAN_RESPONSE_COMMAND_ID, "uuuuuuuuuuuuuuuuuu", transaction, rssiCorrection, \
+ zigbeeInformation, zllInformation, keyBitmask, responseId, extendedPanId, networkUpdateId, \
+ logicalChannel, panId, networkAddress, numberOfSubDevices, totalGroupIds, endpointId, profileId, \
+ deviceId, version, groupIdCount);
+
+/** @brief Command description for DeviceInformationRequest
+ *
+ * Command: DeviceInformationRequest
+ * @param transaction INT32U
+ * @param startIndex INT8U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterDeviceInformationRequest(transaction, startIndex) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DEVICE_INFORMATION_REQUEST_COMMAND_ID, "uu", transaction, startIndex);
+
+/** @brief Command description for DeviceInformationResponse
+ *
+ * Command: DeviceInformationResponse
+ * @param transaction INT32U
+ * @param numberOfSubDevices INT8U
+ * @param startIndex INT8U
+ * @param deviceInformationRecordCount INT8U
+ * @param deviceInformationRecordList DeviceInformationRecord []
+ * @param deviceInformationRecordListLen int
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterDeviceInformationResponse(transaction, numberOfSubDevices, startIndex, deviceInformationRecordCount, \
+ deviceInformationRecordList, deviceInformationRecordListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DEVICE_INFORMATION_RESPONSE_COMMAND_ID, "uuuub", transaction, numberOfSubDevices, \
+ startIndex, deviceInformationRecordCount, deviceInformationRecordList, \
+ deviceInformationRecordListLen);
+
+/** @brief Command description for IdentifyRequest
+ *
+ * Command: IdentifyRequest
+ * @param transaction INT32U
+ * @param identifyDuration INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterIdentifyRequest(transaction, identifyDuration) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IDENTIFY_REQUEST_COMMAND_ID, "uu", transaction, identifyDuration);
+
+/** @brief Command description for ResetToFactoryNewRequest
+ *
+ * Command: ResetToFactoryNewRequest
+ * @param transaction INT32U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterResetToFactoryNewRequest(transaction) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_TO_FACTORY_NEW_REQUEST_COMMAND_ID, "u", transaction);
+
+/** @brief Command description for NetworkStartRequest
+ *
+ * Command: NetworkStartRequest
+ * @param transaction INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param keyIndex KeyIndex
+ * @param encryptedNetworkKey SECURITY_KEY
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ * @param groupIdentifiersBegin INT16U
+ * @param groupIdentifiersEnd INT16U
+ * @param freeNetworkAddressRangeBegin INT16U
+ * @param freeNetworkAddressRangeEnd INT16U
+ * @param freeGroupIdentifierRangeBegin INT16U
+ * @param freeGroupIdentifierRangeEnd INT16U
+ * @param initiatorIeeeAddress IEEE_ADDRESS
+ * @param initiatorNetworkAddress INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkStartRequest( \
+ transaction, extendedPanId, keyIndex, encryptedNetworkKey, logicalChannel, panId, networkAddress, groupIdentifiersBegin, \
+ groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, \
+ freeGroupIdentifierRangeEnd, initiatorIeeeAddress, initiatorNetworkAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_START_REQUEST_COMMAND_ID, "uuuuuuuuuuuuuuu", transaction, extendedPanId, keyIndex, \
+ encryptedNetworkKey, logicalChannel, panId, networkAddress, groupIdentifiersBegin, \
+ groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, \
+ freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd, initiatorIeeeAddress, \
+ initiatorNetworkAddress);
+
+/** @brief Command description for NetworkStartResponse
+ *
+ * Command: NetworkStartResponse
+ * @param transaction INT32U
+ * @param status ZllStatus
+ * @param extendedPanId IEEE_ADDRESS
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkStartResponse(transaction, status, extendedPanId, networkUpdateId, logicalChannel, panId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_START_RESPONSE_COMMAND_ID, "uuuuuu", transaction, status, extendedPanId, \
+ networkUpdateId, logicalChannel, panId);
+
+/** @brief Command description for NetworkJoinRouterRequest
+ *
+ * Command: NetworkJoinRouterRequest
+ * @param transaction INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param keyIndex KeyIndex
+ * @param encryptedNetworkKey SECURITY_KEY
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ * @param groupIdentifiersBegin INT16U
+ * @param groupIdentifiersEnd INT16U
+ * @param freeNetworkAddressRangeBegin INT16U
+ * @param freeNetworkAddressRangeEnd INT16U
+ * @param freeGroupIdentifierRangeBegin INT16U
+ * @param freeGroupIdentifierRangeEnd INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkJoinRouterRequest(transaction, extendedPanId, keyIndex, encryptedNetworkKey, networkUpdateId, \
+ logicalChannel, panId, networkAddress, groupIdentifiersBegin, \
+ groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, \
+ freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_JOIN_ROUTER_REQUEST_COMMAND_ID, "uuuuuuuuuuuuuu", transaction, extendedPanId, \
+ keyIndex, encryptedNetworkKey, networkUpdateId, logicalChannel, panId, networkAddress, \
+ groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, \
+ freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd);
+
+/** @brief Command description for NetworkJoinRouterResponse
+ *
+ * Command: NetworkJoinRouterResponse
+ * @param transaction INT32U
+ * @param status ZllStatus
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkJoinRouterResponse(transaction, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_JOIN_ROUTER_RESPONSE_COMMAND_ID, "uu", transaction, status);
+
+/** @brief Command description for NetworkJoinEndDeviceRequest
+ *
+ * Command: NetworkJoinEndDeviceRequest
+ * @param transaction INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param keyIndex KeyIndex
+ * @param encryptedNetworkKey SECURITY_KEY
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ * @param groupIdentifiersBegin INT16U
+ * @param groupIdentifiersEnd INT16U
+ * @param freeNetworkAddressRangeBegin INT16U
+ * @param freeNetworkAddressRangeEnd INT16U
+ * @param freeGroupIdentifierRangeBegin INT16U
+ * @param freeGroupIdentifierRangeEnd INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkJoinEndDeviceRequest(transaction, extendedPanId, keyIndex, encryptedNetworkKey, networkUpdateId, \
+ logicalChannel, panId, networkAddress, groupIdentifiersBegin, \
+ groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, \
+ freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_JOIN_END_DEVICE_REQUEST_COMMAND_ID, "uuuuuuuuuuuuuu", transaction, extendedPanId, \
+ keyIndex, encryptedNetworkKey, networkUpdateId, logicalChannel, panId, networkAddress, \
+ groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, \
+ freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd);
+
+/** @brief Command description for NetworkJoinEndDeviceResponse
+ *
+ * Command: NetworkJoinEndDeviceResponse
+ * @param transaction INT32U
+ * @param status ZllStatus
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkJoinEndDeviceResponse(transaction, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_JOIN_END_DEVICE_RESPONSE_COMMAND_ID, "uu", transaction, status);
+
+/** @brief Command description for NetworkUpdateRequest
+ *
+ * Command: NetworkUpdateRequest
+ * @param transaction INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkUpdateRequest(transaction, extendedPanId, networkUpdateId, logicalChannel, panId, networkAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_UPDATE_REQUEST_COMMAND_ID, "uuuuuu", transaction, extendedPanId, networkUpdateId, \
+ logicalChannel, panId, networkAddress);
+
+/** @brief Command description for EndpointInformation
+ *
+ * Command: EndpointInformation
+ * @param ieeeAddress IEEE_ADDRESS
+ * @param networkAddress INT16U
+ * @param endpointId INT8U
+ * @param profileId INT16U
+ * @param deviceId INT16U
+ * @param version INT8U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterEndpointInformation(ieeeAddress, networkAddress, endpointId, profileId, deviceId, version) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENDPOINT_INFORMATION_COMMAND_ID, "uuuuuu", ieeeAddress, networkAddress, endpointId, \
+ profileId, deviceId, version);
+
+/** @brief Command description for GetGroupIdentifiersRequest
+ *
+ * Command: GetGroupIdentifiersRequest
+ * @param startIndex INT8U
+ * @param total INT8U
+ * @param startIndex INT8U
+ * @param count INT8U
+ * @param groupInformationRecordList GroupInformationRecord []
+ * @param groupInformationRecordListLen int
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterGetGroupIdentifiersRequest(startIndex, total, startIndex, count, groupInformationRecordList, \
+ groupInformationRecordListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_GROUP_IDENTIFIERS_REQUEST_COMMAND_ID, "uuuub", startIndex, total, startIndex, count, \
+ groupInformationRecordList, groupInformationRecordListLen);
+
+/** @brief Command description for GetEndpointListRequest
+ *
+ * Command: GetEndpointListRequest
+ * @param startIndex INT8U
+ * @param total INT8U
+ * @param startIndex INT8U
+ * @param count INT8U
+ * @param endpointInformationRecordList EndpointInformationRecord []
+ * @param endpointInformationRecordListLen int
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterGetEndpointListRequest(startIndex, total, startIndex, count, endpointInformationRecordList, \
+ endpointInformationRecordListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_ENDPOINT_LIST_REQUEST_COMMAND_ID, "uuuub", startIndex, total, startIndex, count, \
+ endpointInformationRecordList, endpointInformationRecordListLen);
+
+/** @brief Command description for Bind
+ *
+ * Command: Bind
+ * @param nodeId NODE_ID
+ * @param groupId GROUP_ID
+ * @param endpointId ENDPOINT_ID
+ * @param clusterId CLUSTER_ID
+ */
+#define emberAfFillCommandBindingClusterBind(nodeId, groupId, endpointId, clusterId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BIND_COMMAND_ID, "uuuu", nodeId, groupId, endpointId, clusterId);
+
+/** @brief Command description for Unbind
+ *
+ * Command: Unbind
+ * @param nodeId NODE_ID
+ * @param groupId GROUP_ID
+ * @param endpointId ENDPOINT_ID
+ * @param clusterId CLUSTER_ID
+ */
+#define emberAfFillCommandBindingClusterUnbind(nodeId, groupId, endpointId, clusterId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNBIND_COMMAND_ID, "uuuu", nodeId, groupId, endpointId, clusterId);
+
+/** @brief Command description for CommandOne
+ *
+ * Command: CommandOne
+ * @param argOne INT8U
+ * @param argOne INT8U
+ */
+#define emberAfFillCommandSample \
+ Mfg Specific ClusterClusterCommandOne(argOne, argOne) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_COMMAND_ONE_COMMAND_ID, "uu", argOne, argOne);
+
+/** @brief Command description for SetToken
+ *
+ * Command: SetToken
+ * @param token INT16U
+ * @param token INT16U
+ * @param data OCTET_STRING
+ * @param data OCTET_STRING
+ */
+#define emberAfFillCommandConfiguration \
+ ClusterClusterSetToken(token, token, data, data) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_TOKEN_COMMAND_ID, "uuuu", token, token, data, data);
+
+/** @brief Command description for LockTokens
+ *
+ * Command: LockTokens
+ */
+#define emberAfFillCommandConfiguration \
+ ClusterClusterLockTokens() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LOCK_TOKENS_COMMAND_ID, "", );
+
+/** @brief Command description for ReadTokens
+ *
+ * Command: ReadTokens
+ * @param token INT16U
+ */
+#define emberAfFillCommandConfiguration \
+ ClusterClusterReadTokens(token) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READ_TOKENS_COMMAND_ID, "u", token);
+
+/** @brief Command description for UnlockTokens
+ *
+ * Command: UnlockTokens
+ * @param data OCTET_STRING
+ */
+#define emberAfFillCommandConfiguration \
+ ClusterClusterUnlockTokens(data) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNLOCK_TOKENS_COMMAND_ID, "u", data);
+
+/** @brief Command description for stream
+ *
+ * Command: stream
+ * @param channel INT8U
+ * @param power INT8S
+ * @param time INT16U
+ */
+#define emberAfFillCommandMFGLIB \
+ ClusterClusterstream(channel, power, time) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STREAM_COMMAND_ID, "uuu", channel, power, time);
+
+/** @brief Command description for tone
+ *
+ * Command: tone
+ * @param channel INT8U
+ * @param power INT8S
+ * @param time INT16U
+ */
+#define emberAfFillCommandMFGLIB \
+ ClusterClustertone(channel, power, time) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TONE_COMMAND_ID, "uuu", channel, power, time);
+
+/** @brief Command description for rxMode
+ *
+ * Command: rxMode
+ * @param channel INT8U
+ * @param power INT8S
+ * @param time INT16U
+ */
+#define emberAfFillCommandMFGLIB \
+ ClusterClusterrxMode(channel, power, time) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RX_MODE_COMMAND_ID, "uuu", channel, power, time);
+
+/** @brief Command description for EnableApsLinkKeyAuthorization
+ *
+ * Command: EnableApsLinkKeyAuthorization
+ * @param numberExemptClusters INT8U
+ * @param clusterId CLUSTER_ID
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ * @param apsLinkKeyAuthStatus BOOLEAN
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableApsLinkKeyAuthorization(numberExemptClusters, clusterId, clusterId, clusterIdLen, \
+ apsLinkKeyAuthStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID, "uubu", numberExemptClusters, clusterId, \
+ clusterId, clusterIdLen, apsLinkKeyAuthStatus);
+
+/** @brief Command description for DisableApsLinkKeyAuthorization
+ *
+ * Command: DisableApsLinkKeyAuthorization
+ * @param numberExemptClusters INT8U
+ * @param powerNotificationReason WwahPowerNotificationReason
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ * @param manufacturerId INT16U
+ * @param manufacturerReasonLength INT8U
+ * @param manufacturerReason INT8U []
+ * @param manufacturerReasonLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableApsLinkKeyAuthorization(numberExemptClusters, powerNotificationReason, clusterId, \
+ clusterIdLen, manufacturerId, manufacturerReasonLength, \
+ manufacturerReason, manufacturerReasonLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID, "uubuub", numberExemptClusters, \
+ powerNotificationReason, clusterId, clusterIdLen, manufacturerId, manufacturerReasonLength, \
+ manufacturerReason, manufacturerReasonLen);
+
+/** @brief Command description for ApsLinkKeyAuthorizationQuery
+ *
+ * Command: ApsLinkKeyAuthorizationQuery
+ * @param clusterId CLUSTER_ID
+ * @param powerNotificationReason WwahPowerNotificationReason
+ * @param manufacturerId INT16U
+ * @param manufacturerReasonLength INT8U
+ * @param manufacturerReason INT8U []
+ * @param manufacturerReasonLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterApsLinkKeyAuthorizationQuery(clusterId, powerNotificationReason, manufacturerId, \
+ manufacturerReasonLength, manufacturerReason, manufacturerReasonLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_COMMAND_ID, "uuuub", clusterId, powerNotificationReason, \
+ manufacturerId, manufacturerReasonLength, manufacturerReason, manufacturerReasonLen);
+
+/** @brief Command description for RequestNewApsLinkKey
+ *
+ * Command: RequestNewApsLinkKey
+ * @param deviceEui64 IEEE_ADDRESS
+ * @param deviceShort INT16U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterRequestNewApsLinkKey(deviceEui64, deviceShort) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_NEW_APS_LINK_KEY_COMMAND_ID, "uu", deviceEui64, deviceShort);
+
+/** @brief Command description for EnableWwahAppEventRetryAlgorithm
+ *
+ * Command: EnableWwahAppEventRetryAlgorithm
+ * @param firstBackoffTimeSeconds INT8U
+ * @param numberExemptClusters INT8U
+ * @param backoffSeqCommonRatio INT8U
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ * @param maxBackoffTimeSeconds INT32U
+ * @param maxRedeliveryAttempts INT8U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableWwahAppEventRetryAlgorithm( \
+ firstBackoffTimeSeconds, numberExemptClusters, backoffSeqCommonRatio, clusterId, clusterIdLen, maxBackoffTimeSeconds, \
+ maxRedeliveryAttempts) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID, "uuubuu", \
+ firstBackoffTimeSeconds, numberExemptClusters, backoffSeqCommonRatio, \
+ clusterId, clusterIdLen, maxBackoffTimeSeconds, maxRedeliveryAttempts);
+
+/** @brief Command description for DisableWwahAppEventRetryAlgorithm
+ *
+ * Command: DisableWwahAppEventRetryAlgorithm
+ * @param currentPowerMode INT32U
+ * @param availablePowerSources INT32U
+ * @param currentPowerSource INT32U
+ * @param currentPowerSourceLevel INT32U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableWwahAppEventRetryAlgorithm(currentPowerMode, availablePowerSources, currentPowerSource, \
+ currentPowerSourceLevel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID, "uuuu", currentPowerMode, \
+ availablePowerSources, currentPowerSource, currentPowerSourceLevel);
+
+/** @brief Command description for RequestTime
+ *
+ * Command: RequestTime
+ * @param debugReportId INT8U
+ * @param debugReportSize INT32U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterRequestTime(debugReportId, debugReportSize) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_TIME_COMMAND_ID, "uu", debugReportId, debugReportSize);
+
+/** @brief Command description for EnableWwahRejoinAlgorithm
+ *
+ * Command: EnableWwahRejoinAlgorithm
+ * @param fastRejoinTimeoutSeconds INT16U
+ * @param debugReportId INT8U
+ * @param durationBetweenRejoinsSeconds INT16U
+ * @param debugReportData INT8U []
+ * @param debugReportDataLen int
+ * @param fastRejoinFirstBackoffSeconds INT16U
+ * @param maxBackoffTimeSeconds INT16U
+ * @param maxBackoffIterations INT16U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableWwahRejoinAlgorithm(fastRejoinTimeoutSeconds, debugReportId, durationBetweenRejoinsSeconds, \
+ debugReportData, debugReportDataLen, fastRejoinFirstBackoffSeconds, \
+ maxBackoffTimeSeconds, maxBackoffIterations) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID, "uuubuuu", fastRejoinTimeoutSeconds, debugReportId, \
+ durationBetweenRejoinsSeconds, debugReportData, debugReportDataLen, \
+ fastRejoinFirstBackoffSeconds, maxBackoffTimeSeconds, maxBackoffIterations);
+
+/** @brief Command description for DisableWwahRejoinAlgorithm
+ *
+ * Command: DisableWwahRejoinAlgorithm
+ * @param numberOfClusters INT8U
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableWwahRejoinAlgorithm(numberOfClusters, clusterId, clusterIdLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID, "ub", numberOfClusters, clusterId, clusterIdLen);
+
+/** @brief Command description for SetIasZoneEnrollmentMethod
+ *
+ * Command: SetIasZoneEnrollmentMethod
+ * @param enrollmentMode WwahIasZoneEnrollmentMode
+ * @param numberOfBeacons INT8U
+ * @param beacon WwahBeaconSurvey []
+ * @param beaconLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterSetIasZoneEnrollmentMethod(enrollmentMode, numberOfBeacons, beacon, beaconLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_IAS_ZONE_ENROLLMENT_METHOD_COMMAND_ID, "uub", enrollmentMode, numberOfBeacons, beacon, \
+ beaconLen);
+
+/** @brief Command description for ClearBindingTable
+ *
+ * Command: ClearBindingTable
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterClearBindingTable() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_BINDING_TABLE_COMMAND_ID, "", );
+
+/** @brief Command description for EnablePeriodicRouterCheckIns
+ *
+ * Command: EnablePeriodicRouterCheckIns
+ * @param checkInInterval INT16U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnablePeriodicRouterCheckIns(checkInInterval) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID, "u", checkInInterval);
+
+/** @brief Command description for DisablePeriodicRouterCheckIns
+ *
+ * Command: DisablePeriodicRouterCheckIns
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisablePeriodicRouterCheckIns() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID, "", );
+
+/** @brief Command description for SetMacPollFailureWaitTime
+ *
+ * Command: SetMacPollFailureWaitTime
+ * @param waitTime INT8U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterSetMacPollFailureWaitTime(waitTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_MAC_POLL_FAILURE_WAIT_TIME_COMMAND_ID, "u", waitTime);
+
+/** @brief Command description for SetPendingNetworkUpdate
+ *
+ * Command: SetPendingNetworkUpdate
+ * @param channel INT8U
+ * @param panId INT16U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterSetPendingNetworkUpdate(channel, panId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_PENDING_NETWORK_UPDATE_COMMAND_ID, "uu", channel, panId);
+
+/** @brief Command description for RequireApsAcksOnUnicasts
+ *
+ * Command: RequireApsAcksOnUnicasts
+ * @param numberExemptClusters INT8U
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterRequireApsAcksOnUnicasts(numberExemptClusters, clusterId, clusterIdLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_REQUIRE_APS_ACKS_ON_UNICASTS_COMMAND_ID, "ub", numberExemptClusters, clusterId, clusterIdLen);
+
+/** @brief Command description for RemoveApsAcksOnUnicastsRequirement
+ *
+ * Command: RemoveApsAcksOnUnicastsRequirement
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterRemoveApsAcksOnUnicastsRequirement() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_APS_ACKS_ON_UNICASTS_REQUIREMENT_COMMAND_ID, "", );
+
+/** @brief Command description for ApsAckRequirementQuery
+ *
+ * Command: ApsAckRequirementQuery
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterApsAckRequirementQuery() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_APS_ACK_REQUIREMENT_QUERY_COMMAND_ID, "", );
+
+/** @brief Command description for DebugReportQuery
+ *
+ * Command: DebugReportQuery
+ * @param debugReportId INT8U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDebugReportQuery(debugReportId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DEBUG_REPORT_QUERY_COMMAND_ID, "u", debugReportId);
+
+/** @brief Command description for SurveyBeacons
+ *
+ * Command: SurveyBeacons
+ * @param standardBeacons BOOLEAN
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterSurveyBeacons(standardBeacons) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SURVEY_BEACONS_COMMAND_ID, "u", standardBeacons);
+
+/** @brief Command description for DisableOtaDowngrades
+ *
+ * Command: DisableOtaDowngrades
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableOtaDowngrades() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_OTA_DOWNGRADES_COMMAND_ID, "", );
+
+/** @brief Command description for DisableMgmtLeaveWithoutRejoin
+ *
+ * Command: DisableMgmtLeaveWithoutRejoin
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableMgmtLeaveWithoutRejoin() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_MGMT_LEAVE_WITHOUT_REJOIN_COMMAND_ID, "", );
+
+/** @brief Command description for DisableTouchlinkInterpanMessageSupport
+ *
+ * Command: DisableTouchlinkInterpanMessageSupport
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableTouchlinkInterpanMessageSupport() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_TOUCHLINK_INTERPAN_MESSAGE_SUPPORT_COMMAND_ID, "", );
+
+/** @brief Command description for EnableWwahParentClassification
+ *
+ * Command: EnableWwahParentClassification
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableWwahParentClassification() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID, "", );
+
+/** @brief Command description for DisableWwahParentClassification
+ *
+ * Command: DisableWwahParentClassification
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableWwahParentClassification() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID, "", );
+
+/** @brief Command description for EnableTcSecurityOnNtwkKeyRotation
+ *
+ * Command: EnableTcSecurityOnNtwkKeyRotation
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableTcSecurityOnNtwkKeyRotation() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_TC_SECURITY_ON_NTWK_KEY_ROTATION_COMMAND_ID, "", );
+
+/** @brief Command description for EnableWwahBadParentRecovery
+ *
+ * Command: EnableWwahBadParentRecovery
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableWwahBadParentRecovery() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID, "", );
+
+/** @brief Command description for DisableWwahBadParentRecovery
+ *
+ * Command: DisableWwahBadParentRecovery
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableWwahBadParentRecovery() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID, "", );
+
+/** @brief Command description for EnableConfigurationMode
+ *
+ * Command: EnableConfigurationMode
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableConfigurationMode() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_CONFIGURATION_MODE_COMMAND_ID, "", );
+
+/** @brief Command description for DisableConfigurationMode
+ *
+ * Command: DisableConfigurationMode
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableConfigurationMode() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_CONFIGURATION_MODE_COMMAND_ID, "", );
+
+/** @brief Command description for UseTrustCenterForClusterServer
+ *
+ * Command: UseTrustCenterForClusterServer
+ * @param numberOfClusters INT8U
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterUseTrustCenterForClusterServer(numberOfClusters, clusterId, clusterIdLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_COMMAND_ID, "ub", numberOfClusters, clusterId, clusterIdLen);
+
+/** @brief Command description for TrustCenterForClusterServerQuery
+ *
+ * Command: TrustCenterForClusterServerQuery
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterTrustCenterForClusterServerQuery() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_COMMAND_ID, "", );
+
+/** @brief Command description for UseTrustCenterForClusterServerResponse
+ *
+ * Command: UseTrustCenterForClusterServerResponse
+ * @param status Status
+ * @param clusterStatusLength INT8U
+ * @param clusterStatus WwahClusterStatusToUseTC []
+ * @param clusterStatusLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterUseTrustCenterForClusterServerResponse(status, clusterStatusLength, clusterStatus, clusterStatusLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_RESPONSE_COMMAND_ID, "uub", status, clusterStatusLength, \
+ clusterStatus, clusterStatusLen);
diff --git a/examples/chip-tool/gen/cluster-id.h b/examples/chip-tool/gen/cluster-id.h
new file mode 100644
index 0000000..262de53
--- /dev/null
+++ b/examples/chip-tool/gen/cluster-id.h
@@ -0,0 +1,351 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Definitions for cluster: Basic
+#define ZCL_BASIC_CLUSTER_ID (0x0000)
+
+// Definitions for cluster: Power Configuration
+#define ZCL_POWER_CONFIG_CLUSTER_ID (0x0001)
+
+// Definitions for cluster: Device Temperature Configuration
+#define ZCL_DEVICE_TEMP_CLUSTER_ID (0x0002)
+
+// Definitions for cluster: Identify
+#define ZCL_IDENTIFY_CLUSTER_ID (0x0003)
+
+// Definitions for cluster: Groups
+#define ZCL_GROUPS_CLUSTER_ID (0x0004)
+
+// Definitions for cluster: Scenes
+#define ZCL_SCENES_CLUSTER_ID (0x0005)
+
+// Definitions for cluster: On/off
+#define ZCL_ON_OFF_CLUSTER_ID (0x0006)
+
+// Definitions for cluster: On/off Switch Configuration
+#define ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_ID (0x0007)
+
+// Definitions for cluster: Level Control
+#define ZCL_LEVEL_CONTROL_CLUSTER_ID (0x0008)
+
+// Definitions for cluster: Alarms
+#define ZCL_ALARM_CLUSTER_ID (0x0009)
+
+// Definitions for cluster: Time
+#define ZCL_TIME_CLUSTER_ID (0x000A)
+
+// Definitions for cluster: RSSI Location
+#define ZCL_RSSI_LOCATION_CLUSTER_ID (0x000B)
+
+// Definitions for cluster: Binary Input (Basic)
+#define ZCL_BINARY_INPUT_BASIC_CLUSTER_ID (0x000F)
+
+// Definitions for cluster: Commissioning
+#define ZCL_COMMISSIONING_CLUSTER_ID (0x0015)
+
+// Definitions for cluster: Partition
+#define ZCL_PARTITION_CLUSTER_ID (0x0016)
+
+// Definitions for cluster: Over the Air Bootloading
+#define ZCL_OTA_BOOTLOAD_CLUSTER_ID (0x0019)
+
+// Definitions for cluster: Power Profile
+#define ZCL_POWER_PROFILE_CLUSTER_ID (0x001A)
+
+// Definitions for cluster: Appliance Control
+#define ZCL_APPLIANCE_CONTROL_CLUSTER_ID (0x001B)
+
+// Definitions for cluster: Poll Control
+#define ZCL_POLL_CONTROL_CLUSTER_ID (0x0020)
+
+// Definitions for cluster: Green Power
+#define ZCL_GREEN_POWER_CLUSTER_ID (0x0021)
+
+// Definitions for cluster: Keep-Alive
+#define ZCL_KEEPALIVE_CLUSTER_ID (0x0025)
+
+// Definitions for cluster: Shade Configuration
+#define ZCL_SHADE_CONFIG_CLUSTER_ID (0x0100)
+
+// Definitions for cluster: Door Lock
+#define ZCL_DOOR_LOCK_CLUSTER_ID (0x0101)
+
+// Definitions for cluster: Window Covering
+#define ZCL_WINDOW_COVERING_CLUSTER_ID (0x0102)
+
+// Definitions for cluster: Barrier Control
+#define ZCL_BARRIER_CONTROL_CLUSTER_ID (0x0103)
+
+// Definitions for cluster: Pump Configuration and Control
+#define ZCL_PUMP_CONFIG_CONTROL_CLUSTER_ID (0x0200)
+
+// Definitions for cluster: Thermostat
+#define ZCL_THERMOSTAT_CLUSTER_ID (0x0201)
+
+// Definitions for cluster: Fan Control
+#define ZCL_FAN_CONTROL_CLUSTER_ID (0x0202)
+
+// Definitions for cluster: Dehumidification Control
+#define ZCL_DEHUMID_CONTROL_CLUSTER_ID (0x0203)
+
+// Definitions for cluster: Thermostat User Interface Configuration
+#define ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_ID (0x0204)
+
+// Definitions for cluster: Color Control
+#define ZCL_COLOR_CONTROL_CLUSTER_ID (0x0300)
+
+// Definitions for cluster: Ballast Configuration
+#define ZCL_BALLAST_CONFIGURATION_CLUSTER_ID (0x0301)
+
+// Definitions for cluster: Illuminance Measurement
+#define ZCL_ILLUM_MEASUREMENT_CLUSTER_ID (0x0400)
+
+// Definitions for cluster: Illuminance Level Sensing
+#define ZCL_ILLUM_LEVEL_SENSING_CLUSTER_ID (0x0401)
+
+// Definitions for cluster: Temperature Measurement
+#define ZCL_TEMP_MEASUREMENT_CLUSTER_ID (0x0402)
+
+// Definitions for cluster: Pressure Measurement
+#define ZCL_PRESSURE_MEASUREMENT_CLUSTER_ID (0x0403)
+
+// Definitions for cluster: Flow Measurement
+#define ZCL_FLOW_MEASUREMENT_CLUSTER_ID (0x0404)
+
+// Definitions for cluster: Relative Humidity Measurement
+#define ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_ID (0x0405)
+
+// Definitions for cluster: Occupancy Sensing
+#define ZCL_OCCUPANCY_SENSING_CLUSTER_ID (0x0406)
+
+// Definitions for cluster: Carbon Monoxide Concentration Measurement
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x040C)
+
+// Definitions for cluster: Carbon Dioxide Concentration Measurement
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x040D)
+
+// Definitions for cluster: Ethylene Concentration Measurement
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x040E)
+
+// Definitions for cluster: Ethylene Oxide Concentration Measurement
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x040F)
+
+// Definitions for cluster: Hydrogen Concentration Measurement
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0410)
+
+// Definitions for cluster: Hydrogen Sulphide Concentration Measurement
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0411)
+
+// Definitions for cluster: Nitric Oxide Concentration Measurement
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0412)
+
+// Definitions for cluster: Nitrogen Dioxide Concentration Measurement
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0413)
+
+// Definitions for cluster: Oxygen Concentration Measurement
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0414)
+
+// Definitions for cluster: Ozone Concentration Measurement
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0415)
+
+// Definitions for cluster: Sulfur Dioxide Concentration Measurement
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0416)
+
+// Definitions for cluster: Dissolved Oxygen Concentration Measurement
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0417)
+
+// Definitions for cluster: Bromate Concentration Measurement
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0418)
+
+// Definitions for cluster: Chloramines Concentration Measurement
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0419)
+
+// Definitions for cluster: Chlorine Concentration Measurement
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041A)
+
+// Definitions for cluster: Fecal coliform and E. Coli Concentration Measurement
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041B)
+
+// Definitions for cluster: Fluoride Concentration Measurement
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041C)
+
+// Definitions for cluster: Haloacetic Acids Concentration Measurement
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041D)
+
+// Definitions for cluster: Total Trihalomethanes Concentration Measurement
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041E)
+
+// Definitions for cluster: Total Coliform Bacteria Concentration Measurement
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041F)
+
+// Definitions for cluster: Turbidity Concentration Measurement
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0420)
+
+// Definitions for cluster: Copper Concentration Measurement
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0421)
+
+// Definitions for cluster: Lead Concentration Measurement
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0422)
+
+// Definitions for cluster: Manganese Concentration Measurement
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0423)
+
+// Definitions for cluster: Sulfate Concentration Measurement
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0424)
+
+// Definitions for cluster: Bromodichloromethane Concentration Measurement
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0425)
+
+// Definitions for cluster: Bromoform Concentration Measurement
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0426)
+
+// Definitions for cluster: Chlorodibromomethane Concentration Measurement
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0427)
+
+// Definitions for cluster: Chloroform Concentration Measurement
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0428)
+
+// Definitions for cluster: Sodium Concentration Measurement
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0429)
+
+// Definitions for cluster: IAS Zone
+#define ZCL_IAS_ZONE_CLUSTER_ID (0x0500)
+
+// Definitions for cluster: IAS ACE
+#define ZCL_IAS_ACE_CLUSTER_ID (0x0501)
+
+// Definitions for cluster: IAS WD
+#define ZCL_IAS_WD_CLUSTER_ID (0x0502)
+
+// Definitions for cluster: Generic Tunnel
+#define ZCL_GENERIC_TUNNEL_CLUSTER_ID (0x0600)
+
+// Definitions for cluster: BACnet Protocol Tunnel
+#define ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_ID (0x0601)
+
+// Definitions for cluster: 11073 Protocol Tunnel
+#define ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_ID (0x0614)
+
+// Definitions for cluster: ISO 7816 Protocol Tunnel
+#define ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_ID (0x0615)
+
+// Definitions for cluster: Price
+#define ZCL_PRICE_CLUSTER_ID (0x0700)
+
+// Definitions for cluster: Demand Response and Load Control
+#define ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID (0x0701)
+
+// Definitions for cluster: Simple Metering
+#define ZCL_SIMPLE_METERING_CLUSTER_ID (0x0702)
+
+// Definitions for cluster: Messaging
+#define ZCL_MESSAGING_CLUSTER_ID (0x0703)
+
+// Definitions for cluster: Tunneling
+#define ZCL_TUNNELING_CLUSTER_ID (0x0704)
+
+// Definitions for cluster: Prepayment
+#define ZCL_PREPAYMENT_CLUSTER_ID (0x0705)
+
+// Definitions for cluster: Energy Management
+#define ZCL_ENERGY_MANAGEMENT_CLUSTER_ID (0x0706)
+
+// Definitions for cluster: Calendar
+#define ZCL_CALENDAR_CLUSTER_ID (0x0707)
+
+// Definitions for cluster: Device Management
+#define ZCL_DEVICE_MANAGEMENT_CLUSTER_ID (0x0708)
+
+// Definitions for cluster: Events
+#define ZCL_EVENTS_CLUSTER_ID (0x0709)
+
+// Definitions for cluster: MDU Pairing
+#define ZCL_MDU_PAIRING_CLUSTER_ID (0x070A)
+
+// Definitions for cluster: Sub-GHz
+#define ZCL_SUB_GHZ_CLUSTER_ID (0x070B)
+
+// Definitions for cluster: Key Establishment
+#define ZCL_KEY_ESTABLISHMENT_CLUSTER_ID (0x0800)
+
+// Definitions for cluster: Information
+#define ZCL_INFORMATION_CLUSTER_ID (0x0900)
+
+// Definitions for cluster: Data Sharing
+#define ZCL_DATA_SHARING_CLUSTER_ID (0x0901)
+
+// Definitions for cluster: Gaming
+#define ZCL_GAMING_CLUSTER_ID (0x0902)
+
+// Definitions for cluster: Data Rate Control
+#define ZCL_DATA_RATE_CONTROL_CLUSTER_ID (0x0903)
+
+// Definitions for cluster: Voice over ZigBee
+#define ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID (0x0904)
+
+// Definitions for cluster: Chatting
+#define ZCL_CHATTING_CLUSTER_ID (0x0905)
+
+// Definitions for cluster: Payment
+#define ZCL_PAYMENT_CLUSTER_ID (0x0A01)
+
+// Definitions for cluster: Billing
+#define ZCL_BILLING_CLUSTER_ID (0x0A02)
+
+// Definitions for cluster: Appliance Identification
+#define ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_ID (0x0B00)
+
+// Definitions for cluster: Meter Identification
+#define ZCL_METER_IDENTIFICATION_CLUSTER_ID (0x0B01)
+
+// Definitions for cluster: Appliance Events and Alert
+#define ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID (0x0B02)
+
+// Definitions for cluster: Appliance Statistics
+#define ZCL_APPLIANCE_STATISTICS_CLUSTER_ID (0x0B03)
+
+// Definitions for cluster: Electrical Measurement
+#define ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID (0x0B04)
+
+// Definitions for cluster: Diagnostics
+#define ZCL_DIAGNOSTICS_CLUSTER_ID (0x0B05)
+
+// Definitions for cluster: ZLL Commissioning
+#define ZCL_ZLL_COMMISSIONING_CLUSTER_ID (0x1000)
+
+// Definitions for cluster: Binding
+#define ZCL_BINDING_CLUSTER_ID (0xF000)
+
+// Definitions for cluster: Sample Mfg Specific Cluster
+#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID (0xFC00)
+
+// Definitions for cluster: Sample Mfg Specific Cluster 2
+#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_ID (0xFC00)
+
+// Definitions for cluster: Configuration Cluster
+#define ZCL_OTA_CONFIGURATION_CLUSTER_ID (0xFC01)
+
+// Definitions for cluster: MFGLIB Cluster
+#define ZCL_MFGLIB_CLUSTER_ID (0xFC02)
+
+// Definitions for cluster: SL Works With All Hubs
+#define ZCL_SL_WWAH_CLUSTER_ID (0xFC57)
diff --git a/examples/chip-tool/gen/command-id.h b/examples/chip-tool/gen/command-id.h
new file mode 100644
index 0000000..9e60862
--- /dev/null
+++ b/examples/chip-tool/gen/command-id.h
@@ -0,0 +1,753 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Global, non-cluster-specific commands
+#define ZCL_READ_ATTRIBUTES_COMMAND_ID (0x00)
+#define ZCL_READ_ATTRIBUTES_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_WRITE_ATTRIBUTES_COMMAND_ID (0x02)
+#define ZCL_WRITE_ATTRIBUTES_UNDIVIDED_COMMAND_ID (0x03)
+#define ZCL_WRITE_ATTRIBUTES_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_WRITE_ATTRIBUTES_NO_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_CONFIGURE_REPORTING_COMMAND_ID (0x06)
+#define ZCL_CONFIGURE_REPORTING_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_READ_REPORTING_CONFIGURATION_COMMAND_ID (0x08)
+#define ZCL_READ_REPORTING_CONFIGURATION_RESPONSE_COMMAND_ID (0x09)
+#define ZCL_REPORT_ATTRIBUTES_COMMAND_ID (0x0A)
+#define ZCL_DEFAULT_RESPONSE_COMMAND_ID (0x0B)
+#define ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID (0x0C)
+#define ZCL_DISCOVER_ATTRIBUTES_RESPONSE_COMMAND_ID (0x0D)
+#define ZCL_READ_ATTRIBUTES_STRUCTURED_COMMAND_ID (0x0E)
+#define ZCL_WRITE_ATTRIBUTES_STRUCTURED_COMMAND_ID (0x0F)
+#define ZCL_WRITE_ATTRIBUTES_STRUCTURED_RESPONSE_COMMAND_ID (0x10)
+#define ZCL_DISCOVER_COMMANDS_RECEIVED_COMMAND_ID (0x11)
+#define ZCL_DISCOVER_COMMANDS_RECEIVED_RESPONSE_COMMAND_ID (0x12)
+#define ZCL_DISCOVER_COMMANDS_GENERATED_COMMAND_ID (0x13)
+#define ZCL_DISCOVER_COMMANDS_GENERATED_RESPONSE_COMMAND_ID (0x14)
+#define ZCL_DISCOVER_ATTRIBUTES_EXTENDED_COMMAND_ID (0x15)
+#define ZCL_DISCOVER_ATTRIBUTES_EXTENDED_RESPONSE_COMMAND_ID (0x16)
+
+// Commands for cluster: Basic
+#define ZCL_RESET_TO_FACTORY_DEFAULTS_COMMAND_ID (0x00)
+#define ZCL_MFG_SPECIFIC_PING_COMMAND_ID (0x00)
+
+// Commands for cluster: Identify
+#define ZCL_IDENTIFY_COMMAND_ID (0x00)
+#define ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_IDENTIFY_QUERY_COMMAND_ID (0x01)
+#define ZCL_EZ_MODE_INVOKE_COMMAND_ID (0x02)
+#define ZCL_UPDATE_COMMISSION_STATE_COMMAND_ID (0x03)
+#define ZCL_TRIGGER_EFFECT_COMMAND_ID (0x40)
+
+// Commands for cluster: Groups
+#define ZCL_ADD_GROUP_COMMAND_ID (0x00)
+#define ZCL_ADD_GROUP_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_VIEW_GROUP_COMMAND_ID (0x01)
+#define ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID (0x02)
+#define ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_REMOVE_GROUP_COMMAND_ID (0x03)
+#define ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_REMOVE_ALL_GROUPS_COMMAND_ID (0x04)
+#define ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID (0x05)
+
+// Commands for cluster: Scenes
+#define ZCL_ADD_SCENE_COMMAND_ID (0x00)
+#define ZCL_ADD_SCENE_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_VIEW_SCENE_COMMAND_ID (0x01)
+#define ZCL_VIEW_SCENE_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_REMOVE_SCENE_COMMAND_ID (0x02)
+#define ZCL_REMOVE_SCENE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_REMOVE_ALL_SCENES_COMMAND_ID (0x03)
+#define ZCL_REMOVE_ALL_SCENES_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_STORE_SCENE_COMMAND_ID (0x04)
+#define ZCL_STORE_SCENE_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_RECALL_SCENE_COMMAND_ID (0x05)
+#define ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID (0x06)
+#define ZCL_GET_SCENE_MEMBERSHIP_RESPONSE_COMMAND_ID (0x06)
+#define ZCL_ENHANCED_ADD_SCENE_COMMAND_ID (0x40)
+#define ZCL_ENHANCED_ADD_SCENE_RESPONSE_COMMAND_ID (0x40)
+#define ZCL_ENHANCED_VIEW_SCENE_COMMAND_ID (0x41)
+#define ZCL_ENHANCED_VIEW_SCENE_RESPONSE_COMMAND_ID (0x41)
+#define ZCL_COPY_SCENE_COMMAND_ID (0x42)
+#define ZCL_COPY_SCENE_RESPONSE_COMMAND_ID (0x42)
+
+// Commands for cluster: On/off
+#define ZCL_OFF_COMMAND_ID (0x00)
+#define ZCL_SAMPLE_MFG_SPECIFIC_OFF_WITH_TRANSITION_COMMAND_ID (0x00)
+#define ZCL_ON_COMMAND_ID (0x01)
+#define ZCL_SAMPLE_MFG_SPECIFIC_ON_WITH_TRANSITION_COMMAND_ID (0x01)
+#define ZCL_SAMPLE_MFG_SPECIFIC_ON_WITH_TRANSITION2_COMMAND_ID (0x01)
+#define ZCL_TOGGLE_COMMAND_ID (0x02)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TOGGLE_WITH_TRANSITION_COMMAND_ID (0x02)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TOGGLE_WITH_TRANSITION2_COMMAND_ID (0x02)
+#define ZCL_OFF_WITH_EFFECT_COMMAND_ID (0x40)
+#define ZCL_ON_WITH_RECALL_GLOBAL_SCENE_COMMAND_ID (0x41)
+#define ZCL_ON_WITH_TIMED_OFF_COMMAND_ID (0x42)
+
+// Commands for cluster: Level Control
+#define ZCL_MOVE_TO_LEVEL_COMMAND_ID (0x00)
+#define ZCL_MOVE_COMMAND_ID (0x01)
+#define ZCL_STEP_COMMAND_ID (0x02)
+#define ZCL_STOP_COMMAND_ID (0x03)
+#define ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID (0x04)
+#define ZCL_MOVE_WITH_ON_OFF_COMMAND_ID (0x05)
+#define ZCL_STEP_WITH_ON_OFF_COMMAND_ID (0x06)
+#define ZCL_STOP_WITH_ON_OFF_COMMAND_ID (0x07)
+
+// Commands for cluster: Alarms
+#define ZCL_RESET_ALARM_COMMAND_ID (0x00)
+#define ZCL_ALARM_COMMAND_ID (0x00)
+#define ZCL_RESET_ALL_ALARMS_COMMAND_ID (0x01)
+#define ZCL_GET_ALARM_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_GET_ALARM_COMMAND_ID (0x02)
+#define ZCL_RESET_ALARM_LOG_COMMAND_ID (0x03)
+
+// Commands for cluster: RSSI Location
+#define ZCL_SET_ABSOLUTE_LOCATION_COMMAND_ID (0x00)
+#define ZCL_DEVICE_CONFIGURATION_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_SET_DEVICE_CONFIGURATION_COMMAND_ID (0x01)
+#define ZCL_LOCATION_DATA_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_GET_DEVICE_CONFIGURATION_COMMAND_ID (0x02)
+#define ZCL_LOCATION_DATA_NOTIFICATION_COMMAND_ID (0x02)
+#define ZCL_GET_LOCATION_DATA_COMMAND_ID (0x03)
+#define ZCL_COMPACT_LOCATION_DATA_NOTIFICATION_COMMAND_ID (0x03)
+#define ZCL_RSSI_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_RSSI_PING_COMMAND_ID (0x04)
+#define ZCL_SEND_PINGS_COMMAND_ID (0x05)
+#define ZCL_RSSI_REQUEST_COMMAND_ID (0x05)
+#define ZCL_ANCHOR_NODE_ANNOUNCE_COMMAND_ID (0x06)
+#define ZCL_REPORT_RSSI_MEASUREMENTS_COMMAND_ID (0x06)
+#define ZCL_REQUEST_OWN_LOCATION_COMMAND_ID (0x07)
+
+// Commands for cluster: Commissioning
+#define ZCL_RESTART_DEVICE_COMMAND_ID (0x00)
+#define ZCL_RESTART_DEVICE_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_SAVE_STARTUP_PARAMETERS_COMMAND_ID (0x01)
+#define ZCL_SAVE_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_RESTORE_STARTUP_PARAMETERS_COMMAND_ID (0x02)
+#define ZCL_RESTORE_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_RESET_STARTUP_PARAMETERS_COMMAND_ID (0x03)
+#define ZCL_RESET_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID (0x03)
+
+// Commands for cluster: Partition
+#define ZCL_TRANSFER_PARTITIONED_FRAME_COMMAND_ID (0x00)
+#define ZCL_MULTIPLE_ACK_COMMAND_ID (0x00)
+#define ZCL_READ_HANDSHAKE_PARAM_COMMAND_ID (0x01)
+#define ZCL_READ_HANDSHAKE_PARAM_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_WRITE_HANDSHAKE_PARAM_COMMAND_ID (0x02)
+
+// Commands for cluster: Over the Air Bootloading
+#define ZCL_IMAGE_NOTIFY_COMMAND_ID (0x00)
+#define ZCL_QUERY_NEXT_IMAGE_REQUEST_COMMAND_ID (0x01)
+#define ZCL_QUERY_NEXT_IMAGE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_IMAGE_BLOCK_REQUEST_COMMAND_ID (0x03)
+#define ZCL_IMAGE_PAGE_REQUEST_COMMAND_ID (0x04)
+#define ZCL_IMAGE_BLOCK_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_UPGRADE_END_REQUEST_COMMAND_ID (0x06)
+#define ZCL_UPGRADE_END_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_QUERY_SPECIFIC_FILE_REQUEST_COMMAND_ID (0x08)
+#define ZCL_QUERY_SPECIFIC_FILE_RESPONSE_COMMAND_ID (0x09)
+
+// Commands for cluster: Power Profile
+#define ZCL_POWER_PROFILE_REQUEST_COMMAND_ID (0x00)
+#define ZCL_POWER_PROFILE_NOTIFICATION_COMMAND_ID (0x00)
+#define ZCL_POWER_PROFILE_STATE_REQUEST_COMMAND_ID (0x01)
+#define ZCL_POWER_PROFILE_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_GET_POWER_PROFILE_PRICE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_POWER_PROFILE_STATE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_GET_OVERALL_SCHEDULE_PRICE_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_GET_POWER_PROFILE_PRICE_COMMAND_ID (0x03)
+#define ZCL_ENERGY_PHASES_SCHEDULE_NOTIFICATION_COMMAND_ID (0x04)
+#define ZCL_POWER_PROFILES_STATE_NOTIFICATION_COMMAND_ID (0x04)
+#define ZCL_ENERGY_PHASES_SCHEDULE_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_GET_OVERALL_SCHEDULE_PRICE_COMMAND_ID (0x05)
+#define ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_REQUEST_COMMAND_ID (0x06)
+#define ZCL_ENERGY_PHASES_SCHEDULE_REQUEST_COMMAND_ID (0x06)
+#define ZCL_ENERGY_PHASES_SCHEDULE_STATE_REQUEST_COMMAND_ID (0x07)
+#define ZCL_ENERGY_PHASES_SCHEDULE_STATE_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_ENERGY_PHASES_SCHEDULE_STATE_NOTIFICATION_COMMAND_ID (0x08)
+#define ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_NOTIFICATION_COMMAND_ID (0x09)
+#define ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_RESPONSE_COMMAND_ID (0x0A)
+#define ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_COMMAND_ID (0x0B)
+
+// Commands for cluster: Appliance Control
+#define ZCL_EXECUTION_OF_A_COMMAND_COMMAND_ID (0x00)
+#define ZCL_SIGNAL_STATE_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_SIGNAL_STATE_COMMAND_ID (0x01)
+#define ZCL_SIGNAL_STATE_NOTIFICATION_COMMAND_ID (0x01)
+#define ZCL_WRITE_FUNCTIONS_COMMAND_ID (0x02)
+#define ZCL_OVERLOAD_PAUSE_RESUME_COMMAND_ID (0x03)
+#define ZCL_OVERLOAD_PAUSE_COMMAND_ID (0x04)
+#define ZCL_OVERLOAD_WARNING_COMMAND_ID (0x05)
+
+// Commands for cluster: Poll Control
+#define ZCL_CHECK_IN_COMMAND_ID (0x00)
+#define ZCL_CHECK_IN_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_FAST_POLL_STOP_COMMAND_ID (0x01)
+#define ZCL_SET_LONG_POLL_INTERVAL_COMMAND_ID (0x02)
+#define ZCL_SET_SHORT_POLL_INTERVAL_COMMAND_ID (0x03)
+
+// Commands for cluster: Green Power
+#define ZCL_GP_NOTIFICATION_COMMAND_ID (0x00)
+#define ZCL_GP_NOTIFICATION_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_GP_PAIRING_SEARCH_COMMAND_ID (0x01)
+#define ZCL_GP_PAIRING_COMMAND_ID (0x01)
+#define ZCL_GP_PROXY_COMMISSIONING_MODE_COMMAND_ID (0x02)
+#define ZCL_GP_TUNNELING_STOP_COMMAND_ID (0x03)
+#define ZCL_GP_COMMISSIONING_NOTIFICATION_COMMAND_ID (0x04)
+#define ZCL_GP_SINK_COMMISSIONING_MODE_COMMAND_ID (0x05)
+#define ZCL_GP_RESPONSE_COMMAND_ID (0x06)
+#define ZCL_GP_TRANSLATION_TABLE_UPDATE_COMMAND_ID (0x07)
+#define ZCL_GP_TRANSLATION_TABLE_REQUEST_COMMAND_ID (0x08)
+#define ZCL_GP_TRANSLATION_TABLE_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_GP_PAIRING_CONFIGURATION_COMMAND_ID (0x09)
+#define ZCL_GP_SINK_TABLE_REQUEST_COMMAND_ID (0x0A)
+#define ZCL_GP_SINK_TABLE_RESPONSE_COMMAND_ID (0x0A)
+#define ZCL_GP_PROXY_TABLE_RESPONSE_COMMAND_ID (0x0B)
+#define ZCL_GP_PROXY_TABLE_REQUEST_COMMAND_ID (0x0B)
+
+// Commands for cluster: Door Lock
+#define ZCL_LOCK_DOOR_COMMAND_ID (0x00)
+#define ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_UNLOCK_DOOR_COMMAND_ID (0x01)
+#define ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_TOGGLE_COMMAND_ID (0x02)
+#define ZCL_TOGGLE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID (0x03)
+#define ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_GET_LOG_RECORD_COMMAND_ID (0x04)
+#define ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_SET_PIN_COMMAND_ID (0x05)
+#define ZCL_SET_PIN_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_GET_PIN_COMMAND_ID (0x06)
+#define ZCL_GET_PIN_RESPONSE_COMMAND_ID (0x06)
+#define ZCL_CLEAR_PIN_COMMAND_ID (0x07)
+#define ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_CLEAR_ALL_PINS_COMMAND_ID (0x08)
+#define ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_SET_USER_STATUS_COMMAND_ID (0x09)
+#define ZCL_SET_USER_STATUS_RESPONSE_COMMAND_ID (0x09)
+#define ZCL_GET_USER_STATUS_COMMAND_ID (0x0A)
+#define ZCL_GET_USER_STATUS_RESPONSE_COMMAND_ID (0x0A)
+#define ZCL_SET_WEEKDAY_SCHEDULE_COMMAND_ID (0x0B)
+#define ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0B)
+#define ZCL_GET_WEEKDAY_SCHEDULE_COMMAND_ID (0x0C)
+#define ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0C)
+#define ZCL_CLEAR_WEEKDAY_SCHEDULE_COMMAND_ID (0x0D)
+#define ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0D)
+#define ZCL_SET_YEARDAY_SCHEDULE_COMMAND_ID (0x0E)
+#define ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0E)
+#define ZCL_GET_YEARDAY_SCHEDULE_COMMAND_ID (0x0F)
+#define ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0F)
+#define ZCL_CLEAR_YEARDAY_SCHEDULE_COMMAND_ID (0x10)
+#define ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x10)
+#define ZCL_SET_HOLIDAY_SCHEDULE_COMMAND_ID (0x11)
+#define ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x11)
+#define ZCL_GET_HOLIDAY_SCHEDULE_COMMAND_ID (0x12)
+#define ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x12)
+#define ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID (0x13)
+#define ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x13)
+#define ZCL_SET_USER_TYPE_COMMAND_ID (0x14)
+#define ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID (0x14)
+#define ZCL_GET_USER_TYPE_COMMAND_ID (0x15)
+#define ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID (0x15)
+#define ZCL_SET_RFID_COMMAND_ID (0x16)
+#define ZCL_SET_RFID_RESPONSE_COMMAND_ID (0x16)
+#define ZCL_GET_RFID_COMMAND_ID (0x17)
+#define ZCL_GET_RFID_RESPONSE_COMMAND_ID (0x17)
+#define ZCL_CLEAR_RFID_COMMAND_ID (0x18)
+#define ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID (0x18)
+#define ZCL_CLEAR_ALL_RFIDS_COMMAND_ID (0x19)
+#define ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID (0x19)
+#define ZCL_OPERATION_EVENT_NOTIFICATION_COMMAND_ID (0x20)
+#define ZCL_PROGRAMMING_EVENT_NOTIFICATION_COMMAND_ID (0x21)
+
+// Commands for cluster: Window Covering
+#define ZCL_WINDOW_COVERING_UP_OPEN_COMMAND_ID (0x00)
+#define ZCL_WINDOW_COVERING_DOWN_CLOSE_COMMAND_ID (0x01)
+#define ZCL_WINDOW_COVERING_STOP_COMMAND_ID (0x02)
+#define ZCL_WINDOW_COVERING_GO_TO_LIFT_VALUE_COMMAND_ID (0x04)
+#define ZCL_WINDOW_COVERING_GO_TO_LIFT_PERCENTAGE_COMMAND_ID (0x05)
+#define ZCL_WINDOW_COVERING_GO_TO_TILT_VALUE_COMMAND_ID (0x07)
+#define ZCL_WINDOW_COVERING_GO_TO_TILT_PERCENTAGE_COMMAND_ID (0x08)
+
+// Commands for cluster: Barrier Control
+#define ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID (0x00)
+#define ZCL_BARRIER_CONTROL_STOP_COMMAND_ID (0x01)
+
+// Commands for cluster: Thermostat
+#define ZCL_SETPOINT_RAISE_LOWER_COMMAND_ID (0x00)
+#define ZCL_CURRENT_WEEKLY_SCHEDULE_COMMAND_ID (0x00)
+#define ZCL_SET_WEEKLY_SCHEDULE_COMMAND_ID (0x01)
+#define ZCL_RELAY_STATUS_LOG_COMMAND_ID (0x01)
+#define ZCL_GET_WEEKLY_SCHEDULE_COMMAND_ID (0x02)
+#define ZCL_CLEAR_WEEKLY_SCHEDULE_COMMAND_ID (0x03)
+#define ZCL_GET_RELAY_STATUS_LOG_COMMAND_ID (0x04)
+
+// Commands for cluster: Color Control
+#define ZCL_MOVE_TO_HUE_COMMAND_ID (0x00)
+#define ZCL_MOVE_HUE_COMMAND_ID (0x01)
+#define ZCL_STEP_HUE_COMMAND_ID (0x02)
+#define ZCL_MOVE_TO_SATURATION_COMMAND_ID (0x03)
+#define ZCL_MOVE_SATURATION_COMMAND_ID (0x04)
+#define ZCL_STEP_SATURATION_COMMAND_ID (0x05)
+#define ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID (0x06)
+#define ZCL_MOVE_TO_COLOR_COMMAND_ID (0x07)
+#define ZCL_MOVE_COLOR_COMMAND_ID (0x08)
+#define ZCL_STEP_COLOR_COMMAND_ID (0x09)
+#define ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID (0x0A)
+#define ZCL_ENHANCED_MOVE_TO_HUE_COMMAND_ID (0x40)
+#define ZCL_ENHANCED_MOVE_HUE_COMMAND_ID (0x41)
+#define ZCL_ENHANCED_STEP_HUE_COMMAND_ID (0x42)
+#define ZCL_ENHANCED_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID (0x43)
+#define ZCL_COLOR_LOOP_SET_COMMAND_ID (0x44)
+#define ZCL_STOP_MOVE_STEP_COMMAND_ID (0x47)
+#define ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID (0x4B)
+#define ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID (0x4C)
+
+// Commands for cluster: IAS Zone
+#define ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_ZONE_STATUS_CHANGE_NOTIFICATION_COMMAND_ID (0x00)
+#define ZCL_INITIATE_NORMAL_OPERATION_MODE_COMMAND_ID (0x01)
+#define ZCL_ZONE_ENROLL_REQUEST_COMMAND_ID (0x01)
+#define ZCL_INITIATE_TEST_MODE_COMMAND_ID (0x02)
+#define ZCL_INITIATE_NORMAL_OPERATION_MODE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_INITIATE_TEST_MODE_RESPONSE_COMMAND_ID (0x03)
+
+// Commands for cluster: IAS ACE
+#define ZCL_ARM_COMMAND_ID (0x00)
+#define ZCL_ARM_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_BYPASS_COMMAND_ID (0x01)
+#define ZCL_GET_ZONE_ID_MAP_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_EMERGENCY_COMMAND_ID (0x02)
+#define ZCL_GET_ZONE_INFORMATION_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_FIRE_COMMAND_ID (0x03)
+#define ZCL_ZONE_STATUS_CHANGED_COMMAND_ID (0x03)
+#define ZCL_PANIC_COMMAND_ID (0x04)
+#define ZCL_PANEL_STATUS_CHANGED_COMMAND_ID (0x04)
+#define ZCL_GET_ZONE_ID_MAP_COMMAND_ID (0x05)
+#define ZCL_GET_PANEL_STATUS_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_GET_ZONE_INFORMATION_COMMAND_ID (0x06)
+#define ZCL_SET_BYPASSED_ZONE_LIST_COMMAND_ID (0x06)
+#define ZCL_GET_PANEL_STATUS_COMMAND_ID (0x07)
+#define ZCL_BYPASS_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_GET_BYPASSED_ZONE_LIST_COMMAND_ID (0x08)
+#define ZCL_GET_ZONE_STATUS_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_GET_ZONE_STATUS_COMMAND_ID (0x09)
+
+// Commands for cluster: IAS WD
+#define ZCL_START_WARNING_COMMAND_ID (0x00)
+#define ZCL_SQUAWK_COMMAND_ID (0x01)
+
+// Commands for cluster: Generic Tunnel
+#define ZCL_MATCH_PROTOCOL_ADDRESS_COMMAND_ID (0x00)
+#define ZCL_MATCH_PROTOCOL_ADDRESS_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_ADVERTISE_PROTOCOL_ADDRESS_COMMAND_ID (0x01)
+
+// Commands for cluster: BACnet Protocol Tunnel
+#define ZCL_TRANSFER_NPDU_COMMAND_ID (0x00)
+
+// Commands for cluster: 11073 Protocol Tunnel
+#define ZCL_TRANSFER_APDU_COMMAND_ID (0x00)
+#define ZCL_CONNECT_REQUEST_COMMAND_ID (0x01)
+#define ZCL_DISCONNECT_REQUEST_COMMAND_ID (0x02)
+#define ZCL_CONNECT_STATUS_NOTIFICATION_COMMAND_ID (0x03)
+
+// Commands for cluster: ISO 7816 Protocol Tunnel
+#define ZCL_TRANSFER_APDU_COMMAND_ID (0x00)
+#define ZCL_INSERT_SMART_CARD_COMMAND_ID (0x01)
+#define ZCL_EXTRACT_SMART_CARD_COMMAND_ID (0x02)
+
+// Commands for cluster: Price
+#define ZCL_PUBLISH_PRICE_COMMAND_ID (0x00)
+#define ZCL_GET_CURRENT_PRICE_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_BLOCK_PERIOD_COMMAND_ID (0x01)
+#define ZCL_GET_SCHEDULED_PRICES_COMMAND_ID (0x01)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_COMMAND_ID (0x02)
+#define ZCL_PRICE_ACKNOWLEDGEMENT_COMMAND_ID (0x02)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_COMMAND_ID (0x03)
+#define ZCL_GET_BLOCK_PERIODS_COMMAND_ID (0x03)
+#define ZCL_PUBLISH_TARIFF_INFORMATION_COMMAND_ID (0x04)
+#define ZCL_GET_CONVERSION_FACTOR_COMMAND_ID (0x04)
+#define ZCL_PUBLISH_PRICE_MATRIX_COMMAND_ID (0x05)
+#define ZCL_GET_CALORIFIC_VALUE_COMMAND_ID (0x05)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_COMMAND_ID (0x06)
+#define ZCL_GET_TARIFF_INFORMATION_COMMAND_ID (0x06)
+#define ZCL_PUBLISH_CO2_VALUE_COMMAND_ID (0x07)
+#define ZCL_GET_PRICE_MATRIX_COMMAND_ID (0x07)
+#define ZCL_PUBLISH_TIER_LABELS_COMMAND_ID (0x08)
+#define ZCL_GET_BLOCK_THRESHOLDS_COMMAND_ID (0x08)
+#define ZCL_PUBLISH_BILLING_PERIOD_COMMAND_ID (0x09)
+#define ZCL_GET_CO2_VALUE_COMMAND_ID (0x09)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_COMMAND_ID (0x0A)
+#define ZCL_GET_TIER_LABELS_COMMAND_ID (0x0A)
+#define ZCL_PUBLISH_CPP_EVENT_COMMAND_ID (0x0B)
+#define ZCL_GET_BILLING_PERIOD_COMMAND_ID (0x0B)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_COMMAND_ID (0x0C)
+#define ZCL_GET_CONSOLIDATED_BILL_COMMAND_ID (0x0C)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_COMMAND_ID (0x0D)
+#define ZCL_CPP_EVENT_RESPONSE_COMMAND_ID (0x0D)
+#define ZCL_CANCEL_TARIFF_COMMAND_ID (0x0E)
+#define ZCL_GET_CREDIT_PAYMENT_COMMAND_ID (0x0E)
+#define ZCL_GET_CURRENCY_CONVERSION_COMMAND_COMMAND_ID (0x0F)
+#define ZCL_GET_TARIFF_CANCELLATION_COMMAND_ID (0x10)
+
+// Commands for cluster: Demand Response and Load Control
+#define ZCL_LOAD_CONTROL_EVENT_COMMAND_ID (0x00)
+#define ZCL_REPORT_EVENT_STATUS_COMMAND_ID (0x00)
+#define ZCL_CANCEL_LOAD_CONTROL_EVENT_COMMAND_ID (0x01)
+#define ZCL_GET_SCHEDULED_EVENTS_COMMAND_ID (0x01)
+#define ZCL_CANCEL_ALL_LOAD_CONTROL_EVENTS_COMMAND_ID (0x02)
+
+// Commands for cluster: Simple Metering
+#define ZCL_GET_PROFILE_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_GET_PROFILE_COMMAND_ID (0x00)
+#define ZCL_REQUEST_MIRROR_COMMAND_ID (0x01)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_REMOVE_MIRROR_COMMAND_ID (0x02)
+#define ZCL_MIRROR_REMOVED_COMMAND_ID (0x02)
+#define ZCL_REQUEST_FAST_POLL_MODE_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_REQUEST_FAST_POLL_MODE_COMMAND_ID (0x03)
+#define ZCL_SCHEDULE_SNAPSHOT_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_ID (0x04)
+#define ZCL_TAKE_SNAPSHOT_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_ID (0x05)
+#define ZCL_PUBLISH_SNAPSHOT_COMMAND_ID (0x06)
+#define ZCL_GET_SNAPSHOT_COMMAND_ID (0x06)
+#define ZCL_GET_SAMPLED_DATA_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_START_SAMPLING_COMMAND_ID (0x07)
+#define ZCL_CONFIGURE_MIRROR_COMMAND_ID (0x08)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_ID (0x08)
+#define ZCL_CONFIGURE_NOTIFICATION_SCHEME_COMMAND_ID (0x09)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_ID (0x09)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAGS_COMMAND_ID (0x0A)
+#define ZCL_RESET_LOAD_LIMIT_COUNTER_COMMAND_ID (0x0A)
+#define ZCL_GET_NOTIFIED_MESSAGE_COMMAND_ID (0x0B)
+#define ZCL_CHANGE_SUPPLY_COMMAND_ID (0x0B)
+#define ZCL_SUPPLY_STATUS_RESPONSE_COMMAND_ID (0x0C)
+#define ZCL_LOCAL_CHANGE_SUPPLY_COMMAND_ID (0x0C)
+#define ZCL_START_SAMPLING_RESPONSE_COMMAND_ID (0x0D)
+#define ZCL_SET_SUPPLY_STATUS_COMMAND_ID (0x0D)
+#define ZCL_SET_UNCONTROLLED_FLOW_THRESHOLD_COMMAND_ID (0x0E)
+
+// Commands for cluster: Messaging
+#define ZCL_DISPLAY_MESSAGE_COMMAND_ID (0x00)
+#define ZCL_GET_LAST_MESSAGE_COMMAND_ID (0x00)
+#define ZCL_CANCEL_MESSAGE_COMMAND_ID (0x01)
+#define ZCL_MESSAGE_CONFIRMATION_COMMAND_ID (0x01)
+#define ZCL_DISPLAY_PROTECTED_MESSAGE_COMMAND_ID (0x02)
+#define ZCL_GET_MESSAGE_CANCELLATION_COMMAND_ID (0x02)
+#define ZCL_CANCEL_ALL_MESSAGES_COMMAND_ID (0x03)
+
+// Commands for cluster: Tunneling
+#define ZCL_REQUEST_TUNNEL_COMMAND_ID (0x00)
+#define ZCL_REQUEST_TUNNEL_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_CLOSE_TUNNEL_COMMAND_ID (0x01)
+#define ZCL_TRANSFER_DATA_SERVER_TO_CLIENT_COMMAND_ID (0x01)
+#define ZCL_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID (0x02)
+#define ZCL_TRANSFER_DATA_ERROR_SERVER_TO_CLIENT_COMMAND_ID (0x02)
+#define ZCL_TRANSFER_DATA_ERROR_CLIENT_TO_SERVER_COMMAND_ID (0x03)
+#define ZCL_ACK_TRANSFER_DATA_SERVER_TO_CLIENT_COMMAND_ID (0x03)
+#define ZCL_ACK_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID (0x04)
+#define ZCL_READY_DATA_SERVER_TO_CLIENT_COMMAND_ID (0x04)
+#define ZCL_READY_DATA_CLIENT_TO_SERVER_COMMAND_ID (0x05)
+#define ZCL_SUPPORTED_TUNNEL_PROTOCOLS_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_ID (0x06)
+#define ZCL_TUNNEL_CLOSURE_NOTIFICATION_COMMAND_ID (0x06)
+
+// Commands for cluster: Prepayment
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_PREPAY_SNAPSHOT_COMMAND_ID (0x01)
+#define ZCL_CHANGE_DEBT_COMMAND_ID (0x02)
+#define ZCL_CHANGE_PAYMENT_MODE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_EMERGENCY_CREDIT_SETUP_COMMAND_ID (0x03)
+#define ZCL_CONSUMER_TOP_UP_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_CONSUMER_TOP_UP_COMMAND_ID (0x04)
+#define ZCL_CREDIT_ADJUSTMENT_COMMAND_ID (0x05)
+#define ZCL_PUBLISH_TOP_UP_LOG_COMMAND_ID (0x05)
+#define ZCL_CHANGE_PAYMENT_MODE_COMMAND_ID (0x06)
+#define ZCL_PUBLISH_DEBT_LOG_COMMAND_ID (0x06)
+#define ZCL_GET_PREPAY_SNAPSHOT_COMMAND_ID (0x07)
+#define ZCL_GET_TOP_UP_LOG_COMMAND_ID (0x08)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_COMMAND_ID (0x09)
+#define ZCL_GET_DEBT_REPAYMENT_LOG_COMMAND_ID (0x0A)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_COMMAND_ID (0x0B)
+#define ZCL_SET_OVERALL_DEBT_CAP_COMMAND_ID (0x0C)
+
+// Commands for cluster: Energy Management
+#define ZCL_REPORT_EVENT_STATUS_COMMAND_ID (0x00)
+#define ZCL_MANAGE_EVENT_COMMAND_ID (0x00)
+
+// Commands for cluster: Calendar
+#define ZCL_PUBLISH_CALENDAR_COMMAND_ID (0x00)
+#define ZCL_GET_CALENDAR_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_DAY_PROFILE_COMMAND_ID (0x01)
+#define ZCL_GET_DAY_PROFILES_COMMAND_ID (0x01)
+#define ZCL_PUBLISH_WEEK_PROFILE_COMMAND_ID (0x02)
+#define ZCL_GET_WEEK_PROFILES_COMMAND_ID (0x02)
+#define ZCL_PUBLISH_SEASONS_COMMAND_ID (0x03)
+#define ZCL_GET_SEASONS_COMMAND_ID (0x03)
+#define ZCL_PUBLISH_SPECIAL_DAYS_COMMAND_ID (0x04)
+#define ZCL_GET_SPECIAL_DAYS_COMMAND_ID (0x04)
+#define ZCL_CANCEL_CALENDAR_COMMAND_ID (0x05)
+#define ZCL_GET_CALENDAR_CANCELLATION_COMMAND_ID (0x05)
+
+// Commands for cluster: Device Management
+#define ZCL_GET_CHANGE_OF_TENANCY_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_CHANGE_OF_TENANCY_COMMAND_ID (0x00)
+#define ZCL_GET_CHANGE_OF_SUPPLIER_COMMAND_ID (0x01)
+#define ZCL_PUBLISH_CHANGE_OF_SUPPLIER_COMMAND_ID (0x01)
+#define ZCL_REQUEST_NEW_PASSWORD_COMMAND_ID (0x02)
+#define ZCL_REQUEST_NEW_PASSWORD_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_GET_SITE_ID_COMMAND_ID (0x03)
+#define ZCL_UPDATE_SITE_ID_COMMAND_ID (0x03)
+#define ZCL_REPORT_EVENT_CONFIGURATION_COMMAND_ID (0x04)
+#define ZCL_SET_EVENT_CONFIGURATION_COMMAND_ID (0x04)
+#define ZCL_GET_CIN_COMMAND_ID (0x05)
+#define ZCL_GET_EVENT_CONFIGURATION_COMMAND_ID (0x05)
+#define ZCL_UPDATE_CIN_COMMAND_ID (0x06)
+
+// Commands for cluster: Events
+#define ZCL_GET_EVENT_LOG_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_EVENT_COMMAND_ID (0x00)
+#define ZCL_CLEAR_EVENT_LOG_REQUEST_COMMAND_ID (0x01)
+#define ZCL_PUBLISH_EVENT_LOG_COMMAND_ID (0x01)
+#define ZCL_CLEAR_EVENT_LOG_RESPONSE_COMMAND_ID (0x02)
+
+// Commands for cluster: MDU Pairing
+#define ZCL_PAIRING_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_PAIRING_REQUEST_COMMAND_ID (0x00)
+
+// Commands for cluster: Sub-GHz
+#define ZCL_SUSPEND_ZCL_MESSAGES_COMMAND_ID (0x00)
+#define ZCL_GET_SUSPEND_ZCL_MESSAGES_STATUS_COMMAND_ID (0x00)
+
+// Commands for cluster: Key Establishment
+#define ZCL_INITIATE_KEY_ESTABLISHMENT_REQUEST_COMMAND_ID (0x00)
+#define ZCL_INITIATE_KEY_ESTABLISHMENT_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_EPHEMERAL_DATA_REQUEST_COMMAND_ID (0x01)
+#define ZCL_EPHEMERAL_DATA_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_CONFIRM_KEY_DATA_REQUEST_COMMAND_ID (0x02)
+#define ZCL_CONFIRM_KEY_DATA_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_TERMINATE_KEY_ESTABLISHMENT_COMMAND_ID (0x03)
+
+// Commands for cluster: Information
+#define ZCL_REQUEST_INFORMATION_COMMAND_ID (0x00)
+#define ZCL_REQUEST_INFORMATION_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_PUSH_INFORMATION_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_PUSH_INFORMATION_COMMAND_ID (0x01)
+#define ZCL_SEND_PREFERENCE_COMMAND_ID (0x02)
+#define ZCL_SEND_PREFERENCE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_REQUEST_PREFERENCE_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_SERVER_REQUEST_PREFERENCE_COMMAND_ID (0x03)
+#define ZCL_UPDATE_COMMAND_ID (0x04)
+#define ZCL_REQUEST_PREFERENCE_CONFIRMATION_COMMAND_ID (0x04)
+#define ZCL_DELETE_COMMAND_ID (0x05)
+#define ZCL_UPDATE_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_CONFIGURE_NODE_DESCRIPTION_COMMAND_ID (0x06)
+#define ZCL_DELETE_RESPONSE_COMMAND_ID (0x06)
+#define ZCL_CONFIGURE_DELIVERY_ENABLE_COMMAND_ID (0x07)
+#define ZCL_CONFIGURE_PUSH_INFORMATION_TIMER_COMMAND_ID (0x08)
+#define ZCL_CONFIGURE_SET_ROOT_ID_COMMAND_ID (0x09)
+
+// Commands for cluster: Data Sharing
+#define ZCL_READ_FILE_REQUEST_COMMAND_ID (0x00)
+#define ZCL_WRITE_FILE_REQUEST_COMMAND_ID (0x00)
+#define ZCL_READ_RECORD_REQUEST_COMMAND_ID (0x01)
+#define ZCL_MODIFY_FILE_REQUEST_COMMAND_ID (0x01)
+#define ZCL_WRITE_FILE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_MODIFY_RECORD_REQUEST_COMMAND_ID (0x02)
+#define ZCL_FILE_TRANSMISSION_COMMAND_ID (0x03)
+#define ZCL_RECORD_TRANSMISSION_COMMAND_ID (0x04)
+
+// Commands for cluster: Gaming
+#define ZCL_SEARCH_GAME_COMMAND_ID (0x00)
+#define ZCL_GAME_ANNOUNCEMENT_COMMAND_ID (0x00)
+#define ZCL_JOIN_GAME_COMMAND_ID (0x01)
+#define ZCL_GENERAL_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_START_GAME_COMMAND_ID (0x02)
+#define ZCL_PAUSE_GAME_COMMAND_ID (0x03)
+#define ZCL_RESUME_GAME_COMMAND_ID (0x04)
+#define ZCL_QUIT_GAME_COMMAND_ID (0x05)
+#define ZCL_END_GAME_COMMAND_ID (0x06)
+#define ZCL_START_OVER_COMMAND_ID (0x07)
+#define ZCL_ACTION_CONTROL_COMMAND_ID (0x08)
+#define ZCL_DOWNLOAD_GAME_COMMAND_ID (0x09)
+
+// Commands for cluster: Data Rate Control
+#define ZCL_PATH_CREATION_COMMAND_ID (0x00)
+#define ZCL_DATA_RATE_CONTROL_COMMAND_ID (0x00)
+#define ZCL_DATA_RATE_NOTIFICATION_COMMAND_ID (0x01)
+#define ZCL_PATH_DELETION_COMMAND_ID (0x02)
+
+// Commands for cluster: Voice over ZigBee
+#define ZCL_ESTABLISHMENT_REQUEST_COMMAND_ID (0x00)
+#define ZCL_ESTABLISHMENT_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_VOICE_TRANSMISSION_COMMAND_ID (0x01)
+#define ZCL_VOICE_TRANSMISSION_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_VOICE_TRANSMISSION_COMPLETION_COMMAND_ID (0x02)
+#define ZCL_CONTROL_COMMAND_ID (0x02)
+#define ZCL_CONTROL_RESPONSE_COMMAND_ID (0x03)
+
+// Commands for cluster: Chatting
+#define ZCL_JOIN_CHAT_REQUEST_COMMAND_ID (0x00)
+#define ZCL_START_CHAT_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_LEAVE_CHAT_REQUEST_COMMAND_ID (0x01)
+#define ZCL_JOIN_CHAT_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_SEARCH_CHAT_REQUEST_COMMAND_ID (0x02)
+#define ZCL_USER_LEFT_COMMAND_ID (0x02)
+#define ZCL_SWITCH_CHAIRMAN_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_USER_JOINED_COMMAND_ID (0x03)
+#define ZCL_START_CHAT_REQUEST_COMMAND_ID (0x04)
+#define ZCL_SEARCH_CHAT_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_CHAT_MESSAGE_COMMAND_ID (0x05)
+#define ZCL_SWITCH_CHAIRMAN_REQUEST_COMMAND_ID (0x05)
+#define ZCL_GET_NODE_INFORMATION_REQUEST_COMMAND_ID (0x06)
+#define ZCL_SWITCH_CHAIRMAN_CONFIRM_COMMAND_ID (0x06)
+#define ZCL_SWITCH_CHAIRMAN_NOTIFICATION_COMMAND_ID (0x07)
+#define ZCL_GET_NODE_INFORMATION_RESPONSE_COMMAND_ID (0x08)
+
+// Commands for cluster: Payment
+#define ZCL_BUY_REQUEST_COMMAND_ID (0x00)
+#define ZCL_BUY_CONFIRM_COMMAND_ID (0x00)
+#define ZCL_ACCEPT_PAYMENT_COMMAND_ID (0x01)
+#define ZCL_RECEIPT_DELIVERY_COMMAND_ID (0x01)
+#define ZCL_PAYMENT_CONFIRM_COMMAND_ID (0x02)
+#define ZCL_TRANSACTION_END_COMMAND_ID (0x02)
+
+// Commands for cluster: Billing
+#define ZCL_SUBSCRIBE_COMMAND_ID (0x00)
+#define ZCL_CHECK_BILL_STATUS_COMMAND_ID (0x00)
+#define ZCL_UNSUBSCRIBE_COMMAND_ID (0x01)
+#define ZCL_SEND_BILL_RECORD_COMMAND_ID (0x01)
+#define ZCL_START_BILLING_SESSION_COMMAND_ID (0x02)
+#define ZCL_STOP_BILLING_SESSION_COMMAND_ID (0x03)
+#define ZCL_BILL_STATUS_NOTIFICATION_COMMAND_ID (0x04)
+#define ZCL_SESSION_KEEP_ALIVE_COMMAND_ID (0x05)
+
+// Commands for cluster: Appliance Events and Alert
+#define ZCL_GET_ALERTS_COMMAND_ID (0x00)
+#define ZCL_GET_ALERTS_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_ALERTS_NOTIFICATION_COMMAND_ID (0x01)
+#define ZCL_EVENTS_NOTIFICATION_COMMAND_ID (0x02)
+
+// Commands for cluster: Appliance Statistics
+#define ZCL_LOG_NOTIFICATION_COMMAND_ID (0x00)
+#define ZCL_LOG_REQUEST_COMMAND_ID (0x00)
+#define ZCL_LOG_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_LOG_QUEUE_REQUEST_COMMAND_ID (0x01)
+#define ZCL_LOG_QUEUE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_STATISTICS_AVAILABLE_COMMAND_ID (0x03)
+
+// Commands for cluster: Electrical Measurement
+#define ZCL_GET_PROFILE_INFO_RESPONSE_COMMAND_COMMAND_ID (0x00)
+#define ZCL_GET_PROFILE_INFO_COMMAND_COMMAND_ID (0x00)
+#define ZCL_GET_MEASUREMENT_PROFILE_RESPONSE_COMMAND_COMMAND_ID (0x01)
+#define ZCL_GET_MEASUREMENT_PROFILE_COMMAND_COMMAND_ID (0x01)
+
+// Commands for cluster: ZLL Commissioning
+#define ZCL_SCAN_REQUEST_COMMAND_ID (0x00)
+#define ZCL_SCAN_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_DEVICE_INFORMATION_REQUEST_COMMAND_ID (0x02)
+#define ZCL_DEVICE_INFORMATION_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_IDENTIFY_REQUEST_COMMAND_ID (0x06)
+#define ZCL_RESET_TO_FACTORY_NEW_REQUEST_COMMAND_ID (0x07)
+#define ZCL_NETWORK_START_REQUEST_COMMAND_ID (0x10)
+#define ZCL_NETWORK_START_RESPONSE_COMMAND_ID (0x11)
+#define ZCL_NETWORK_JOIN_ROUTER_REQUEST_COMMAND_ID (0x12)
+#define ZCL_NETWORK_JOIN_ROUTER_RESPONSE_COMMAND_ID (0x13)
+#define ZCL_NETWORK_JOIN_END_DEVICE_REQUEST_COMMAND_ID (0x14)
+#define ZCL_NETWORK_JOIN_END_DEVICE_RESPONSE_COMMAND_ID (0x15)
+#define ZCL_NETWORK_UPDATE_REQUEST_COMMAND_ID (0x16)
+#define ZCL_ENDPOINT_INFORMATION_COMMAND_ID (0x40)
+#define ZCL_GET_GROUP_IDENTIFIERS_REQUEST_COMMAND_ID (0x41)
+#define ZCL_GET_GROUP_IDENTIFIERS_RESPONSE_COMMAND_ID (0x41)
+#define ZCL_GET_ENDPOINT_LIST_REQUEST_COMMAND_ID (0x42)
+#define ZCL_GET_ENDPOINT_LIST_RESPONSE_COMMAND_ID (0x42)
+
+// Commands for cluster: Binding
+#define ZCL_BIND_COMMAND_ID (0x00)
+#define ZCL_UNBIND_COMMAND_ID (0x01)
+
+// Commands for cluster: Sample Mfg Specific Cluster
+#define ZCL_COMMAND_ONE_COMMAND_ID (0x00)
+
+// Commands for cluster: Sample Mfg Specific Cluster 2
+#define ZCL_COMMAND_TWO_COMMAND_ID (0x00)
+
+// Commands for cluster: Configuration Cluster
+#define ZCL_SET_TOKEN_COMMAND_ID (0x00)
+#define ZCL_RETURN_TOKEN_COMMAND_ID (0x00)
+#define ZCL_LOCK_TOKENS_COMMAND_ID (0x01)
+#define ZCL_READ_TOKENS_COMMAND_ID (0x02)
+#define ZCL_UNLOCK_TOKENS_COMMAND_ID (0x03)
+
+// Commands for cluster: MFGLIB Cluster
+#define ZCL_STREAM_COMMAND_ID (0x00)
+#define ZCL_TONE_COMMAND_ID (0x01)
+#define ZCL_RX_MODE_COMMAND_ID (0x02)
+
+// Commands for cluster: SL Works With All Hubs
+#define ZCL_ENABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID (0x00)
+#define ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_DISABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID (0x01)
+#define ZCL_POWERING_OFF_NOTIFICATION_COMMAND_ID (0x01)
+#define ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_COMMAND_ID (0x02)
+#define ZCL_POWERING_ON_NOTIFICATION_COMMAND_ID (0x02)
+#define ZCL_REQUEST_NEW_APS_LINK_KEY_COMMAND_ID (0x03)
+#define ZCL_SHORT_ADDRESS_CHANGE_COMMAND_ID (0x03)
+#define ZCL_ENABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID (0x04)
+#define ZCL_APS_ACK_ENABLEMENT_QUERY_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_DISABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID (0x05)
+#define ZCL_POWER_DESCRIPTOR_CHANGE_COMMAND_ID (0x05)
+#define ZCL_REQUEST_TIME_COMMAND_ID (0x06)
+#define ZCL_NEW_DEBUG_REPORT_NOTIFICATION_COMMAND_ID (0x06)
+#define ZCL_ENABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID (0x07)
+#define ZCL_DEBUG_REPORT_QUERY_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_DISABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID (0x08)
+#define ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_SET_IAS_ZONE_ENROLLMENT_METHOD_COMMAND_ID (0x09)
+#define ZCL_SURVEY_BEACONS_RESPONSE_COMMAND_ID (0x09)
+#define ZCL_CLEAR_BINDING_TABLE_COMMAND_ID (0x0A)
+#define ZCL_ENABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID (0x0B)
+#define ZCL_DISABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID (0x0C)
+#define ZCL_SET_MAC_POLL_FAILURE_WAIT_TIME_COMMAND_ID (0x0D)
+#define ZCL_SET_PENDING_NETWORK_UPDATE_COMMAND_ID (0x0E)
+#define ZCL_REQUIRE_APS_ACKS_ON_UNICASTS_COMMAND_ID (0x0F)
+#define ZCL_REMOVE_APS_ACKS_ON_UNICASTS_REQUIREMENT_COMMAND_ID (0x10)
+#define ZCL_APS_ACK_REQUIREMENT_QUERY_COMMAND_ID (0x11)
+#define ZCL_DEBUG_REPORT_QUERY_COMMAND_ID (0x12)
+#define ZCL_SURVEY_BEACONS_COMMAND_ID (0x13)
+#define ZCL_DISABLE_OTA_DOWNGRADES_COMMAND_ID (0x14)
+#define ZCL_DISABLE_MGMT_LEAVE_WITHOUT_REJOIN_COMMAND_ID (0x15)
+#define ZCL_DISABLE_TOUCHLINK_INTERPAN_MESSAGE_SUPPORT_COMMAND_ID (0x16)
+#define ZCL_ENABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID (0x17)
+#define ZCL_DISABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID (0x18)
+#define ZCL_ENABLE_TC_SECURITY_ON_NTWK_KEY_ROTATION_COMMAND_ID (0x19)
+#define ZCL_ENABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID (0x1A)
+#define ZCL_DISABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID (0x1B)
+#define ZCL_ENABLE_CONFIGURATION_MODE_COMMAND_ID (0x1C)
+#define ZCL_DISABLE_CONFIGURATION_MODE_COMMAND_ID (0x1D)
+#define ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_COMMAND_ID (0x1E)
+#define ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_COMMAND_ID (0x1F)
+#define ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_RESPONSE_COMMAND_ID (0x9E)
diff --git a/examples/chip-tool/gen/endpoint_config.h b/examples/chip-tool/gen/endpoint_config.h
new file mode 100644
index 0000000..2d57360
--- /dev/null
+++ b/examples/chip-tool/gen/endpoint_config.h
@@ -0,0 +1,428 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Default values for the attributes longer than a pointer,
+// in a form of a binary blob
+// Separate block is generated for big-endian and little-endian cases.
+#if BIGENDIAN_CPU
+#define GENERATED_DEFAULTS \
+ { \
+ }
+
+#else // !BIGENDIAN_CPU
+#define GENERATED_DEFAULTS \
+ { \
+ }
+
+#endif // BIGENDIAN_CPU
+
+#define GENERATED_DEFAULTS_COUNT (0)
+
+#define ZAP_TYPE(type) ZCL_##type##_ATTRIBUTE_TYPE
+#define ZAP_LONG_DEFAULTS_INDEX(index) \
+ { \
+ (uint8_t *) (&generatedDefaults[index]) \
+ }
+#define ZAP_MIN_MAX_DEFAULTS_INDEX(index) \
+ { \
+ (uint8_t *) (&minMaxDefault[index]) \
+ }
+
+// This is an array of EmberAfAttributeMinMaxValue structures.
+#define GENERATED_MIN_MAX_DEFAULT_COUNT 0
+#define GENERATED_MIN_MAX_DEFAULTS \
+ { \
+ }
+
+#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
+// This is an array of EmberAfAttributeMetadata structures.
+#define GENERATED_ATTRIBUTE_COUNT 11
+#define GENERATED_ATTRIBUTES \
+ { \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } }, /* Basic (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 2 } \
+ }, /* Identify (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Groups (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Scenes (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 2 } \
+ }, /* On/off (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Level Control (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Door Lock (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 } \
+ }, /* Barrier Control (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Color Control (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Temperature Measurement (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 } \
+ }, /* Binding (client): cluster revision */ \
+ }
+
+// This is an array of EmberAfCluster structures.
+#define ZAP_ATTRIBUTE_INDEX(index) ((EmberAfAttributeMetadata *) (&generatedAttributes[index]))
+
+// Cluster function static arrays
+#define GENERATED_FUNCTION_ARRAYS
+
+#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
+#define GENERATED_CLUSTER_COUNT 11
+#define GENERATED_CLUSTERS \
+ { \
+ { 0x0000, ZAP_ATTRIBUTE_INDEX(0), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Basic (client) */ \
+ { \
+ 0x0003, ZAP_ATTRIBUTE_INDEX(1), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Identify (client) */ \
+ { 0x0004, ZAP_ATTRIBUTE_INDEX(2), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Groups (client) */ \
+ { 0x0005, ZAP_ATTRIBUTE_INDEX(3), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Scenes (client) */ \
+ { 0x0006, ZAP_ATTRIBUTE_INDEX(4), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: On/off (client) */ \
+ { \
+ 0x0008, ZAP_ATTRIBUTE_INDEX(5), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Level Control (client) */ \
+ { \
+ 0x0101, ZAP_ATTRIBUTE_INDEX(6), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Door Lock (client) */ \
+ { \
+ 0x0103, ZAP_ATTRIBUTE_INDEX(7), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Barrier Control (client) */ \
+ { \
+ 0x0300, ZAP_ATTRIBUTE_INDEX(8), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Color Control (client) */ \
+ { \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(9), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \
+ { \
+ 0xF000, ZAP_ATTRIBUTE_INDEX(10), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Binding (client) */ \
+ }
+
+#define ZAP_CLUSTER_INDEX(index) ((EmberAfCluster *) (&generatedClusters[index]))
+
+// This is an array of EmberAfEndpointType structures.
+#define GENERATED_ENDPOINT_TYPES \
+ { \
+ { ZAP_CLUSTER_INDEX(0), 11, 22 }, \
+ }
+
+// Largest attribute size is needed for various buffers
+#define ATTRIBUTE_LARGEST (2)
+
+// Total size of singleton attributes
+#define ATTRIBUTE_SINGLETONS_SIZE (0)
+
+// Total size of attribute storage
+#define ATTRIBUTE_MAX_SIZE (22)
+
+// Number of fixed endpoints
+#define FIXED_ENDPOINT_COUNT (1)
+
+// Array of endpoints that are supported, the data inside
+// the array is the endpoint number.
+#define FIXED_ENDPOINT_ARRAY \
+ { \
+ 0x0001 \
+ }
+
+// Array of profile ids
+#define FIXED_PROFILE_IDS \
+ { \
+ 0x0103 \
+ }
+
+// Array of device ids
+#define FIXED_DEVICE_IDS \
+ { \
+ 0 \
+ }
+
+// Array of device versions
+#define FIXED_DEVICE_VERSIONS \
+ { \
+ 1 \
+ }
+
+// Array of endpoint types supported on each endpoint
+#define FIXED_ENDPOINT_TYPES \
+ { \
+ 0 \
+ }
+
+// Array of networks supported on each endpoint
+#define FIXED_NETWORKS \
+ { \
+ 0 \
+ }
+
+// Array of EmberAfCommandMetadata structs.
+#define ZAP_COMMAND_MASK(mask) COMMAND_MASK_##mask
+#define EMBER_AF_GENERATED_COMMAND_COUNT (105)
+#define GENERATED_COMMANDS \
+ { \
+ { 0x0000, 0x00, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Basic (client): MfgSpecificPing */ \
+ { \
+ 0x0000, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Basic (client): ResetToFactoryDefaults */ \
+ { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (client): Identify */ \
+ { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Identify (client): IdentifyQueryResponse */ \
+ { 0x0003, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (client): IdentifyQuery */ \
+ { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): AddGroup */ \
+ { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): AddGroupResponse */ \
+ { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): ViewGroup */ \
+ { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): ViewGroupResponse */ \
+ { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): GetGroupMembership */ \
+ { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): GetGroupMembershipResponse */ \
+ { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): RemoveGroup */ \
+ { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): RemoveGroupResponse */ \
+ { 0x0004, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): RemoveAllGroups */ \
+ { 0x0004, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): AddGroupIfIdentifying */ \
+ { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): AddScene */ \
+ { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): AddSceneResponse */ \
+ { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): ViewScene */ \
+ { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): ViewSceneResponse */ \
+ { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RemoveScene */ \
+ { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): RemoveSceneResponse */ \
+ { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RemoveAllScenes */ \
+ { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): RemoveAllScenesResponse */ \
+ { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): StoreScene */ \
+ { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): StoreSceneResponse */ \
+ { 0x0005, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RecallScene */ \
+ { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): GetSceneMembership */ \
+ { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): GetSceneMembershipResponse */ \
+ { 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): Off */ \
+ { 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): On */ \
+ { 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): Toggle */ \
+ { 0x0008, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveToLevel */ \
+ { 0x0008, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Move */ \
+ { 0x0008, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Step */ \
+ { 0x0008, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Stop */ \
+ { 0x0008, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveToLevelWithOnOff */ \
+ { 0x0008, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveWithOnOff */ \
+ { 0x0008, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): StepWithOnOff */ \
+ { 0x0008, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): StopWithOnOff */ \
+ { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): LockDoor */ \
+ { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): LockDoorResponse */ \
+ { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): UnlockDoor */ \
+ { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): UnlockDoorResponse */ \
+ { 0x0101, 0x03, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): UnlockWithTimeout */ \
+ { \
+ 0x0101, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): UnlockWithTimeoutResponse */ \
+ { 0x0101, 0x04, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetLogRecord */ \
+ { \
+ 0x0101, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetLogRecordResponse */ \
+ { 0x0101, 0x05, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetPin */ \
+ { 0x0101, 0x05, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetPinResponse */ \
+ { 0x0101, 0x06, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetPin */ \
+ { 0x0101, 0x06, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetPinResponse */ \
+ { 0x0101, 0x07, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearPin */ \
+ { 0x0101, 0x07, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearPinResponse */ \
+ { 0x0101, 0x08, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllPins */ \
+ { \
+ 0x0101, 0x08, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearAllPinsResponse */ \
+ { 0x0101, 0x09, 0 }, /* Door Lock (client): SetUserStatusResponse */ \
+ { 0x0101, 0x0A, 0 }, /* Door Lock (client): GetUserStatusResponse */ \
+ { \
+ 0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetWeekdaySchedule */ \
+ { \
+ 0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetWeekdayScheduleResponse */ \
+ { \
+ 0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetWeekdaySchedule */ \
+ { \
+ 0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetWeekdayScheduleResponse */ \
+ { \
+ 0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearWeekdaySchedule */ \
+ { \
+ 0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearWeekdayScheduleResponse */ \
+ { \
+ 0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetYeardaySchedule */ \
+ { \
+ 0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetYeardayScheduleResponse */ \
+ { \
+ 0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetYeardaySchedule */ \
+ { \
+ 0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetYeardayScheduleResponse */ \
+ { \
+ 0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearYeardaySchedule */ \
+ { \
+ 0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearYeardayScheduleResponse */ \
+ { \
+ 0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetHolidaySchedule */ \
+ { \
+ 0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetHolidayScheduleResponse */ \
+ { \
+ 0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetHolidaySchedule */ \
+ { \
+ 0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetHolidayScheduleResponse */ \
+ { \
+ 0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearHolidaySchedule */ \
+ { \
+ 0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearHolidayScheduleResponse */ \
+ { 0x0101, 0x14, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetUserType */ \
+ { \
+ 0x0101, 0x14, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetUserTypeResponse */ \
+ { 0x0101, 0x15, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetUserType */ \
+ { \
+ 0x0101, 0x15, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetUserTypeResponse */ \
+ { 0x0101, 0x16, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetRfid */ \
+ { 0x0101, 0x16, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetRfidResponse */ \
+ { 0x0101, 0x17, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetRfid */ \
+ { 0x0101, 0x17, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetRfidResponse */ \
+ { 0x0101, 0x18, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearRfid */ \
+ { 0x0101, 0x18, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearRfidResponse */ \
+ { 0x0101, 0x19, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllRfids */ \
+ { \
+ 0x0101, 0x19, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearAllRfidsResponse */ \
+ { 0x0103, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlGoToPercent */ \
+ { 0x0103, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlStop */ \
+ { 0x0300, 0x00, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveToHue */ \
+ { 0x0300, 0x01, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveHue */ \
+ { 0x0300, 0x02, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StepHue */ \
+ { \
+ 0x0300, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveToSaturation */ \
+ { \
+ 0x0300, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveSaturation */ \
+ { \
+ 0x0300, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): StepSaturation */ \
+ { \
+ 0x0300, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveToHueAndSaturation */ \
+ { 0x0300, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveToColor */ \
+ { 0x0300, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveColor */ \
+ { 0x0300, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): StepColor */ \
+ { \
+ 0x0300, 0x0A, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveToColorTemperature */ \
+ { 0x0300, 0x47, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StopMoveStep */ \
+ { \
+ 0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveColorTemperature */ \
+ { \
+ 0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): StepColorTemperature */ \
+ { 0xF000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (client): Bind */ \
+ { 0xF000, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (client): Unbind */ \
+ }
+
+// Array of EmberAfManufacturerCodeEntry structures for commands.
+#define GENERATED_COMMAND_MANUFACTURER_CODE_COUNT (1)
+#define GENERATED_COMMAND_MANUFACTURER_CODES \
+ { \
+ { 0, 0x1002 }, \
+ }
+
+// This is an array of EmberAfManufacturerCodeEntry structures for clusters.
+#define GENERATED_CLUSTER_MANUFACTURER_CODE_COUNT (0)
+#define GENERATED_CLUSTER_MANUFACTURER_CODES \
+ { \
+ { \
+ 0x00, 0x00 \
+ } \
+ }
+
+// This is an array of EmberAfManufacturerCodeEntry structures for attributes.
+#define GENERATED_ATTRIBUTE_MANUFACTURER_CODE_COUNT (0)
+#define GENERATED_ATTRIBUTE_MANUFACTURER_CODES \
+ { \
+ { \
+ 0x00, 0x00 \
+ } \
+ }
+
+// Array of EmberAfPluginReportingEntry structures.
+#define ZRD(x) EMBER_ZCL_REPORTING_DIRECTION_##x
+#define ZAP_REPORT_DIRECTION(x) ZRD(x)
+
+// Use this macro to check if Reporting plugin is included
+#define EMBER_AF_PLUGIN_REPORTING
+// User options for plugin Reporting
+#define EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE (1)
+#define EMBER_AF_PLUGIN_REPORTING_ENABLE_GROUP_BOUND_REPORTS
+
+#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (1)
+#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS \
+ { \
+ { \
+ ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0000, 0xFFFD, ZAP_CLUSTER_MASK(CLIENT), 0x0000, { { 0, 65344, 0 } } \
+ }, /* Reporting for cluster: "Basic", attribute: "cluster revision". side: client */ \
+ }
diff --git a/examples/chip-tool/gen/enums.h b/examples/chip-tool/gen/enums.h
new file mode 100644
index 0000000..7cf4c5c
--- /dev/null
+++ b/examples/chip-tool/gen/enums.h
@@ -0,0 +1,4007 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// ZCL enums
+
+// Enum for 11073ConnectRequestConnectControl
+typedef enum
+{
+ EMBER_ZCL_11073_CONNECT_REQUEST_CONNECT_CONTROL_PREEMPTIBLE = 1,
+} EmberAf11073ConnectRequestConnectControl;
+
+// Enum for 11073TunnelConnectionStatus
+typedef enum
+{
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_DISCONNECTED = 0,
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_CONNECTED = 1,
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_NOT_AUTHORIZED = 2,
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_RECONNECT_REQUEST = 3,
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_ALREADY_CONNECTED = 4,
+} EmberAf11073TunnelConnectionStatus;
+
+// Enum for AlertCountType
+typedef enum
+{
+ EMBER_ZCL_ALERT_COUNT_TYPE_UNSTRUCTURED = 0,
+} EmberAfAlertCountType;
+
+// Enum for AlertStructureCategory
+typedef enum
+{
+ EMBER_ZCL_ALERT_STRUCTURE_CATEGORY_WARNING = 256,
+ EMBER_ZCL_ALERT_STRUCTURE_CATEGORY_DANGER = 512,
+ EMBER_ZCL_ALERT_STRUCTURE_CATEGORY_FAILURE = 768,
+} EmberAfAlertStructureCategory;
+
+// Enum for AlertStructurePresenceRecovery
+typedef enum
+{
+ EMBER_ZCL_ALERT_STRUCTURE_PRESENCE_RECOVERY_RECOVERY = 0,
+ EMBER_ZCL_ALERT_STRUCTURE_PRESENCE_RECOVERY_PRESENCE = 4096,
+} EmberAfAlertStructurePresenceRecovery;
+
+// Enum for AlternateCostUnit
+typedef enum
+{
+ EMBER_ZCL_ALTERNATE_COST_UNIT_KG_OF_CO2_PER_UNIT_OF_MEASURE = 2,
+} EmberAfAlternateCostUnit;
+
+// Enum for AmiCriticalityLevel
+typedef enum
+{
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_RESERVED = 0,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_GREEN = 1,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_1 = 2,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_2 = 3,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_3 = 4,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_4 = 5,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_5 = 6,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_EMERGENCY = 7,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_PLANNED_OUTAGE = 8,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_SERVICE_DISCONNECT = 9,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED1 = 10,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED2 = 11,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED3 = 12,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED4 = 13,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED5 = 14,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED6 = 15,
+} EmberAfAmiCriticalityLevel;
+
+// Enum for AmiEventStatus
+typedef enum
+{
+ EMBER_ZCL_AMI_EVENT_STATUS_LOAD_CONTROL_EVENT_COMMAND_RX = 1,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_STARTED = 2,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_COMPLETED = 3,
+ EMBER_ZCL_AMI_EVENT_STATUS_USER_HAS_CHOOSE_TO_OPT_OUT = 4,
+ EMBER_ZCL_AMI_EVENT_STATUS_USER_HAS_CHOOSE_TO_OPT_IN = 5,
+ EMBER_ZCL_AMI_EVENT_STATUS_THE_EVENT_HAS_BEEN_CANCELED = 6,
+ EMBER_ZCL_AMI_EVENT_STATUS_THE_EVENT_HAS_BEEN_SUPERSEDED = 7,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_PARTIALLY_COMPLETED_WITH_USER_OPT_OUT = 8,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_PARTIALLY_COMPLETED_DUE_TO_USER_OPT_IN = 9,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_COMPLETED_NO_USER_PARTICIPATION_PREVIOUS_OPT_OUT = 10,
+ EMBER_ZCL_AMI_EVENT_STATUS_INVALID_OPT_OUT = 246,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_NOT_FOUND = 247,
+ EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_INVALID_CANCEL_COMMAND = 248,
+ EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_INVALID_CANCEL_COMMAND_INVALID_EFFECTIVE_TIME = 249,
+ EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_EVENT_EXPIRED = 251,
+ EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_INVALID_CANCEL_UNDEFINED_EVENT = 253,
+ EMBER_ZCL_AMI_EVENT_STATUS_LOAD_CONTROL_EVENT_COMMAND_REJECTED = 254,
+} EmberAfAmiEventStatus;
+
+// Enum for AmiGetProfileStatus
+typedef enum
+{
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_SUCCESS = 0,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_UNDEFINED_INTERVAL_CHANNEL_REQUESTED = 1,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_INTERVAL_CHANNEL_NOT_SUPPORTED = 2,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_INVALID_END_TIME = 3,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_MORE_PERIODS_REQUESTED_THAN_CAN_BE_RETURNED = 4,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_NO_INTERVALS_AVAILABLE_FOR_THE_REQUESTED_TIME = 5,
+} EmberAfAmiGetProfileStatus;
+
+// Enum for AmiIntervalChannel
+typedef enum
+{
+ EMBER_ZCL_AMI_INTERVAL_CHANNEL_CONSUMPTION_DELIVERED = 0,
+ EMBER_ZCL_AMI_INTERVAL_CHANNEL_CONSUMPTION_RECEIVED = 1,
+} EmberAfAmiIntervalChannel;
+
+// Enum for AmiIntervalPeriod
+typedef enum
+{
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_DAILY = 0,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES60 = 1,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES30 = 2,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES15 = 3,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES10 = 4,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES7P5 = 5,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES5 = 6,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES2P5 = 7,
+} EmberAfAmiIntervalPeriod;
+
+// Enum for AmiKeyEstablishmentStatus
+typedef enum
+{
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_SUCCESS = 0,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_UNKNOWN_ISSUER = 1,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_BAD_KEY_CONFIRM = 2,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_BAD_MESSAGE = 3,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_NO_RESOURCES = 4,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_UNSUPPORTED_SUITE = 5,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_INVALID_KEY_USAGE = 6,
+} EmberAfAmiKeyEstablishmentStatus;
+
+// Enum for AmiRegistrationState
+typedef enum
+{
+ EMBER_ZCL_AMI_REGISTRATION_STATE_UNREGISTERED = 0,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_JOINING_NETWORK = 1,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_JOINED_NETWORK = 2,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_SUBMITTED_REGISTRATION_REQUEST = 3,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_REGISTRATION_REJECTED = 4,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_REGISTERED = 5,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_REGISTERATION_NOT_POSSIBLE = 6,
+} EmberAfAmiRegistrationState;
+
+// Enum for AmiUnitOfMeasure
+typedef enum
+{
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KILO_WATT_HOURS = 0,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_METER_PER_HOUR = 1,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_FEET_PER_HOUR = 2,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CENTUM_CUBIC_FEET_PER_HOUR = 3,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_US_GALLONS_PER_HOUR = 4,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_IMPERIAL_GALLONS_PER_HOUR = 5,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_BT_US_OR_BTU_PER_HOUR = 6,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_LITERS_OR_LITERS_PER_HOUR = 7,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_GAUGE = 8,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_ABSOLUTE = 9,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_MCF_OR_MCF_PER_SECOND = 10,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_UNITLESS = 11,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_MJ_OR_MJ_PER_SECOND = 12,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_K_VAR_OR_K_VAR_HOURS = 13,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KILO_WATT_HOURS_BCD = 128,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_METER_PER_HOUR_BCD = 129,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_FEET_PER_HOUR_BCD = 130,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CENTUM_CUBIC_FEET_PER_HOUR_BCD = 131,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_US_GALLONS_PER_HOUR_BCD = 132,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_IMPERIAL_GALLONS_PER_HOUR_BCD = 133,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_BT_US_OR_BTU_PER_HOUR_BCD = 134,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_LITERS_OR_LITERS_PER_HOUR_BCD = 135,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_GUAGE_BCD = 136,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_ABSOLUTE_BCD = 137,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_MCF_OR_MCF_PER_SECOND_BCD = 138,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_UNITLESS_BCD = 139,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_MJ_OR_MJ_PER_SECOND_BCD = 140,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_K_VAR_OR_K_VAR_HOURS_BCD = 141,
+} EmberAfAmiUnitOfMeasure;
+
+// Enum for AnonymousDataState
+typedef enum
+{
+ EMBER_ZCL_ANONYMOUS_DATA_STATE_NO_SOURCE_FOUND = 0,
+ EMBER_ZCL_ANONYMOUS_DATA_STATE_SOURCE_FOUND = 1,
+} EmberAfAnonymousDataState;
+
+// Enum for ApplianceStatus
+typedef enum
+{
+ EMBER_ZCL_APPLIANCE_STATUS_OFF = 1,
+ EMBER_ZCL_APPLIANCE_STATUS_STAND_BY = 2,
+ EMBER_ZCL_APPLIANCE_STATUS_PROGRAMMED = 3,
+ EMBER_ZCL_APPLIANCE_STATUS_PROGRAMMED_WAITING_TO_START = 4,
+ EMBER_ZCL_APPLIANCE_STATUS_RUNNING = 5,
+ EMBER_ZCL_APPLIANCE_STATUS_PAUSE = 6,
+ EMBER_ZCL_APPLIANCE_STATUS_END_PROGRAMMED = 7,
+ EMBER_ZCL_APPLIANCE_STATUS_FAILURE = 8,
+ EMBER_ZCL_APPLIANCE_STATUS_PROGRAMME_INTERRUPTED = 9,
+ EMBER_ZCL_APPLIANCE_STATUS_IDLE = 10,
+ EMBER_ZCL_APPLIANCE_STATUS_RINSE_HOLD = 11,
+ EMBER_ZCL_APPLIANCE_STATUS_SERVICE = 12,
+ EMBER_ZCL_APPLIANCE_STATUS_SUPERFREEZING = 13,
+ EMBER_ZCL_APPLIANCE_STATUS_SUPERCOOLING = 14,
+ EMBER_ZCL_APPLIANCE_STATUS_SUPERHEATING = 15,
+} EmberAfApplianceStatus;
+
+// Enum for AttributeReportingStatus
+typedef enum
+{
+ EMBER_ZCL_ATTRIBUTE_REPORTING_STATUS_PENDING = 0,
+ EMBER_ZCL_ATTRIBUTE_REPORTING_STATUS_ATTRIBUTE_REPORTING_COMPLETE = 1,
+} EmberAfAttributeReportingStatus;
+
+// Enum for AttributeWritePermission
+typedef enum
+{
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_DENY_WRITE = 0,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_NORMAL = 1,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_OF_READ_ONLY = 2,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_UNSUPPORTED_ATTRIBUTE = 134,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_INVALID_VALUE = 135,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_READ_ONLY = 136,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_INVALID_DATA_TYPE = 141,
+} EmberAfAttributeWritePermission;
+
+// Enum for BarrierControlBarrierPosition
+typedef enum
+{
+ EMBER_ZCL_BARRIER_CONTROL_BARRIER_POSITION_CLOSED = 0,
+ EMBER_ZCL_BARRIER_CONTROL_BARRIER_POSITION_OPEN = 100,
+ EMBER_ZCL_BARRIER_CONTROL_BARRIER_POSITION_UNKNOWN = 255,
+} EmberAfBarrierControlBarrierPosition;
+
+// Enum for BarrierControlMovingState
+typedef enum
+{
+ EMBER_ZCL_BARRIER_CONTROL_MOVING_STATE_STOPPED = 0,
+ EMBER_ZCL_BARRIER_CONTROL_MOVING_STATE_CLOSING = 1,
+ EMBER_ZCL_BARRIER_CONTROL_MOVING_STATE_OPENING = 2,
+} EmberAfBarrierControlMovingState;
+
+// Enum for BatterySize
+typedef enum
+{
+ EMBER_ZCL_BATTERY_SIZE_NO_BATTERY = 0,
+ EMBER_ZCL_BATTERY_SIZE_BUILT_IN = 1,
+ EMBER_ZCL_BATTERY_SIZE_OTHER = 2,
+ EMBER_ZCL_BATTERY_SIZE_AA = 3,
+ EMBER_ZCL_BATTERY_SIZE_AAA = 4,
+ EMBER_ZCL_BATTERY_SIZE_C = 5,
+ EMBER_ZCL_BATTERY_SIZE_D = 6,
+ EMBER_ZCL_BATTERY_SIZE_UNKNOWN = 255,
+} EmberAfBatterySize;
+
+// Enum for BillingPeriodDurationUnits
+typedef enum
+{
+ EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_MINUTES = 0,
+ EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_DAYS = 4194304,
+ EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_WEEKS = 8388608,
+ EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_MONTHS = 12582912,
+} EmberAfBillingPeriodDurationUnits;
+
+// Enum for Block
+typedef enum
+{
+ EMBER_ZCL_BLOCK_NO_BLOCKS_IN_USE = 0,
+ EMBER_ZCL_BLOCK_BLOCK1 = 1,
+ EMBER_ZCL_BLOCK_BLOCK2 = 2,
+ EMBER_ZCL_BLOCK_BLOCK3 = 3,
+ EMBER_ZCL_BLOCK_BLOCK4 = 4,
+ EMBER_ZCL_BLOCK_BLOCK5 = 5,
+ EMBER_ZCL_BLOCK_BLOCK6 = 6,
+ EMBER_ZCL_BLOCK_BLOCK7 = 7,
+ EMBER_ZCL_BLOCK_BLOCK8 = 8,
+ EMBER_ZCL_BLOCK_BLOCK9 = 9,
+ EMBER_ZCL_BLOCK_BLOCK10 = 10,
+ EMBER_ZCL_BLOCK_BLOCK11 = 11,
+ EMBER_ZCL_BLOCK_BLOCK12 = 12,
+ EMBER_ZCL_BLOCK_BLOCK13 = 13,
+ EMBER_ZCL_BLOCK_BLOCK14 = 14,
+ EMBER_ZCL_BLOCK_BLOCK15 = 15,
+ EMBER_ZCL_BLOCK_BLOCK16 = 16,
+} EmberAfBlock;
+
+// Enum for BlockPeriodDurationTypeControl
+typedef enum
+{
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_CONTROL_START_OF_TIMEBASE = 0,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_CONTROL_END_OF_TIMEBASE = 16,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_CONTROL_NOT_SPECIFIED = 32,
+} EmberAfBlockPeriodDurationTypeControl;
+
+// Enum for BlockPeriodDurationTypeTimebase
+typedef enum
+{
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_MINUTES = 0,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_DAYS = 1,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_WEEKS = 2,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_MONTHS = 3,
+} EmberAfBlockPeriodDurationTypeTimebase;
+
+// Enum for CO2Unit
+typedef enum
+{
+ EMBER_ZCL_CO2_UNIT_KILOGRAM_PER_KILOWATT_HOUR = 1,
+ EMBER_ZCL_CO2_UNIT_KILOGRAM_PER_GALLON_OF_GASOLINE = 2,
+ EMBER_ZCL_CO2_UNIT_KILOGRAM_PER_THERM_OF_NATURAL_GAS = 3,
+} EmberAfCO2Unit;
+
+// Enum for CalendarTimeReference
+typedef enum
+{
+ EMBER_ZCL_CALENDAR_TIME_REFERENCE_UTC_TIME = 0,
+ EMBER_ZCL_CALENDAR_TIME_REFERENCE_STANDARD_TIME = 1,
+ EMBER_ZCL_CALENDAR_TIME_REFERENCE_LOCAL_TIME = 2,
+} EmberAfCalendarTimeReference;
+
+// Enum for CalendarType
+typedef enum
+{
+ EMBER_ZCL_CALENDAR_TYPE_DELIVERED_CALENDAR = 0,
+ EMBER_ZCL_CALENDAR_TYPE_RECEIVED_CALENDAR = 1,
+ EMBER_ZCL_CALENDAR_TYPE_DELIVERED_AND_RECEIVED_CALENDAR = 2,
+ EMBER_ZCL_CALENDAR_TYPE_FRIENDLY_CREDIT_CALENDAR = 3,
+ EMBER_ZCL_CALENDAR_TYPE_AUXILLIARY_LOAD_SWITCH_CALENDAR = 4,
+} EmberAfCalendarType;
+
+// Enum for CalorificValueUnit
+typedef enum
+{
+ EMBER_ZCL_CALORIFIC_VALUE_UNIT_MEGAJOULE_PER_CUBIC_METER = 1,
+ EMBER_ZCL_CALORIFIC_VALUE_UNIT_MEGAJOULE_PER_KILOGRAM = 2,
+} EmberAfCalorificValueUnit;
+
+// Enum for CecedSpecificationVersion
+typedef enum
+{
+ EMBER_ZCL_CECED_SPECIFICATION_VERSION_COMPLIANT_WITH_V10_NOT_CERTIFIED = 16,
+ EMBER_ZCL_CECED_SPECIFICATION_VERSION_COMPLIANT_WITH_V10_CERTIFIED = 26,
+} EmberAfCecedSpecificationVersion;
+
+// Enum for ColorControlOptions
+typedef enum
+{
+ EMBER_ZCL_COLOR_CONTROL_OPTIONS_EXECUTE_IF_OFF = 1,
+} EmberAfColorControlOptions;
+
+// Enum for ColorLoopAction
+typedef enum
+{
+ EMBER_ZCL_COLOR_LOOP_ACTION_DEACTIVATE = 0,
+ EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_COLOR_LOOP_START_ENHANCED_HUE = 1,
+ EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_ENHANCED_CURRENT_HUE = 2,
+} EmberAfColorLoopAction;
+
+// Enum for ColorLoopDirection
+typedef enum
+{
+ EMBER_ZCL_COLOR_LOOP_DIRECTION_DECREMENT_HUE = 0,
+ EMBER_ZCL_COLOR_LOOP_DIRECTION_INCREMENT_HUE = 1,
+} EmberAfColorLoopDirection;
+
+// Enum for ColorMode
+typedef enum
+{
+ EMBER_ZCL_COLOR_MODE_CURRENT_HUE_AND_CURRENT_SATURATION = 0,
+ EMBER_ZCL_COLOR_MODE_CURRENT_X_AND_CURRENT_Y = 1,
+ EMBER_ZCL_COLOR_MODE_COLOR_TEMPERATURE = 2,
+} EmberAfColorMode;
+
+// Enum for CommandIdentification
+typedef enum
+{
+ EMBER_ZCL_COMMAND_IDENTIFICATION_START = 1,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_STOP = 2,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_PAUSE = 3,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_START_SUPERFREEZING = 4,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_STOP_SUPERFREEZING = 5,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_START_SUPERCOOLING = 6,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_STOP_SUPERCOOLING = 7,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_DISABLE_GAS = 8,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_ENABLE_GAS = 9,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_ENABLE_ENERGY_CONTROL = 10,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_DISABLE_ENERGY_CONTROL = 11,
+} EmberAfCommandIdentification;
+
+// Enum for CommissioningStartupControl
+typedef enum
+{
+ EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_NO_ACTION = 0,
+ EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_FORM_NETWORK = 1,
+ EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_REJOIN_NETWORK = 2,
+ EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_START_FROM_SCRATCH = 3,
+} EmberAfCommissioningStartupControl;
+
+// Enum for CommodityType
+typedef enum
+{
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING = 0,
+ EMBER_ZCL_COMMODITY_TYPE_GAS_METERING = 1,
+ EMBER_ZCL_COMMODITY_TYPE_WATER_METERING = 2,
+ EMBER_ZCL_COMMODITY_TYPE_THERMAL_METERING = 3,
+ EMBER_ZCL_COMMODITY_TYPE_PRESSURE_METERING = 4,
+ EMBER_ZCL_COMMODITY_TYPE_HEAT_METERING = 5,
+ EMBER_ZCL_COMMODITY_TYPE_COOLING_METERING = 6,
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_VEHICLE_CHARGING_METERING = 7,
+ EMBER_ZCL_COMMODITY_TYPE_PV_GENERATION_METERING = 8,
+ EMBER_ZCL_COMMODITY_TYPE_WIND_TURBINE_GENERATION_METERING = 9,
+ EMBER_ZCL_COMMODITY_TYPE_WATER_TURBINE_GENERATION_METERING = 10,
+ EMBER_ZCL_COMMODITY_TYPE_MICRO_GENERATION_METERING = 11,
+ EMBER_ZCL_COMMODITY_TYPE_SOLAR_HOT_WATER_GENERATION_METERING = 12,
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT1 = 13,
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT2 = 14,
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15,
+} EmberAfCommodityType;
+
+// Enum for CppEventResponseCppAuth
+typedef enum
+{
+ EMBER_ZCL_CPP_EVENT_RESPONSE_CPP_AUTH_ACCEPTED = 1,
+ EMBER_ZCL_CPP_EVENT_RESPONSE_CPP_AUTH_REJECTED = 2,
+} EmberAfCppEventResponseCppAuth;
+
+// Enum for CppPriceTier
+typedef enum
+{
+ EMBER_ZCL_CPP_PRICE_TIER_CPP1 = 0,
+ EMBER_ZCL_CPP_PRICE_TIER_CPP2 = 1,
+} EmberAfCppPriceTier;
+
+// Enum for CreditAdjustmentType
+typedef enum
+{
+ EMBER_ZCL_CREDIT_ADJUSTMENT_TYPE_CREDIT_INCREMENTAL = 0,
+ EMBER_ZCL_CREDIT_ADJUSTMENT_TYPE_CREDIT_ABSOLUTE = 1,
+} EmberAfCreditAdjustmentType;
+
+// Enum for CreditPaymentStatus
+typedef enum
+{
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_PENDING = 0,
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_RECEIVED_PAID = 1,
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_OVERDUE = 2,
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_2_PAYMENTS_OVERDUE = 3,
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_3_PAYMENTS_OVERDUE = 4,
+} EmberAfCreditPaymentStatus;
+
+// Enum for DataQualityId
+typedef enum
+{
+ EMBER_ZCL_DATA_QUALITY_ID_ALL_DATA_CERTIFIED = 0,
+ EMBER_ZCL_DATA_QUALITY_ID_ONLY_INSTANTANEOUS_POWER_NOT_CERTIFIED = 1,
+ EMBER_ZCL_DATA_QUALITY_ID_ONLY_CUMULATED_CONSUMPTION_NOT_CERTIFIED = 2,
+ EMBER_ZCL_DATA_QUALITY_ID_NOT_CERTIFIED_DATA = 3,
+} EmberAfDataQualityId;
+
+// Enum for DebtAmountType
+typedef enum
+{
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE1_ABSOLUTE = 0,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE1_INCREMENTAL = 1,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE2_ABSOLUTE = 2,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE2_INCREMENTAL = 3,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE3_ABSOLUTE = 4,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE3_INCREMENTAL = 5,
+} EmberAfDebtAmountType;
+
+// Enum for DebtRecoveryFrequency
+typedef enum
+{
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_HOUR = 0,
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_DAY = 1,
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_WEEK = 2,
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_MONTH = 3,
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_QUARTER = 4,
+} EmberAfDebtRecoveryFrequency;
+
+// Enum for DebtRecoveryMethod
+typedef enum
+{
+ EMBER_ZCL_DEBT_RECOVERY_METHOD_TIME_BASED = 0,
+ EMBER_ZCL_DEBT_RECOVERY_METHOD_PERCENTAGE_BASED = 1,
+ EMBER_ZCL_DEBT_RECOVERY_METHOD_CATCH_UP_BASED = 2,
+} EmberAfDebtRecoveryMethod;
+
+// Enum for DehumidifcationLockout
+typedef enum
+{
+ EMBER_ZCL_DEHUMIDIFCATION_LOCKOUT_NOT_ALLOWED = 0,
+ EMBER_ZCL_DEHUMIDIFCATION_LOCKOUT_ALLOWED = 1,
+} EmberAfDehumidifcationLockout;
+
+// Enum for DeviceInformationRecordSort
+typedef enum
+{
+ EMBER_ZCL_DEVICE_INFORMATION_RECORD_SORT_NOT_SORTED = 0,
+ EMBER_ZCL_DEVICE_INFORMATION_RECORD_SORT_TOP_OF_THE_LIST = 1,
+} EmberAfDeviceInformationRecordSort;
+
+// Enum for DeviceStatus2Structure
+typedef enum
+{
+ EMBER_ZCL_DEVICE_STATUS2_STRUCTURE_IRIS_SYMPTOM_CODE = 32,
+} EmberAfDeviceStatus2Structure;
+
+// Enum for DoorLockEventSource
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_KEYPAD = 0,
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_RF = 1,
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_MANUAL = 2,
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_RFID = 3,
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_INDETERMINATE = 255,
+} EmberAfDoorLockEventSource;
+
+// Enum for DoorLockEventType
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_EVENT_TYPE_OPERATION = 0,
+ EMBER_ZCL_DOOR_LOCK_EVENT_TYPE_PROGRAMMING = 1,
+ EMBER_ZCL_DOOR_LOCK_EVENT_TYPE_ALARM = 2,
+} EmberAfDoorLockEventType;
+
+// Enum for DoorLockOperatingMode
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_NORMAL_MODE = 0,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_VACATION_MODE = 1,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_PRIVACY_MODE = 2,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_NO_RF_LOCK_OR_UNLOCK = 3,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_LOCAL_PROGRAMMING_MODE = 4,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_PASSAGE_MODE = 5,
+} EmberAfDoorLockOperatingMode;
+
+// Enum for DoorLockOperationEventCode
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNKNOWN_OR_MFG_SPECIFIC = 0,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_LOCK = 1,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK = 2,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_LOCK_INVALID_PIN_OR_ID = 3,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_LOCK_INVALID_SCHEDULE = 4,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK_INVALID_PIN_OR_ID = 5,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK_INVALID_SCHEDULE = 6,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_ONE_TOUCH_LOCK = 7,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_KEY_LOCK = 8,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_KEY_UNLOCK = 9,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_AUTO_LOCK = 10,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_SCHEDULE_LOCK = 11,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_SCHEDULE_UNLOCK = 12,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_MANUAL_LOCK = 13,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_MANUAL_UNLOCK = 14,
+} EmberAfDoorLockOperationEventCode;
+
+// Enum for DoorLockProgrammingEventCode
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_UNKNOWN_OR_MFG_SPECIFIC = 0,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_MASTER_CODE_CHANGED = 1,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_PIN_ADDED = 2,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_PIN_DELETED = 3,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_PIN_CHANGED = 4,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_ID_ADDED = 5,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_ID_DELETED = 6,
+} EmberAfDoorLockProgrammingEventCode;
+
+// Enum for DoorLockSecurityLevel
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_SECURITY_LEVEL_NETWORK_SECURITY = 0,
+ EMBER_ZCL_DOOR_LOCK_SECURITY_LEVEL_APS_SECURITY = 1,
+} EmberAfDoorLockSecurityLevel;
+
+// Enum for DoorLockSetPinOrIdStatus
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_SUCCESS = 0,
+ EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_GENERAL_FAILURE = 1,
+ EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_MEMORY_FULL = 2,
+ EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_DUPLICATE_CODE_ERROR = 3,
+} EmberAfDoorLockSetPinOrIdStatus;
+
+// Enum for DoorLockSoundVolume
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_SILENT = 0,
+ EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_LOW = 1,
+ EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_HIGH = 2,
+} EmberAfDoorLockSoundVolume;
+
+// Enum for DoorLockState
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_STATE_NOT_FULLY_LOCKED = 0,
+ EMBER_ZCL_DOOR_LOCK_STATE_LOCKED = 1,
+ EMBER_ZCL_DOOR_LOCK_STATE_UNLOCKED = 2,
+} EmberAfDoorLockState;
+
+// Enum for DoorLockType
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_TYPE_DEAD_BOLT = 0,
+ EMBER_ZCL_DOOR_LOCK_TYPE_MAGNETIC = 1,
+ EMBER_ZCL_DOOR_LOCK_TYPE_MORTISE = 2,
+ EMBER_ZCL_DOOR_LOCK_TYPE_RIM = 3,
+ EMBER_ZCL_DOOR_LOCK_TYPE_LATCH_BOLT = 4,
+ EMBER_ZCL_DOOR_LOCK_TYPE_CYLINDRICAL = 5,
+ EMBER_ZCL_DOOR_LOCK_TYPE_TUBULAR = 6,
+ EMBER_ZCL_DOOR_LOCK_TYPE_INTERCONNECTED = 7,
+ EMBER_ZCL_DOOR_LOCK_TYPE_DEAD_LATCH = 8,
+ EMBER_ZCL_DOOR_LOCK_TYPE_OTHER = 9,
+} EmberAfDoorLockType;
+
+// Enum for DoorLockUserStatus
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_USER_STATUS_AVAILABLE = 0,
+ EMBER_ZCL_DOOR_LOCK_USER_STATUS_OCCUPIED_ENABLED = 1,
+ EMBER_ZCL_DOOR_LOCK_USER_STATUS_OCCUPIED_DISABLED = 3,
+ EMBER_ZCL_DOOR_LOCK_USER_STATUS_NOT_SUPPORTED = 255,
+} EmberAfDoorLockUserStatus;
+
+// Enum for DoorLockUserType
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_UNRESTRICTED = 0,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_YEAR_DAY_SCHEDULE_USER = 1,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_WEEK_DAY_SCHEDULE_USER = 2,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_MASTER_USER = 3,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_NON_ACCESS_USER = 4,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_NOT_SUPPORTED = 255,
+} EmberAfDoorLockUserType;
+
+// Enum for DoorState
+typedef enum
+{
+ EMBER_ZCL_DOOR_STATE_OPEN = 0,
+ EMBER_ZCL_DOOR_STATE_CLOSED = 1,
+ EMBER_ZCL_DOOR_STATE_ERROR_JAMMED = 2,
+ EMBER_ZCL_DOOR_STATE_ERROR_FORCED_OPEN = 3,
+ EMBER_ZCL_DOOR_STATE_ERROR_UNSPECIFIED = 4,
+} EmberAfDoorState;
+
+// Enum for ElectricityAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_LOW_VOLTAGE_L1 = 16,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_HIGH_VOLTAGE_L1 = 17,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_LOW_VOLTAGE_L2 = 18,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_HIGH_VOLTAGE_L2 = 19,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_LOW_VOLTAGE_L3 = 20,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_HIGH_VOLTAGE_L3 = 21,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_CURRENT_L1 = 22,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_CURRENT_L2 = 23,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_CURRENT_L3 = 24,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_LOW_L1 = 25,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_HIGH_L1 = 26,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_LOW_L2 = 27,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_HIGH_L2 = 28,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_LOW_L3 = 29,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_HIGH_L3 = 30,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_GROUND_FAULT = 31,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_ELECTRIC_TAMPER_DETECT = 32,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_INCORRECT_POLARITY = 33,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_CURRENT_NO_VOLTAGE = 34,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_UNDER_VOLTAGE = 35,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_VOLTAGE = 36,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_NORMAL_VOLTAGE = 37,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_PF_BELOW_THRESHOLD = 38,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_PF_ABOVE_THRESHOLD = 39,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_TERMINAL_COVER_REMOVED = 40,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_TERMINAL_COVER_CLOSED = 41,
+} EmberAfElectricityAlarmGroups;
+
+// Enum for EnhancedColorMode
+typedef enum
+{
+ EMBER_ZCL_ENHANCED_COLOR_MODE_CURRENT_HUE_AND_CURRENT_SATURATION = 0,
+ EMBER_ZCL_ENHANCED_COLOR_MODE_CURRENT_X_AND_CURRENT_Y = 1,
+ EMBER_ZCL_ENHANCED_COLOR_MODE_COLOR_TEMPERATURE = 2,
+ EMBER_ZCL_ENHANCED_COLOR_MODE_ENHANCED_CURRENT_HUE_AND_CURRENT_SATURATION = 3,
+} EmberAfEnhancedColorMode;
+
+// Enum for EventConfigurationControl
+typedef enum
+{
+ EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_LIST = 0,
+ EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_EVENT_GROUP = 1,
+ EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_LOG_TYPE = 2,
+ EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_CONFIGURATION_MATCH = 3,
+} EmberAfEventConfigurationControl;
+
+// Enum for EventConfigurationLogAction
+typedef enum
+{
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_DO_NOT_LOG = 0,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_TAMPER = 1,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_FAULT = 2,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_GENERAL_EVENT = 3,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_SECURITY_EVENT = 4,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_NETWORK_EVENT = 5,
+} EmberAfEventConfigurationLogAction;
+
+// Enum for EventControl
+typedef enum
+{
+ EMBER_ZCL_EVENT_CONTROL_RETRIEVE_MINIMAL_INFORMATION = 0,
+ EMBER_ZCL_EVENT_CONTROL_RETRIEVE_FULL_INFORMATION = 16,
+} EmberAfEventControl;
+
+// Enum for EventId
+typedef enum
+{
+ EMBER_ZCL_EVENT_ID_METER_COVER_REMOVED = 0,
+ EMBER_ZCL_EVENT_ID_METER_COVER_CLOSED = 1,
+ EMBER_ZCL_EVENT_ID_STRONG_MAGNETIC_FIELD = 2,
+ EMBER_ZCL_EVENT_ID_NO_STRONG_MAGNETIC_FIELD = 3,
+ EMBER_ZCL_EVENT_ID_BATTERY_FAILURE = 4,
+ EMBER_ZCL_EVENT_ID_LOW_BATTERY = 5,
+ EMBER_ZCL_EVENT_ID_PROGRAM_MEMORY_ERROR = 6,
+ EMBER_ZCL_EVENT_ID_RAM_ERROR = 7,
+ EMBER_ZCL_EVENT_ID_NV_MEMORY_ERROR = 8,
+ EMBER_ZCL_EVENT_ID_MEASUREMENT_SYSTEM_ERROR = 9,
+ EMBER_ZCL_EVENT_ID_WATCHDOG_ERROR = 10,
+ EMBER_ZCL_EVENT_ID_SUPPLY_DISCONNECT_FAILURE = 11,
+ EMBER_ZCL_EVENT_ID_SUPPLY_CONNECT_FAILURE = 12,
+ EMBER_ZCL_EVENT_ID_MEASURMENT_SOFTWARE_CHANGED = 13,
+ EMBER_ZCL_EVENT_ID_DST_ENABLED = 14,
+ EMBER_ZCL_EVENT_ID_DST_DISABLED = 15,
+ EMBER_ZCL_EVENT_ID_CLOCK_ADJ_BACKWARD = 16,
+ EMBER_ZCL_EVENT_ID_CLOCK_ADJ_FORWARD = 17,
+ EMBER_ZCL_EVENT_ID_CLOCK_INVALID = 18,
+ EMBER_ZCL_EVENT_ID_COMMS_ERROR_HAN = 19,
+ EMBER_ZCL_EVENT_ID_COMMS_OK_HAN = 20,
+ EMBER_ZCL_EVENT_ID_FRAUD_ATTEMPT = 21,
+ EMBER_ZCL_EVENT_ID_POWER_LOSS = 22,
+ EMBER_ZCL_EVENT_ID_INCORRECT_PROTOCOL = 23,
+ EMBER_ZCL_EVENT_ID_UNUSUAL_HAN_TRAFFIC = 24,
+ EMBER_ZCL_EVENT_ID_UNEXPECTED_CLOCK_CHANGE = 25,
+ EMBER_ZCL_EVENT_ID_COMMS_USING_UNAUTHENTICATED_COMPONENT = 26,
+ EMBER_ZCL_EVENT_ID_ERROR_REG_CLEAR = 27,
+ EMBER_ZCL_EVENT_ID_ALARM_REG_CLEAR = 28,
+ EMBER_ZCL_EVENT_ID_UNEXPECTED_HW_RESET = 29,
+ EMBER_ZCL_EVENT_ID_UNEXPECTED_PROGRAM_EXECUTION = 30,
+ EMBER_ZCL_EVENT_ID_EVENT_LOG_CLEARED = 31,
+ EMBER_ZCL_EVENT_ID_MANUAL_DISCONNECT = 32,
+ EMBER_ZCL_EVENT_ID_MANUAL_CONNECT = 33,
+ EMBER_ZCL_EVENT_ID_REMOTE_DISCONNECTION = 34,
+ EMBER_ZCL_EVENT_ID_LOCAL_DISCONNECTION = 35,
+ EMBER_ZCL_EVENT_ID_LIMIT_THRESHOLD_EXCEEDED = 36,
+ EMBER_ZCL_EVENT_ID_LIMIT_THRESHOLD_OK = 37,
+ EMBER_ZCL_EVENT_ID_LIMIT_THRESHOLD_CHANGED = 38,
+ EMBER_ZCL_EVENT_ID_MAXIMUM_DEMAND_EXCEEDED = 39,
+ EMBER_ZCL_EVENT_ID_PROFILE_CLEARED = 40,
+ EMBER_ZCL_EVENT_ID_FIRMWARE_READY_FOR_ACTIVATION = 41,
+ EMBER_ZCL_EVENT_ID_FIRMWARE_ACTIVATED = 42,
+ EMBER_ZCL_EVENT_ID_PATCH_FAILURE = 43,
+ EMBER_ZCL_EVENT_ID_TOU_TARIFF_ACTIVATION = 44,
+ EMBER_ZCL_EVENT_ID_8X8_TARIFFACTIVATED = 45,
+ EMBER_ZCL_EVENT_ID_SINGLE_TARIFF_RATE_ACTIVATED = 46,
+ EMBER_ZCL_EVENT_ID_ASYNCHRONOUS_BILLING_OCCURRED = 47,
+ EMBER_ZCL_EVENT_ID_SYNCHRONOUS_BILLING_OCCURRED = 48,
+ EMBER_ZCL_EVENT_ID_INCORRECT_POLARITY = 128,
+ EMBER_ZCL_EVENT_ID_CURRENT_NO_VOLTAGE = 129,
+ EMBER_ZCL_EVENT_ID_UNDER_VOLTAGE = 130,
+ EMBER_ZCL_EVENT_ID_OVER_VOLTAGE = 131,
+ EMBER_ZCL_EVENT_ID_NORMAL_VOLTAGE = 132,
+ EMBER_ZCL_EVENT_ID_PF_BELOW_THRESHOLD = 133,
+ EMBER_ZCL_EVENT_ID_PF_ABOVE_THRESHOLD = 134,
+ EMBER_ZCL_EVENT_ID_TERMINAL_COVER_REMOVED = 135,
+ EMBER_ZCL_EVENT_ID_TERMINAL_COVER_CLOSED = 136,
+ EMBER_ZCL_EVENT_ID_REVERSE_FLOW = 160,
+ EMBER_ZCL_EVENT_ID_TILT_TAMPER = 161,
+ EMBER_ZCL_EVENT_ID_BATTERY_COVER_REMOVED = 162,
+ EMBER_ZCL_EVENT_ID_BATTERY_COVER_CLOSED = 163,
+ EMBER_ZCL_EVENT_ID_EXCESS_FLOW = 164,
+ EMBER_ZCL_EVENT_ID_CREDIT_OK = 192,
+ EMBER_ZCL_EVENT_ID_LOW_CREDIT = 193,
+ EMBER_ZCL_EVENT_ID_EMERGENCY_CREDIT_IN_USE = 192,
+ EMBER_ZCL_EVENT_ID_EMERGENCY_CREDIT_EXHAUSTED = 193,
+ EMBER_ZCL_EVENT_ID_ZERO_CREDIT_EC_NOT_SELECTED = 194,
+ EMBER_ZCL_EVENT_ID_SUPPLY_ON = 195,
+ EMBER_ZCL_EVENT_ID_SUPPLY_OFF_AARMED = 196,
+ EMBER_ZCL_EVENT_ID_SUPPLY_OFF = 197,
+ EMBER_ZCL_EVENT_ID_DISCOUNT_APPLIED = 198,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_A = 224,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_B = 225,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_C = 226,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_D = 227,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_E = 228,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_F = 229,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_G = 230,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_H = 231,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_I = 232,
+} EmberAfEventId;
+
+// Enum for EventIdentification
+typedef enum
+{
+ EMBER_ZCL_EVENT_IDENTIFICATION_END_OF_CYCLE = 1,
+ EMBER_ZCL_EVENT_IDENTIFICATION_TEMPERATURE_REACHED = 4,
+ EMBER_ZCL_EVENT_IDENTIFICATION_END_OF_COOKING = 5,
+ EMBER_ZCL_EVENT_IDENTIFICATION_SWITCHING_OFF = 6,
+ EMBER_ZCL_EVENT_IDENTIFICATION_WRONG_DATA = 7,
+} EmberAfEventIdentification;
+
+// Enum for EventLogId
+typedef enum
+{
+ EMBER_ZCL_EVENT_LOG_ID_ALL_LOGS = 0,
+ EMBER_ZCL_EVENT_LOG_ID_TAMPER_LOG = 1,
+ EMBER_ZCL_EVENT_LOG_ID_FAULT_LOG = 2,
+ EMBER_ZCL_EVENT_LOG_ID_GENERAL_EVENT_LOG = 3,
+ EMBER_ZCL_EVENT_LOG_ID_SECURITY_EVENT_LOG = 4,
+ EMBER_ZCL_EVENT_LOG_ID_NETWORK_EVENT_LOG = 5,
+ EMBER_ZCL_EVENT_LOG_ID_GBCS_GENERAL_EVENT_LOG = 6,
+ EMBER_ZCL_EVENT_LOG_ID_GBCS_SECURITY_EVENT_LOG = 7,
+} EmberAfEventLogId;
+
+// Enum for EventLogPayloadControl
+typedef enum
+{
+ EMBER_ZCL_EVENT_LOG_PAYLOAD_CONTROL_EVENTS_DO_NOT_CROSS_FRAME_BOUNDARY = 0,
+ EMBER_ZCL_EVENT_LOG_PAYLOAD_CONTROL_EVENT_CROSSES_FRAME_BOUNDARY = 1,
+} EmberAfEventLogPayloadControl;
+
+// Enum for ExtendedGenericAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_MEASUREMENT_SYSTEM_ERROR = 112,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_WATCHDOG_ERROR = 113,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_SUPPLY_DISCONNECT_FAILURE = 114,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_SUPPLY_CONNECT_FAILURE = 115,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_MEASURMENT_SOFTWARE_CHANGED = 116,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_DST_ENABLED = 117,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_DST_DISABLED = 118,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_CLOCK_ADJ_BACKWARD = 119,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_CLOCK_ADJ_FORWARD = 120,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_CLOCK_INVALID = 121,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_COMMUNICATION_ERROR_HAN = 122,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_COMMUNICATION_OK_H_AN = 123,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_FRAUD_ATTEMPT = 124,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_POWER_LOSS = 125,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNUSUAL_HAN_TRAFFIC = 126,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNEXPECTED_CLOCK_CHANGE = 127,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_COMMS_USING_UNAUTHENTICATED_COMPONENT = 128,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_ERROR_REG_CLEAR = 129,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_ALARM_REG_CLEAR = 130,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNEXPECTED_HW_RESET = 131,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNEXPECTED_PROGRAM_EXECUTION = 132,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_EVENT_LOG_CLEARED = 133,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_LIMIT_THRESHOLD_EXCEEDED = 134,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_LIMIT_THRESHOLD_OK = 135,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_LIMIT_THRESHOLD_CHANGED = 136,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_MAXIMUM_DEMAND_EXCEEDED = 137,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_PROFILE_CLEARED = 138,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_SAMPLING_BUFFERCLEARED = 139,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_BATTERY_WARNING = 140,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_WRONG_SIGNATURE = 141,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_NO_SIGNATURE = 142,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNAUTHORISED_ACTIONFROM_HAN = 143,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_FAST_POLLING_START = 144,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_FAST_POLLING_END = 145,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_REPORTING_INTERVAL_CHANGED = 146,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_DISCONNECT_DUETO_LOAD_LIMIT = 147,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_SUPPLY_STATUS_REGISTER_CHANGED = 148,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_ALARM_STATUS_REGISTER_CHANGED = 149,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_EXTENDED_METER_ALARM_STATUS_REGISTER_CHANGED = 150,
+} EmberAfExtendedGenericAlarmGroups;
+
+// Enum for ExtendedNumberOfPriceTiers
+typedef enum
+{
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_REFER_TO_NUMBER_OF_PRICE_TIERS_FIELD = 0,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS16 = 1,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS17 = 2,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS18 = 3,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS19 = 4,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS20 = 5,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS21 = 6,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS22 = 7,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS23 = 8,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS24 = 9,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS25 = 10,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS26 = 11,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS27 = 12,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS28 = 13,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS29 = 14,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS30 = 15,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS31 = 16,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS32 = 17,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS33 = 18,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS34 = 19,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS35 = 20,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS36 = 21,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS37 = 22,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS38 = 23,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS39 = 24,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS40 = 25,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS41 = 26,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS42 = 27,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS43 = 28,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS44 = 29,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS45 = 30,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS46 = 31,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS47 = 32,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS48 = 33,
+} EmberAfExtendedNumberOfPriceTiers;
+
+// Enum for ExtendedPriceTier
+typedef enum
+{
+ EMBER_ZCL_EXTENDED_PRICE_TIER_REFER_TO_PRICE_TIER_FIELD = 0,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER16_PRICE_LABEL = 1,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER17_PRICE_LABEL = 2,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER18_PRICE_LABEL = 3,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER19_PRICE_LABEL = 4,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER20_PRICE_LABEL = 5,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER21_PRICE_LABEL = 6,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER22_PRICE_LABEL = 7,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER23_PRICE_LABEL = 8,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER24_PRICE_LABEL = 9,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER25_PRICE_LABEL = 10,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER26_PRICE_LABEL = 11,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER27_PRICE_LABEL = 12,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER28_PRICE_LABEL = 13,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER29_PRICE_LABEL = 14,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER30_PRICE_LABEL = 15,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER31_PRICE_LABEL = 16,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER32_PRICE_LABEL = 17,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER33_PRICE_LABEL = 18,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER34_PRICE_LABEL = 19,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER35_PRICE_LABEL = 20,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER36_PRICE_LABEL = 21,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER37_PRICE_LABEL = 22,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER38_PRICE_LABEL = 23,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER39_PRICE_LABEL = 24,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER40_PRICE_LABEL = 25,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER41_PRICE_LABEL = 26,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER42_PRICE_LABEL = 27,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER43_PRICE_LABEL = 28,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER44_PRICE_LABEL = 29,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER45_PRICE_LABEL = 30,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER46_PRICE_LABEL = 31,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER47_PRICE_LABEL = 32,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER48_PRICE_LABEL = 33,
+} EmberAfExtendedPriceTier;
+
+// Enum for ExtendedRegisterTier
+typedef enum
+{
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_REFER_TO_REGISTER_TIER_FIELD = 0,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER16_SUMMATION_DELIVERED_ATTRIBUTE = 1,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER17_SUMMATION_DELIVERED_ATTRIBUTE = 2,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER18_SUMMATION_DELIVERED_ATTRIBUTE = 3,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER19_SUMMATION_DELIVERED_ATTRIBUTE = 4,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER20_SUMMATION_DELIVERED_ATTRIBUTE = 5,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER21_SUMMATION_DELIVERED_ATTRIBUTE = 6,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER22_SUMMATION_DELIVERED_ATTRIBUTE = 7,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER23_SUMMATION_DELIVERED_ATTRIBUTE = 8,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER24_SUMMATION_DELIVERED_ATTRIBUTE = 9,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER25_SUMMATION_DELIVERED_ATTRIBUTE = 10,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER26_SUMMATION_DELIVERED_ATTRIBUTE = 11,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER27_SUMMATION_DELIVERED_ATTRIBUTE = 12,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER28_SUMMATION_DELIVERED_ATTRIBUTE = 13,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER29_SUMMATION_DELIVERED_ATTRIBUTE = 14,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER30_SUMMATION_DELIVERED_ATTRIBUTE = 15,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER31_SUMMATION_DELIVERED_ATTRIBUTE = 16,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER32_SUMMATION_DELIVERED_ATTRIBUTE = 17,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER33_SUMMATION_DELIVERED_ATTRIBUTE = 18,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER34_SUMMATION_DELIVERED_ATTRIBUTE = 19,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER35_SUMMATION_DELIVERED_ATTRIBUTE = 20,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER36_SUMMATION_DELIVERED_ATTRIBUTE = 21,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER37_SUMMATION_DELIVERED_ATTRIBUTE = 22,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER38_SUMMATION_DELIVERED_ATTRIBUTE = 23,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER39_SUMMATION_DELIVERED_ATTRIBUTE = 24,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER40_SUMMATION_DELIVERED_ATTRIBUTE = 25,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER41_SUMMATION_DELIVERED_ATTRIBUTE = 26,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER42_SUMMATION_DELIVERED_ATTRIBUTE = 27,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER43_SUMMATION_DELIVERED_ATTRIBUTE = 28,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER44_SUMMATION_DELIVERED_ATTRIBUTE = 29,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER45_SUMMATION_DELIVERED_ATTRIBUTE = 30,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER46_SUMMATION_DELIVERED_ATTRIBUTE = 31,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER47_SUMMATION_DELIVERED_ATTRIBUTE = 32,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER48_SUMMATION_DELIVERED_ATTRIBUTE = 33,
+} EmberAfExtendedRegisterTier;
+
+// Enum for EzModeCommissioningClusterType
+typedef enum
+{
+ EMBER_ZCL_EZ_MODE_COMMISSIONING_CLUSTER_TYPE_SERVER = 0,
+ EMBER_ZCL_EZ_MODE_COMMISSIONING_CLUSTER_TYPE_CLIENT = 1,
+} EmberAfEzModeCommissioningClusterType;
+
+// Enum for FanMode
+typedef enum
+{
+ EMBER_ZCL_FAN_MODE_OFF = 0,
+ EMBER_ZCL_FAN_MODE_LOW = 1,
+ EMBER_ZCL_FAN_MODE_MEDIUM = 2,
+ EMBER_ZCL_FAN_MODE_HIGH = 3,
+ EMBER_ZCL_FAN_MODE_ON = 4,
+ EMBER_ZCL_FAN_MODE_AUTO = 5,
+ EMBER_ZCL_FAN_MODE_SMART = 6,
+} EmberAfFanMode;
+
+// Enum for FanModeSequence
+typedef enum
+{
+ EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_MED_HIGH = 0,
+ EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_HIGH = 1,
+ EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_MED_HIGH_AUTO = 2,
+ EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_HIGH_AUTO = 3,
+ EMBER_ZCL_FAN_MODE_SEQUENCE_ON_AUTO = 4,
+} EmberAfFanModeSequence;
+
+// Enum for GasSpecificAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_TILT_TAMPER = 96,
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_BATTERY_COVER_REMOVED = 97,
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_BATTERY_COVER_CLOSED = 98,
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_EXCESS_FLOW = 99,
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_TILT_TAMPER_ENDED = 100,
+} EmberAfGasSpecificAlarmGroups;
+
+// Enum for GenerationTier
+typedef enum
+{
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER1_SUMMATION_RECEIVED_ATTRIBUTE = 1,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER2_SUMMATION_RECEIVED_ATTRIBUTE = 2,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER3_SUMMATION_RECEIVED_ATTRIBUTE = 3,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER4_SUMMATION_RECEIVED_ATTRIBUTE = 4,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER5_SUMMATION_RECEIVED_ATTRIBUTE = 5,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER6_SUMMATION_RECEIVED_ATTRIBUTE = 6,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER7_SUMMATION_RECEIVED_ATTRIBUTE = 7,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER8_SUMMATION_RECEIVED_ATTRIBUTE = 8,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER9_SUMMATION_RECEIVED_ATTRIBUTE = 9,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER10_SUMMATION_RECEIVED_ATTRIBUTE = 10,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER11_SUMMATION_RECEIVED_ATTRIBUTE = 11,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER12_SUMMATION_RECEIVED_ATTRIBUTE = 12,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER13_SUMMATION_RECEIVED_ATTRIBUTE = 13,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER14_SUMMATION_RECEIVED_ATTRIBUTE = 14,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER15_SUMMATION_RECEIVED_ATTRIBUTE = 15,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER16_SUMMATION_RECEIVED_ATTRIBUTE = 16,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER17_SUMMATION_RECEIVED_ATTRIBUTE = 17,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER18_SUMMATION_RECEIVED_ATTRIBUTE = 18,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER19_SUMMATION_RECEIVED_ATTRIBUTE = 19,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER20_SUMMATION_RECEIVED_ATTRIBUTE = 20,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER21_SUMMATION_RECEIVED_ATTRIBUTE = 21,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER22_SUMMATION_RECEIVED_ATTRIBUTE = 22,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER23_SUMMATION_RECEIVED_ATTRIBUTE = 23,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER24_SUMMATION_RECEIVED_ATTRIBUTE = 24,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER25_SUMMATION_RECEIVED_ATTRIBUTE = 25,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER26_SUMMATION_RECEIVED_ATTRIBUTE = 26,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER27_SUMMATION_RECEIVED_ATTRIBUTE = 27,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER28_SUMMATION_RECEIVED_ATTRIBUTE = 28,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER29_SUMMATION_RECEIVED_ATTRIBUTE = 29,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER30_SUMMATION_RECEIVED_ATTRIBUTE = 30,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER31_SUMMATION_RECEIVED_ATTRIBUTE = 31,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER32_SUMMATION_RECEIVED_ATTRIBUTE = 32,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER33_SUMMATION_RECEIVED_ATTRIBUTE = 33,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER34_SUMMATION_RECEIVED_ATTRIBUTE = 34,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER35_SUMMATION_RECEIVED_ATTRIBUTE = 35,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER36_SUMMATION_RECEIVED_ATTRIBUTE = 36,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER37_SUMMATION_RECEIVED_ATTRIBUTE = 37,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER38_SUMMATION_RECEIVED_ATTRIBUTE = 38,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER39_SUMMATION_RECEIVED_ATTRIBUTE = 39,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER40_SUMMATION_RECEIVED_ATTRIBUTE = 40,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER41_SUMMATION_RECEIVED_ATTRIBUTE = 41,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER42_SUMMATION_RECEIVED_ATTRIBUTE = 42,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER43_SUMMATION_RECEIVED_ATTRIBUTE = 43,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER44_SUMMATION_RECEIVED_ATTRIBUTE = 44,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER45_SUMMATION_RECEIVED_ATTRIBUTE = 45,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER46_SUMMATION_RECEIVED_ATTRIBUTE = 46,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER47_SUMMATION_RECEIVED_ATTRIBUTE = 47,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER48_SUMMATION_RECEIVED_ATTRIBUTE = 48,
+} EmberAfGenerationTier;
+
+// Enum for GenericAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_CHECK_METER = 0,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_LOW_BATTERY = 1,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_TAMPER_DETECT = 2,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_LEAK_DETECT = 5,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_SERVICE_DISCONNECT = 6,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_METER_COVER_REMOVED = 8,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_METER_COVER_CLOSED = 9,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_STRONG_MAGNETIC_FIELD = 10,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_NO_STRONG_MAGNETIC_FIELD = 11,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_BATTERY_FAILURE = 12,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_PROGRAM_MEMORY_ERROR = 13,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_RAM_ERROR = 14,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_NV_MEMORY_ERROR = 15,
+} EmberAfGenericAlarmGroups;
+
+// Enum for GenericAlarmGroupsElectricity
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_ELECTRICITY_POWER_FAILURE = 3,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_ELECTRICITY_POWER_QUALITY = 4,
+} EmberAfGenericAlarmGroupsElectricity;
+
+// Enum for GenericAlarmGroupsGas
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_GAS_LOW_PRESSURE = 4,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_GAS_REVERSE_FLOW = 7,
+} EmberAfGenericAlarmGroupsGas;
+
+// Enum for GenericAlarmGroupsHeatCooling
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_HEAT_COOLING_TEMPERATURE_SENSOR = 3,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_HEAT_COOLING_BURST_DETECT = 4,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_HEAT_COOLING_FLOW_SENSOR = 7,
+} EmberAfGenericAlarmGroupsHeatCooling;
+
+// Enum for GenericAlarmGroupsWater
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_WATER_WATER_PIPE_EMPTY = 3,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_WATER_WATER_LOW_PRESSURE = 4,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_WATER_WATER_REVERSE_FLOW = 7,
+} EmberAfGenericAlarmGroupsWater;
+
+// Enum for GenericDeviceClass
+typedef enum
+{
+ EMBER_ZCL_GENERIC_DEVICE_CLASS_LIGHTING = 0,
+} EmberAfGenericDeviceClass;
+
+// Enum for GenericDeviceType
+typedef enum
+{
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_INCANDESCENT = 0,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_SPOTLIGHT_HALOGEN = 1,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_HALOGEN_BULB = 2,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_CFL = 3,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_LINEAR_FLOURESCENT = 4,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_LED_BULB = 5,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_SPOTLIGHT_LED = 6,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_LED_STRIP = 7,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_LED_TUBE = 8,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_INDOOR_FIXTURE = 9,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_OUTDOOR_FIXTURE = 10,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_PENDANT_FIXTURE = 11,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_FLOOR_STANDING_FIXTURE = 12,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_CONTROLLER = 224,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_WALL_SWITCH = 225,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_PORTABLE_REMOTE_CONTROLLER = 226,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_MOTION_OR_LIGHT_SENSOR = 227,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_ACTUATOR = 240,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_PLUGIN_UNIT = 241,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_RETROFIT_ACTUATOR = 242,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_UNSPECIFIED = 255,
+} EmberAfGenericDeviceType;
+
+// Enum for GenericFlowPressureAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_BURST_DETECT = 48,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_PRESSURE_TOO_LOW = 49,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_PRESSURE_TOO_HIGH = 50,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_COMMUNICATION_ERROR = 51,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_MEASUREMENT_FAULT = 52,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_REVERSE_FLOW = 53,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_AIR_DETECT = 54,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_PIPE_EMPTY = 55,
+} EmberAfGenericFlowPressureAlarmGroups;
+
+// Enum for GpDeviceId
+typedef enum
+{
+ EMBER_ZCL_GP_DEVICE_ID_GP_SIMPLE_GENERIC_ONE_STATE_SWITCH = 0,
+ EMBER_ZCL_GP_DEVICE_ID_GP_SIMPLE_GENERIC_TWO_STATE_SWITCH = 0,
+ EMBER_ZCL_GP_DEVICE_ID_GP_ON_OFF_SWITCH = 8,
+ EMBER_ZCL_GP_DEVICE_ID_GP_LEVEL_CONTROL_SWITCH = 16,
+ EMBER_ZCL_GP_DEVICE_ID_GP_SIMPLE_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_ADVANCED_GENERIC_ONE_STATE_SWITCH = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_ADVANCED_GENERIC_TWO_STATE_SWITCH = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_COLOR_DIMMER_SWITCH = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_LIGHT_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_OCCPANCY_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_DOOR_LOCK_CONTROLLER = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_TEMPERATURE_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_PRESSURE_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_FLOW_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_INDOOR_ENVIRONMENT_SNESOR = 24,
+} EmberAfGpDeviceId;
+
+// Enum for GpGpdf
+typedef enum
+{
+ EMBER_ZCL_GP_GPDF_IDENTIFY = 0,
+ EMBER_ZCL_GP_GPDF_MATCH_ONLY_ON_GPD_ADDRESS = 2,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE0 = 16,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE1 = 17,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE2 = 18,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE3 = 19,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE4 = 20,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE5 = 21,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE6 = 22,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE7 = 23,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE0 = 24,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE1 = 25,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE2 = 26,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE3 = 27,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE4 = 28,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE5 = 29,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE6 = 30,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE7 = 31,
+ EMBER_ZCL_GP_GPDF_OFF = 32,
+ EMBER_ZCL_GP_GPDF_ON = 33,
+ EMBER_ZCL_GP_GPDF_TOGGLE = 34,
+ EMBER_ZCL_GP_GPDF_RELEASE = 35,
+ EMBER_ZCL_GP_GPDF_MOVE_UP = 48,
+ EMBER_ZCL_GP_GPDF_MOVE_DOWN = 49,
+ EMBER_ZCL_GP_GPDF_STEP_UP = 50,
+ EMBER_ZCL_GP_GPDF_STEP_DOWN = 51,
+ EMBER_ZCL_GP_GPDF_LEVEL_CONTROL_STOP = 52,
+ EMBER_ZCL_GP_GPDF_MOVE_UP_WITH_ON_OFF = 53,
+ EMBER_ZCL_GP_GPDF_MOVE_DOWN_WITH_ON_OFF = 54,
+ EMBER_ZCL_GP_GPDF_STEP_UP_WITH_ON_OFF = 55,
+ EMBER_ZCL_GP_GPDF_STEP_DOWN_WITH_ON_OFF = 56,
+ EMBER_ZCL_GP_GPDF_MOVE_HUE_STOP = 64,
+ EMBER_ZCL_GP_GPDF_MOVE_HUE_UP = 65,
+ EMBER_ZCL_GP_GPDF_MOVE_HUE_DOWN = 66,
+ EMBER_ZCL_GP_GPDF_STEP_HUE_UP = 67,
+ EMBER_ZCL_GP_GPDF_STEP_HUE_DOWN = 68,
+ EMBER_ZCL_GP_GPDF_MOVE_SATURATION_STOP = 69,
+ EMBER_ZCL_GP_GPDF_MOVE_SATURATION_UP = 70,
+ EMBER_ZCL_GP_GPDF_MOVE_SATURATION_DOWN = 71,
+ EMBER_ZCL_GP_GPDF_STEP_SATURATION_UP = 72,
+ EMBER_ZCL_GP_GPDF_STEP_SATURATION_DOWN = 73,
+ EMBER_ZCL_GP_GPDF_MOVE_COLOR = 74,
+ EMBER_ZCL_GP_GPDF_STEP_COLOR = 75,
+ EMBER_ZCL_GP_GPDF_LOCK_DOOR = 80,
+ EMBER_ZCL_GP_GPDF_UNLOCK_DOOR = 81,
+ EMBER_ZCL_GP_GPDF_PRESS1_OF1 = 96,
+ EMBER_ZCL_GP_GPDF_RELEASE1_OF1 = 97,
+ EMBER_ZCL_GP_GPDF_PRESS1_OF2 = 98,
+ EMBER_ZCL_GP_GPDF_RELEASE1_OF2 = 99,
+ EMBER_ZCL_GP_GPDF_PRESS2_OF2 = 100,
+ EMBER_ZCL_GP_GPDF_RELEASE2_OF2 = 101,
+ EMBER_ZCL_GP_GPDF_SHORT_PRESS1_OF1 = 102,
+ EMBER_ZCL_GP_GPDF_SHORT_PRESS1_OF2 = 103,
+ EMBER_ZCL_GP_GPDF_SHORT_PRESS2_OF2 = 104,
+ EMBER_ZCL_GP_GPDF_8BITS_VECTOR_PRESS = 105,
+ EMBER_ZCL_GP_GPDF_8BITS_VECTOR_RELEASE = 106,
+ EMBER_ZCL_GP_GPDF_ATTRIBUTE_REPORTING = 160,
+ EMBER_ZCL_GP_GPDF_MFR_SP_ATTR_RPTG = 161,
+ EMBER_ZCL_GP_GPDF_MULTI_CLUSTER_RPTG = 162,
+ EMBER_ZCL_GP_GPDF_MFR_SP_MULTI_CLUSTER_RPTG = 163,
+ EMBER_ZCL_GP_GPDF_REQUEST_ATTRIBUTE = 164,
+ EMBER_ZCL_GP_GPDF_READ_ATTR_RESPONSE = 165,
+ EMBER_ZCL_GP_GPDF_ZCL_TUNNELING_WITH_PAYLOAD = 166,
+ EMBER_ZCL_GP_GPDF_COMPACT_ATTRIBUTE_REPORTING = 168,
+ EMBER_ZCL_GP_GPDF_ANY_GPD_SENSOR_CMD = 175,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD0 = 176,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD1 = 177,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD2 = 178,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD3 = 179,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD4 = 180,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD5 = 181,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD6 = 182,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD7 = 183,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD8 = 184,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD9 = 185,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_A = 186,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_B = 187,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_C = 188,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_D = 189,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_E = 190,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_F = 191,
+ EMBER_ZCL_GP_GPDF_COMMISSIONING = 224,
+ EMBER_ZCL_GP_GPDF_DECOMMISSIONING = 225,
+ EMBER_ZCL_GP_GPDF_SUCCESS = 226,
+ EMBER_ZCL_GP_GPDF_CHANNEL_REQUEST = 227,
+ EMBER_ZCL_GP_GPDF_APPLICATION_DESCRIPTION = 228,
+ EMBER_ZCL_GP_GPDF_COMMISSIONING_REPLY = 240,
+ EMBER_ZCL_GP_GPDF_WRITE_ATTRIBUTES = 241,
+ EMBER_ZCL_GP_GPDF_READ_ATTRIBUTES = 242,
+ EMBER_ZCL_GP_GPDF_CHANNEL_CONFIGURATION = 243,
+ EMBER_ZCL_GP_GPDF_ZCL_TUNNELING = 246,
+} EmberAfGpGpdf;
+
+// Enum for GpPairingConfigurationAction
+typedef enum
+{
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_NO_ACTION = 0,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_EXTEND_SINK_TABLE_ENTRY = 1,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_REPLACE_SINK_TABLE_ENTRY = 2,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_REMOVE_A_PAIRING = 3,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_REMOVE_GPD = 4,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_APPLICATION_DESCRIPTION = 5,
+} EmberAfGpPairingConfigurationAction;
+
+// Enum for GpPairingConfigurationOptionCommunicationMode
+typedef enum
+{
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_UNICAST_FORWARDING = 0,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_D_GROUP_ID = 8,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_PRE_COMMISSIONED = 16,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_UNICAST_FORWARDING_LIGHTWEIGHT = 24,
+} EmberAfGpPairingConfigurationOptionCommunicationMode;
+
+// Enum for GpPairingOptionsCommunicationMode
+typedef enum
+{
+ EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_FULL_UNICAST_FORWARDING = 0,
+ EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_D_GROUP_ID = 1,
+ EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_PRE_COMM_UNIT = 16,
+ EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_UNICAST_FORWARDING_BY_PROX_SUPPORT = 17,
+} EmberAfGpPairingOptionsCommunicationMode;
+
+// Enum for GpProxyTableRequestOptionsRequestType
+typedef enum
+{
+ EMBER_ZCL_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_BY_GPD_ID = 0,
+ EMBER_ZCL_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_BY_INDEX = 1,
+} EmberAfGpProxyTableRequestOptionsRequestType;
+
+// Enum for GpProxyTableResponseStatus
+typedef enum
+{
+ EMBER_ZCL_GP_PROXY_TABLE_RESPONSE_STATUS_SUCCESS = 0,
+ EMBER_ZCL_GP_PROXY_TABLE_RESPONSE_STATUS_NOT_FOUND = 139,
+} EmberAfGpProxyTableResponseStatus;
+
+// Enum for GpSecurityKeyType
+typedef enum
+{
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_NONE = 0,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_ZIGBEE_NETWORK_KEY = 1,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_GPD_GROUP_KEY = 2,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_NETWORK_DERIVED_GROUP_KEY = 3,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_INDIVIDIGUAL_GPD_KEY = 4,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_DERIVED_INDIVIDUAL_GPD_KEY = 7,
+} EmberAfGpSecurityKeyType;
+
+// Enum for GpSinkTableRequestOptions
+typedef enum
+{
+ EMBER_ZCL_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TABLE_ENTRIES_BY_GPD_ID = 0,
+ EMBER_ZCL_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TABLE_ENTRIES_BY_INDEX = 1,
+} EmberAfGpSinkTableRequestOptions;
+
+// Enum for GpSinkTableResponseStatus
+typedef enum
+{
+ EMBER_ZCL_GP_SINK_TABLE_RESPONSE_STATUS_SUCCESS = 0,
+ EMBER_ZCL_GP_SINK_TABLE_RESPONSE_STATUS_NOT_FOUND = 139,
+} EmberAfGpSinkTableResponseStatus;
+
+// Enum for GpTranslationTableResponseStatus
+typedef enum
+{
+ EMBER_ZCL_GP_TRANSLATION_TABLE_RESPONSE_STATUS_SUCCESS = 0,
+ EMBER_ZCL_GP_TRANSLATION_TABLE_RESPONSE_STATUS_NOT_FOUND = 139,
+} EmberAfGpTranslationTableResponseStatus;
+
+// Enum for GpTranslationTableUpdateAction
+typedef enum
+{
+ EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_ADD_TRANSLATION_TABLE_ENTRY = 0,
+ EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_REPLACE_TRANSLATION_TABLE_ENTRY = 8,
+ EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_REMOVE_TRANSLATION_TABLE_ENTRY = 16,
+ EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_RESERVED = 24,
+} EmberAfGpTranslationTableUpdateAction;
+
+// Enum for HeatAndCoolingSpecificAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_HEAT_AND_COOLING_SPECIFIC_ALARM_GROUPS_INLET_TEMPERATURE_SENSOR_FAULT = 80,
+ EMBER_ZCL_HEAT_AND_COOLING_SPECIFIC_ALARM_GROUPS_OUTLET_TEMPERATURE_SENSOR_FAULT = 81,
+} EmberAfHeatAndCoolingSpecificAlarmGroups;
+
+// Enum for HueDirection
+typedef enum
+{
+ EMBER_ZCL_HUE_DIRECTION_SHORTEST_DISTANCE = 0,
+ EMBER_ZCL_HUE_DIRECTION_LONGEST_DISTANCE = 1,
+ EMBER_ZCL_HUE_DIRECTION_UP = 2,
+ EMBER_ZCL_HUE_DIRECTION_DOWN = 3,
+} EmberAfHueDirection;
+
+// Enum for HueMoveMode
+typedef enum
+{
+ EMBER_ZCL_HUE_MOVE_MODE_STOP = 0,
+ EMBER_ZCL_HUE_MOVE_MODE_UP = 1,
+ EMBER_ZCL_HUE_MOVE_MODE_DOWN = 3,
+} EmberAfHueMoveMode;
+
+// Enum for HueStepMode
+typedef enum
+{
+ EMBER_ZCL_HUE_STEP_MODE_UP = 1,
+ EMBER_ZCL_HUE_STEP_MODE_DOWN = 3,
+} EmberAfHueStepMode;
+
+// Enum for IasAceAlarmStatus
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_NO_ALARM = 0,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_BURGLAR = 1,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_FIRE = 2,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_EMERGENCY = 3,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_POLICE_PANIC = 4,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_FIRE_PANIC = 5,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_EMERGENCY_PANIC = 6,
+} EmberAfIasAceAlarmStatus;
+
+// Enum for IasAceArmMode
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_ARM_MODE_DISARM = 0,
+ EMBER_ZCL_IAS_ACE_ARM_MODE_ARM_DAY_HOME_ZONES_ONLY = 1,
+ EMBER_ZCL_IAS_ACE_ARM_MODE_ARM_NIGHT_SLEEP_ZONES_ONLY = 2,
+ EMBER_ZCL_IAS_ACE_ARM_MODE_ARM_ALL_ZONES = 3,
+} EmberAfIasAceArmMode;
+
+// Enum for IasAceArmNotification
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ALL_ZONES_DISARMED = 0,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ONLY_DAY_HOME_ZONES_ARMED = 1,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ONLY_NIGHT_SLEEP_ZONES_ARMED = 2,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ALL_ZONES_ARMED = 3,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_INVALID_ARM_DISARM_CODE = 4,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_NOT_READY_TO_ARM = 5,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ALREADY_DISARMED = 6,
+} EmberAfIasAceArmNotification;
+
+// Enum for IasAceAudibleNotification
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_AUDIBLE_NOTIFICATION_MUTE = 0,
+ EMBER_ZCL_IAS_ACE_AUDIBLE_NOTIFICATION_DEFAULT_SOUND = 1,
+} EmberAfIasAceAudibleNotification;
+
+// Enum for IasAceBypassResult
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_ZONE_BYPASSED = 0,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_ZONE_NOT_BYPASSED = 1,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_NOT_ALLOWED = 2,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_INVALID_ZONE_ID = 3,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_UNKNOWN_ZONE_ID = 4,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_INVALID_ARM_DISARM_CODE = 5,
+} EmberAfIasAceBypassResult;
+
+// Enum for IasAcePanelStatus
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_PANEL_DISARMED = 0,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMED_STAY = 1,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMED_NIGHT = 2,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMED_AWAY = 3,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_EXIT_DELAY = 4,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ENTRY_DELAY = 5,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_NOT_READY_TO_ARM = 6,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_IN_ALARM = 7,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMING_STAY = 8,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMING_NIGHT = 9,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMING_AWAY = 10,
+} EmberAfIasAcePanelStatus;
+
+// Enum for IasEnrollResponseCode
+typedef enum
+{
+ EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_SUCCESS = 0,
+ EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_NOT_SUPPORTED = 1,
+ EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_NO_ENROLL_PERMIT = 2,
+ EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_TOO_MANY_ZONES = 3,
+} EmberAfIasEnrollResponseCode;
+
+// Enum for IasZoneState
+typedef enum
+{
+ EMBER_ZCL_IAS_ZONE_STATE_NOT_ENROLLED = 0,
+ EMBER_ZCL_IAS_ZONE_STATE_ENROLLED = 1,
+} EmberAfIasZoneState;
+
+// Enum for IasZoneType
+typedef enum
+{
+ EMBER_ZCL_IAS_ZONE_TYPE_STANDARD_CIE = 0,
+ EMBER_ZCL_IAS_ZONE_TYPE_MOTION_SENSOR = 13,
+ EMBER_ZCL_IAS_ZONE_TYPE_CONTACT_SWITCH = 21,
+ EMBER_ZCL_IAS_ZONE_TYPE_FIRE_SENSOR = 40,
+ EMBER_ZCL_IAS_ZONE_TYPE_WATER_SENSOR = 42,
+ EMBER_ZCL_IAS_ZONE_TYPE_GAS_SENSOR = 43,
+ EMBER_ZCL_IAS_ZONE_TYPE_PERSONAL_EMERGENCY_DEVICE = 44,
+ EMBER_ZCL_IAS_ZONE_TYPE_VIBRATION_MOVEMENT_SENSOR = 45,
+ EMBER_ZCL_IAS_ZONE_TYPE_REMOTE_CONTROL = 271,
+ EMBER_ZCL_IAS_ZONE_TYPE_KEY_FOB = 277,
+ EMBER_ZCL_IAS_ZONE_TYPE_KEYPAD = 541,
+ EMBER_ZCL_IAS_ZONE_TYPE_STANDARD_WARNING_DEVICE = 549,
+ EMBER_ZCL_IAS_ZONE_TYPE_GLASS_BREAK_SENSOR = 550,
+ EMBER_ZCL_IAS_ZONE_TYPE_CARBON_MONOXIDE_SENSOR = 551,
+ EMBER_ZCL_IAS_ZONE_TYPE_SECURITY_REPEATER = 553,
+ EMBER_ZCL_IAS_ZONE_TYPE_INVALID_ZONE_TYPE = 65535,
+} EmberAfIasZoneType;
+
+// Enum for IdentifyEffectIdentifier
+typedef enum
+{
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BLINK = 0,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BREATHE = 1,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_OKAY = 2,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_CHANNEL_CHANGE = 11,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_FINISH_EFFECT = 254,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_STOP_EFFECT = 255,
+} EmberAfIdentifyEffectIdentifier;
+
+// Enum for IdentifyEffectVariant
+typedef enum
+{
+ EMBER_ZCL_IDENTIFY_EFFECT_VARIANT_DEFAULT = 0,
+} EmberAfIdentifyEffectVariant;
+
+// Enum for KeyIndex
+typedef enum
+{
+ EMBER_ZCL_KEY_INDEX_DEVELOPMENT = 0,
+ EMBER_ZCL_KEY_INDEX_MASTER = 4,
+ EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15,
+} EmberAfKeyIndex;
+
+// Enum for KeypadLockout
+typedef enum
+{
+ EMBER_ZCL_KEYPAD_LOCKOUT_NO_LOCKOUT = 0,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_ONE_LOCKOUT = 1,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_TWO_LOCKOUT = 2,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_THREE_LOCKOUT = 3,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_FOUR_LOCKOUT = 4,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVELFIVE_LOCKOUT = 5,
+} EmberAfKeypadLockout;
+
+// Enum for LevelControlOptions
+typedef enum
+{
+ EMBER_ZCL_LEVEL_CONTROL_OPTIONS_EXECUTE_IF_OFF = 1,
+ EMBER_ZCL_LEVEL_CONTROL_OPTIONS_COUPLE_COLOR_TEMP_TO_LEVEL = 2,
+} EmberAfLevelControlOptions;
+
+// Enum for LevelStatus
+typedef enum
+{
+ EMBER_ZCL_LEVEL_STATUS_ON_TARGET = 0,
+ EMBER_ZCL_LEVEL_STATUS_BELOW_TARGET = 1,
+ EMBER_ZCL_LEVEL_STATUS_ABOVE_TARGET = 2,
+} EmberAfLevelStatus;
+
+// Enum for LocationMethod
+typedef enum
+{
+ EMBER_ZCL_LOCATION_METHOD_LATERATION = 0,
+ EMBER_ZCL_LOCATION_METHOD_SIGNPOSTING = 1,
+ EMBER_ZCL_LOCATION_METHOD_RF_FINGERPRINTING = 2,
+ EMBER_ZCL_LOCATION_METHOD_OUT_OF_BAND = 3,
+} EmberAfLocationMethod;
+
+// Enum for ManufacturerSpecificAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_A = 176,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_B = 177,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_C = 178,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_D = 179,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_E = 180,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_F = 181,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_G = 182,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_H = 183,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_I = 184,
+} EmberAfManufacturerSpecificAlarmGroups;
+
+// Enum for MeasurementLightSensorType
+typedef enum
+{
+ EMBER_ZCL_MEASUREMENT_LIGHT_SENSOR_TYPE_PHOTODIODE = 0,
+ EMBER_ZCL_MEASUREMENT_LIGHT_SENSOR_TYPE_CMOS = 1,
+} EmberAfMeasurementLightSensorType;
+
+// Enum for MessagingControlConfirmation
+typedef enum
+{
+ EMBER_ZCL_MESSAGING_CONTROL_CONFIRMATION_NOT_REQUIRED = 0,
+ EMBER_ZCL_MESSAGING_CONTROL_CONFIRMATION_REQUIRED = 128,
+} EmberAfMessagingControlConfirmation;
+
+// Enum for MessagingControlEnhancedConfirmation
+typedef enum
+{
+ EMBER_ZCL_MESSAGING_CONTROL_ENHANCED_CONFIRMATION_NOT_REQUIRED = 0,
+ EMBER_ZCL_MESSAGING_CONTROL_ENHANCED_CONFIRMATION_REQUIRED = 32,
+} EmberAfMessagingControlEnhancedConfirmation;
+
+// Enum for MessagingControlImportance
+typedef enum
+{
+ EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_LOW = 0,
+ EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_MEDIUM = 4,
+ EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_HIGH = 8,
+ EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_CRITICAL = 12,
+} EmberAfMessagingControlImportance;
+
+// Enum for MessagingControlTransmission
+typedef enum
+{
+ EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_NORMAL = 0,
+ EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_NORMAL_AND_ANONYMOUS = 1,
+ EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_ANONYMOUS = 2,
+ EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_RESERVED = 3,
+} EmberAfMessagingControlTransmission;
+
+// Enum for MeterDeviceType
+typedef enum
+{
+ EMBER_ZCL_METER_DEVICE_TYPE_ELECTRIC_METER = 0,
+ EMBER_ZCL_METER_DEVICE_TYPE_GAS_METER = 1,
+ EMBER_ZCL_METER_DEVICE_TYPE_WATER_METER = 2,
+ EMBER_ZCL_METER_DEVICE_TYPE_THERMAL_METER = 3,
+ EMBER_ZCL_METER_DEVICE_TYPE_PRESSURE_METER = 4,
+ EMBER_ZCL_METER_DEVICE_TYPE_HEAT_METER = 5,
+ EMBER_ZCL_METER_DEVICE_TYPE_COOLING_METER = 6,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_GAS_METER = 128,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_WATER_METER = 129,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_THERMAL_METER = 130,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_PRESSURE_METER = 131,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_HEAT_METER = 132,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_COOLING_METER = 133,
+ EMBER_ZCL_METER_DEVICE_TYPE_UNDEFINED_MIRROR_METER = 254,
+} EmberAfMeterDeviceType;
+
+// Enum for MeterTypeId
+typedef enum
+{
+ EMBER_ZCL_METER_TYPE_ID_UTILITY_PRIMARY_METER = 0,
+ EMBER_ZCL_METER_TYPE_ID_UTILITY_PRODUCTION_METER = 1,
+ EMBER_ZCL_METER_TYPE_ID_UTILITY_SECONDARY_METER = 2,
+ EMBER_ZCL_METER_TYPE_ID_PRIVATE_PRIMARY_METER = 256,
+ EMBER_ZCL_METER_TYPE_ID_PRIVATE_PRODUCTION_METER = 257,
+ EMBER_ZCL_METER_TYPE_ID_PRIVATE_SECONDARY_METERS = 258,
+ EMBER_ZCL_METER_TYPE_ID_GENERIC_METER = 272,
+} EmberAfMeterTypeId;
+
+// Enum for MeteringAlarmCode
+typedef enum
+{
+ EMBER_ZCL_METERING_ALARM_CODE_CHECK_METER = 0,
+ EMBER_ZCL_METERING_ALARM_CODE_LOW_BATTERY = 1,
+ EMBER_ZCL_METERING_ALARM_CODE_TAMPER_DETECT = 2,
+ EMBER_ZCL_METERING_ALARM_CODE_POWER_FAILURE_PIPE_EMPTY_TEMPERATURE_SENSOR = 3,
+ EMBER_ZCL_METERING_ALARM_CODE_POWER_QUALITY_LOW_PRESSURE_BURST_DETECT = 4,
+ EMBER_ZCL_METERING_ALARM_CODE_LEAK_DETECT = 5,
+ EMBER_ZCL_METERING_ALARM_CODE_SERVICE_DISCONNECT = 6,
+ EMBER_ZCL_METERING_ALARM_CODE_REVERSE_FLOW_FLOW_SENSOR = 7,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_COVER_REMOVED = 8,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_COVER_CLOSED = 9,
+ EMBER_ZCL_METERING_ALARM_CODE_STRONG_MAGNETIC_FIELD = 10,
+ EMBER_ZCL_METERING_ALARM_CODE_NO_STRONG_MAGNETIC_FIELD = 11,
+ EMBER_ZCL_METERING_ALARM_CODE_BATTERY_FAILURE = 12,
+ EMBER_ZCL_METERING_ALARM_CODE_PROGRAM_MEMORY_ERROR = 13,
+ EMBER_ZCL_METERING_ALARM_CODE_RAM_ERROR = 14,
+ EMBER_ZCL_METERING_ALARM_CODE_NV_MEMORY_ERROR = 15,
+ EMBER_ZCL_METERING_ALARM_CODE_LOW_VOLTAGE_L1 = 16,
+ EMBER_ZCL_METERING_ALARM_CODE_HIGH_VOLTAGE_L1 = 17,
+ EMBER_ZCL_METERING_ALARM_CODE_LOW_VOLTAGE_L2 = 18,
+ EMBER_ZCL_METERING_ALARM_CODE_HIGH_VOLTAGE_L2 = 19,
+ EMBER_ZCL_METERING_ALARM_CODE_LOW_VOLTAGE_L3 = 20,
+ EMBER_ZCL_METERING_ALARM_CODE_HIGH_VOLTAGE_L3 = 21,
+ EMBER_ZCL_METERING_ALARM_CODE_OVER_CURRENT_L1 = 22,
+ EMBER_ZCL_METERING_ALARM_CODE_OVER_CURRENT_L2 = 23,
+ EMBER_ZCL_METERING_ALARM_CODE_OVER_CURRENT_L3 = 24,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_LOW_L1 = 25,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_HIGH_L1 = 26,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_LOW_L2 = 27,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_HIGH_L2 = 28,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_LOW_L3 = 29,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_HIGH_L3 = 30,
+ EMBER_ZCL_METERING_ALARM_CODE_GROUND_FAULT = 31,
+ EMBER_ZCL_METERING_ALARM_CODE_ELECTRIC_TAMPER_DETECT = 32,
+ EMBER_ZCL_METERING_ALARM_CODE_INCORRECT_POLARITY = 33,
+ EMBER_ZCL_METERING_ALARM_CODE_CURRENT_NO_VOLTAGE = 34,
+ EMBER_ZCL_METERING_ALARM_CODE_UNDER_VOLTAGE = 35,
+ EMBER_ZCL_METERING_ALARM_CODE_OVER_VOLTAGE = 36,
+ EMBER_ZCL_METERING_ALARM_CODE_NORMAL_VOLTAGE = 37,
+ EMBER_ZCL_METERING_ALARM_CODE_PF_BELOW_THRESHOLD = 38,
+ EMBER_ZCL_METERING_ALARM_CODE_PF_ABOVE_THRESHOLD = 39,
+ EMBER_ZCL_METERING_ALARM_CODE_TERMINAL_COVER_REMOVED = 40,
+ EMBER_ZCL_METERING_ALARM_CODE_TERMINAL_COVER_CLOSED = 41,
+ EMBER_ZCL_METERING_ALARM_CODE_BURST_DETECT = 48,
+ EMBER_ZCL_METERING_ALARM_CODE_PRESSURE_TOO_LOW = 49,
+ EMBER_ZCL_METERING_ALARM_CODE_PRESSURE_TOO_HIGH = 50,
+ EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_COMMUNICATION_ERROR = 51,
+ EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_MEASUREMENT_FAULT = 52,
+ EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_REVERSE_FLOW = 53,
+ EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_AIR_DETECT = 54,
+ EMBER_ZCL_METERING_ALARM_CODE_PIPE_EMPTY = 55,
+ EMBER_ZCL_METERING_ALARM_CODE_INLET_TEMPERATURE_SENSOR_FAULT = 80,
+ EMBER_ZCL_METERING_ALARM_CODE_OUTLET_TEMPERATURE_SENSOR_FAULT = 81,
+ EMBER_ZCL_METERING_ALARM_CODE_TILT_TAMPER = 96,
+ EMBER_ZCL_METERING_ALARM_CODE_BATTERY_COVER_REMOVED = 97,
+ EMBER_ZCL_METERING_ALARM_CODE_BATTERY_COVER_CLOSED = 98,
+ EMBER_ZCL_METERING_ALARM_CODE_EXCESS_FLOW = 99,
+ EMBER_ZCL_METERING_ALARM_CODE_TILT_TAMPER_ENDED = 100,
+ EMBER_ZCL_METERING_ALARM_CODE_MEASUREMENT_SYSTEM_ERROR = 112,
+ EMBER_ZCL_METERING_ALARM_CODE_WATCHDOG_ERROR = 113,
+ EMBER_ZCL_METERING_ALARM_CODE_SUPPLY_DISCONNECT_FAILURE = 114,
+ EMBER_ZCL_METERING_ALARM_CODE_SUPPLY_CONNECT_FAILURE = 115,
+ EMBER_ZCL_METERING_ALARM_CODE_MEASURMENT_SOFTWARE_CHANGED = 116,
+ EMBER_ZCL_METERING_ALARM_CODE_DST_ENABLED = 117,
+ EMBER_ZCL_METERING_ALARM_CODE_DST_DISABLED = 118,
+ EMBER_ZCL_METERING_ALARM_CODE_CLOCK_ADJ_BACKWARD = 119,
+ EMBER_ZCL_METERING_ALARM_CODE_CLOCK_ADJ_FORWARD = 120,
+ EMBER_ZCL_METERING_ALARM_CODE_CLOCK_INVALID = 121,
+ EMBER_ZCL_METERING_ALARM_CODE_COMMUNICATION_ERROR_HAN = 122,
+ EMBER_ZCL_METERING_ALARM_CODE_COMMUNICATION_OK_H_AN = 123,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_FRAUD_ATTEMPT = 124,
+ EMBER_ZCL_METERING_ALARM_CODE_POWER_LOSS = 125,
+ EMBER_ZCL_METERING_ALARM_CODE_UNUSUAL_HAN_TRAFFIC = 126,
+ EMBER_ZCL_METERING_ALARM_CODE_UNEXPECTED_CLOCK_CHANGE = 127,
+ EMBER_ZCL_METERING_ALARM_CODE_COMMS_USING_UNAUTHENTICATED_COMPONENT = 128,
+ EMBER_ZCL_METERING_ALARM_CODE_ERROR_REG_CLEAR = 129,
+ EMBER_ZCL_METERING_ALARM_CODE_ALARM_REG_CLEAR = 130,
+ EMBER_ZCL_METERING_ALARM_CODE_UNEXPECTED_HW_RESET = 131,
+ EMBER_ZCL_METERING_ALARM_CODE_UNEXPECTED_PROGRAM_EXECUTION = 132,
+ EMBER_ZCL_METERING_ALARM_CODE_EVENT_LOG_CLEARED = 133,
+ EMBER_ZCL_METERING_ALARM_CODE_LIMIT_THRESHOLD_EXCEEDED = 134,
+ EMBER_ZCL_METERING_ALARM_CODE_LIMIT_THRESHOLD_OK = 135,
+ EMBER_ZCL_METERING_ALARM_CODE_LIMIT_THRESHOLD_CHANGED = 136,
+ EMBER_ZCL_METERING_ALARM_CODE_MAXIMUM_DEMAND_EXCEEDED = 137,
+ EMBER_ZCL_METERING_ALARM_CODE_PROFILE_CLEARED = 138,
+ EMBER_ZCL_METERING_ALARM_CODE_SAMPLING_BUFFERCLEARED = 139,
+ EMBER_ZCL_METERING_ALARM_CODE_BATTERY_WARNING = 140,
+ EMBER_ZCL_METERING_ALARM_CODE_WRONG_SIGNATURE = 141,
+ EMBER_ZCL_METERING_ALARM_CODE_NO_SIGNATURE = 142,
+ EMBER_ZCL_METERING_ALARM_CODE_UNAUTHORISED_ACTIONFROM_HAN = 143,
+ EMBER_ZCL_METERING_ALARM_CODE_FAST_POLLING_START = 144,
+ EMBER_ZCL_METERING_ALARM_CODE_FAST_POLLING_END = 145,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_REPORTING_INTERVAL_CHANGED = 146,
+ EMBER_ZCL_METERING_ALARM_CODE_DISCONNECT_DUETO_LOAD_LIMIT = 147,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_SUPPLY_STATUS_REGISTER_CHANGED = 148,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_ALARM_STATUS_REGISTER_CHANGED = 149,
+ EMBER_ZCL_METERING_ALARM_CODE_EXTENDED_METER_ALARM_STATUS_REGISTER_CHANGED = 150,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_A = 176,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_B = 177,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_C = 178,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_D = 179,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_E = 180,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_F = 181,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_G = 182,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_H = 183,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_I = 184,
+} EmberAfMeteringAlarmCode;
+
+// Enum for MeteringBlockEnumerations
+typedef enum
+{
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_NO_BLOCKS_IN_USE = 0,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK1 = 1,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK2 = 2,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK3 = 3,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK4 = 4,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK5 = 5,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK6 = 6,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK7 = 7,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK8 = 8,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK9 = 9,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK10 = 10,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK11 = 11,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK12 = 12,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK13 = 13,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK14 = 14,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK15 = 15,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK16 = 16,
+} EmberAfMeteringBlockEnumerations;
+
+// Enum for MeteringConsumptionStatus
+typedef enum
+{
+ EMBER_ZCL_METERING_CONSUMPTION_STATUS_LOW_ENERGY_USAGE = 0,
+ EMBER_ZCL_METERING_CONSUMPTION_STATUS_MEDIUM_ENERGY_USAGE = 1,
+ EMBER_ZCL_METERING_CONSUMPTION_STATUS_HIGH_ENERGY_USAGE = 2,
+} EmberAfMeteringConsumptionStatus;
+
+// Enum for MeteringDeviceType
+typedef enum
+{
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING = 0,
+ EMBER_ZCL_METERING_DEVICE_TYPE_GAS_METERING = 1,
+ EMBER_ZCL_METERING_DEVICE_TYPE_WATER_METERING = 2,
+ EMBER_ZCL_METERING_DEVICE_TYPE_THERMAL_METERING = 3,
+ EMBER_ZCL_METERING_DEVICE_TYPE_PRESSURE_METERING = 4,
+ EMBER_ZCL_METERING_DEVICE_TYPE_HEAT_METERING = 5,
+ EMBER_ZCL_METERING_DEVICE_TYPE_COOLING_METERING = 6,
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_VEHICLE_CHARGING_METERING = 7,
+ EMBER_ZCL_METERING_DEVICE_TYPE_PV_GENERATION_METERING = 8,
+ EMBER_ZCL_METERING_DEVICE_TYPE_WIND_TURBINE_GENERATION_METERING = 9,
+ EMBER_ZCL_METERING_DEVICE_TYPE_WATER_TURBINE_GENERATION_METERING = 10,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MICRO_GENERATION_METERING = 11,
+ EMBER_ZCL_METERING_DEVICE_TYPE_SOLAR_HOT_WATER_GENERATION_METERING = 12,
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING_ELEMENT1 = 13,
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING_ELEMENT2 = 14,
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING_ELEMENT3 = 15,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING = 127,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_GAS_METERING = 128,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_WATER_METERING = 129,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_THERMAL_METERING = 130,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_PRESSURE_METERING = 131,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_HEAT_METERING = 132,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_COOLING_METERING = 133,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_VEHICLE_CHARGING_METERING = 134,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_PV_GENERATION_METERING = 135,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_WIND_TURBINE_GENERATION_METERING = 136,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_WATER_TURBINE_GENERATION_METERING = 137,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_MICRO_GENERATION_METERING = 138,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_SOLAR_HOT_WATER_GENERATION_METERING = 139,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING_ELEMENT1 = 140,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING_ELEMENT2 = 141,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING_ELEMENT3 = 142,
+ EMBER_ZCL_METERING_DEVICE_TYPE_UNDEFINED_MIRROR_METER = 254,
+} EmberAfMeteringDeviceType;
+
+// Enum for MeteringSupplyStatus
+typedef enum
+{
+ EMBER_ZCL_METERING_SUPPLY_STATUS_SUPPLY_OFF = 0,
+ EMBER_ZCL_METERING_SUPPLY_STATUS_SUPPLY_OFF_ARMED = 1,
+ EMBER_ZCL_METERING_SUPPLY_STATUS_SUPPLY_ON = 2,
+} EmberAfMeteringSupplyStatus;
+
+// Enum for MeteringTemperatureUnitOfMeasure
+typedef enum
+{
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_KELVIN = 0,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_CELSIUS = 1,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_FAHRENHEIT = 2,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_KELVIN_BCD = 128,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_CELSIUS_BCD = 129,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_FAHRENHEIT_BCD = 130,
+} EmberAfMeteringTemperatureUnitOfMeasure;
+
+// Enum for MoveMode
+typedef enum
+{
+ EMBER_ZCL_MOVE_MODE_UP = 0,
+ EMBER_ZCL_MOVE_MODE_DOWN = 1,
+} EmberAfMoveMode;
+
+// Enum for NotificationScheme
+typedef enum
+{
+ EMBER_ZCL_NOTIFICATION_SCHEME_NO_NOTIFICATION_SCHEME_DEFINED = 0,
+ EMBER_ZCL_NOTIFICATION_SCHEME_PREDEFINED_NOTIFICATION_SCHEME_A = 1,
+ EMBER_ZCL_NOTIFICATION_SCHEME_PREDEFINED_NOTIFICATION_SCHEME_B = 2,
+} EmberAfNotificationScheme;
+
+// Enum for OccupancySensorType
+typedef enum
+{
+ EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_PIR = 0,
+ EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_ULTRASONIC = 1,
+ EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_PIR_AND_ULTRASONIC = 2,
+ EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_PHYSICAL_CONTACT = 3,
+} EmberAfOccupancySensorType;
+
+// Enum for OnOffDelayedAllOffEffectVariant
+typedef enum
+{
+ EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS = 0,
+ EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_NO_FADE = 1,
+ EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_50_PERCENT_DIM_DOWN_IN_0P8_SECONDS_THEN_FADE_TO_OFF_IN_12_SECONDS = 2,
+} EmberAfOnOffDelayedAllOffEffectVariant;
+
+// Enum for OnOffDyingLightEffectVariant
+typedef enum
+{
+ EMBER_ZCL_ON_OFF_DYING_LIGHT_EFFECT_VARIANT_20_PERCENTER_DIM_UP_IN_0P5_SECONDS_THEN_FADE_TO_OFF_IN_1_SECOND = 0,
+} EmberAfOnOffDyingLightEffectVariant;
+
+// Enum for OnOffEffectIdentifier
+typedef enum
+{
+ EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF = 0,
+ EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DYING_LIGHT = 1,
+} EmberAfOnOffEffectIdentifier;
+
+// Enum for OperatingMode
+typedef enum
+{
+ EMBER_ZCL_OPERATING_MODE_NORMAL = 0,
+ EMBER_ZCL_OPERATING_MODE_CONFIGURE = 1,
+} EmberAfOperatingMode;
+
+// Enum for OriginatingDevice
+typedef enum
+{
+ EMBER_ZCL_ORIGINATING_DEVICE_ENERGY_SERVICE_INTERFACE = 0,
+ EMBER_ZCL_ORIGINATING_DEVICE_METER = 1,
+ EMBER_ZCL_ORIGINATING_DEVICE_IN_HOME_DISPLAY_DEVICE = 2,
+} EmberAfOriginatingDevice;
+
+// Enum for PasswordType
+typedef enum
+{
+ EMBER_ZCL_PASSWORD_TYPE_PASSWORD1_SERVICE_MENU_ACCESS = 1,
+ EMBER_ZCL_PASSWORD_TYPE_PASSWORD2_CONSUMER_MENU_ACCESS = 2,
+ EMBER_ZCL_PASSWORD_TYPE_PASSWORD3 = 3,
+ EMBER_ZCL_PASSWORD_TYPE_PASSWORD4 = 4,
+} EmberAfPasswordType;
+
+// Enum for PaymentDiscountDuration
+typedef enum
+{
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_CURRENT_BILLING_PERIOD = 0,
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_CURRENT_CONSOLIDATED_BILL = 1,
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_ONE_MONTH = 2,
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_ONE_QUARTER = 3,
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_ONE_YEAR = 4,
+} EmberAfPaymentDiscountDuration;
+
+// Enum for PhysicalEnvironment
+typedef enum
+{
+ EMBER_ZCL_PHYSICAL_ENVIRONMENT_UNSPECIFIED = 0,
+ EMBER_ZCL_PHYSICAL_ENVIRONMENT_FIRST_PROFILE_SPECIFIED_VALUE = 1,
+ EMBER_ZCL_PHYSICAL_ENVIRONMENT_LAST_PROFILE_SPECIFIED_VALUE = 127,
+ EMBER_ZCL_PHYSICAL_ENVIRONMENT_UNKNOWN = 255,
+} EmberAfPhysicalEnvironment;
+
+// Enum for PowerProfileState
+typedef enum
+{
+ EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_WAITING_TO_START = 1,
+ EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_STARTED = 2,
+ EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_RUNNING = 3,
+ EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_ENDED = 4,
+ EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_WAITING_TO_START = 5,
+ EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_STARTED = 6,
+ EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_ENDED = 7,
+ EMBER_ZCL_POWER_PROFILE_STATE_PROFILE_READY_FOR_SCHEDULING = 8,
+ EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_SCHEDULED = 9,
+} EmberAfPowerProfileState;
+
+// Enum for PowerSource
+typedef enum
+{
+ EMBER_ZCL_POWER_SOURCE_UNKNOWN = 0,
+ EMBER_ZCL_POWER_SOURCE_SINGLE_PHASE_MAINS = 1,
+ EMBER_ZCL_POWER_SOURCE_THREE_PHASE_MAINS = 2,
+ EMBER_ZCL_POWER_SOURCE_BATTERY = 3,
+ EMBER_ZCL_POWER_SOURCE_DC_SOURCE = 4,
+ EMBER_ZCL_POWER_SOURCE_EMERGENCY_MAINS_CONSTANT_POWER = 5,
+ EMBER_ZCL_POWER_SOURCE_EMERGENCY_MAINS_TRANSFER_SWITCH = 6,
+ EMBER_ZCL_POWER_SOURCE_BATTERY_BACKUP = 128,
+} EmberAfPowerSource;
+
+// Enum for PrePayGenericAlarmGroup
+typedef enum
+{
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_LOW_CREDIT = 0,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_NO_CREDIT = 1,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_CREDIT_EXHAUSTED = 2,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_EMERGENCY_CREDIT_ENABLED = 3,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_EMERGENCY_CREDIT_EXHAUSTED = 4,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_IHD_LOW_CREDIT_WARNING = 5,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_EVENT_LOG_CLEARED = 6,
+} EmberAfPrePayGenericAlarmGroup;
+
+// Enum for PrepayEventAlarmGroup
+typedef enum
+{
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_PHYSICAL_ATTACK_ON_THE_PREPAY_METER = 32,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_ELECTRONIC_ATTACK_ON_THE_PREPAY_METER = 33,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_DISCOUNT_APPLIED = 34,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_CREDIT_ADJUSTMENT = 35,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_CREDIT_ADJUSTMENT_FAIL = 36,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_DEBT_ADJUSTMENT = 37,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_DEBT_ADJUSTMENT_FAIL = 38,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_CHANGE = 39,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_TOPUP_CODE_ERROR = 40,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_TOPUP_ALREADY_USED = 41,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_TOPUP_CODE_INVALID = 42,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_FRIENDLY_CREDIT_IN_USE = 43,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_FRIENDLY_CREDIT_PERIOD_END_WARNING = 44,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_FRIENDLY_CREDIT_PERIOD_END = 45,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_ERROR_REG_CLEAR = 48,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_ALARM_REG_CLEAR = 49,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_PREPAY_CLUSTER_NOT_FOUND = 50,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_CREDIT2_PREPAY = 65,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_PREPAY2_CREDIT = 66,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_DEFAULT = 67,
+} EmberAfPrepayEventAlarmGroup;
+
+// Enum for PrepaySnapshotPayloadType
+typedef enum
+{
+ EMBER_ZCL_PREPAY_SNAPSHOT_PAYLOAD_TYPE_DEBT_CREDIT_STATUS = 0,
+ EMBER_ZCL_PREPAY_SNAPSHOT_PAYLOAD_TYPE_NOT_USED = 255,
+} EmberAfPrepaySnapshotPayloadType;
+
+// Enum for PrepaySwitchAlarmGroup
+typedef enum
+{
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_SUPPLY_ON = 16,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_SUPPLY_ARM = 17,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_SUPPLY_OFF = 18,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_DISCONNECTION_FAILURE = 19,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_DISCONNECTED_DUE_TO_TAMPER_DETECTED = 20,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_DISCONNECTED_DUE_TO_CUT_OFF_VALUE = 21,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_REMOTE_DISCONNECTED = 22,
+} EmberAfPrepaySwitchAlarmGroup;
+
+// Enum for PriceControlAcknowledgement
+typedef enum
+{
+ EMBER_ZCL_PRICE_CONTROL_ACKNOWLEDGEMENT_NOT_REQUIRED = 0,
+ EMBER_ZCL_PRICE_CONTROL_ACKNOWLEDGEMENT_REQUIRED = 1,
+} EmberAfPriceControlAcknowledgement;
+
+// Enum for PriceTier
+typedef enum
+{
+ EMBER_ZCL_PRICE_TIER_NO_TIER_RELATED = 0,
+ EMBER_ZCL_PRICE_TIER_TIER1_PRICE_LABEL = 1,
+ EMBER_ZCL_PRICE_TIER_TIER2_PRICE_LABEL = 2,
+ EMBER_ZCL_PRICE_TIER_TIER3_PRICE_LABEL = 3,
+ EMBER_ZCL_PRICE_TIER_TIER4_PRICE_LABEL = 4,
+ EMBER_ZCL_PRICE_TIER_TIER5_PRICE_LABEL = 5,
+ EMBER_ZCL_PRICE_TIER_TIER6_PRICE_LABEL = 6,
+ EMBER_ZCL_PRICE_TIER_TIER7_PRICE_LABEL = 7,
+ EMBER_ZCL_PRICE_TIER_TIER8_PRICE_LABEL = 8,
+ EMBER_ZCL_PRICE_TIER_TIER9_PRICE_LABEL = 9,
+ EMBER_ZCL_PRICE_TIER_TIER10_PRICE_LABEL = 10,
+ EMBER_ZCL_PRICE_TIER_TIER11_PRICE_LABEL = 11,
+ EMBER_ZCL_PRICE_TIER_TIER12_PRICE_LABEL = 12,
+ EMBER_ZCL_PRICE_TIER_TIER13_PRICE_LABEL = 13,
+ EMBER_ZCL_PRICE_TIER_TIER14_PRICE_LABEL = 14,
+ EMBER_ZCL_PRICE_TIER_REFER_TO_EXTENDED_PRICE_TIER_FIELD = 15,
+ EMBER_ZCL_PRICE_TIER_TIER15_PRICE_LABEL = 15,
+} EmberAfPriceTier;
+
+// Enum for ProductCode
+typedef enum
+{
+ EMBER_ZCL_PRODUCT_CODE_MANUFACTURER_DEFINED = 0,
+ EMBER_ZCL_PRODUCT_CODE_ITERNATIONAL_ARTICLE_NUMBER = 1,
+ EMBER_ZCL_PRODUCT_CODE_GLOBAL_TRADE_ITEM_NUMBER = 2,
+ EMBER_ZCL_PRODUCT_CODE_UNIVERSAL_PRODUCT_CODE = 3,
+ EMBER_ZCL_PRODUCT_CODE_STOCK_KEEPING_UNIT = 4,
+} EmberAfProductCode;
+
+// Enum for ProductTypeId
+typedef enum
+{
+ EMBER_ZCL_PRODUCT_TYPE_ID_WHITE_GOODS = 0,
+ EMBER_ZCL_PRODUCT_TYPE_ID_DISHWASHER = 22017,
+ EMBER_ZCL_PRODUCT_TYPE_ID_TUMBLE_DRYER = 22018,
+ EMBER_ZCL_PRODUCT_TYPE_ID_WASHER_DRYER = 22019,
+ EMBER_ZCL_PRODUCT_TYPE_ID_WASHING_MACHINE = 22020,
+ EMBER_ZCL_PRODUCT_TYPE_ID_HOBS = 24067,
+ EMBER_ZCL_PRODUCT_TYPE_ID_INDUCTION_HOBS = 24073,
+ EMBER_ZCL_PRODUCT_TYPE_ID_OVEN = 24065,
+ EMBER_ZCL_PRODUCT_TYPE_ID_ELECTRICAL_OVEN = 24070,
+ EMBER_ZCL_PRODUCT_TYPE_ID_REFRIGERATOR_FREEZER = 26113,
+} EmberAfProductTypeId;
+
+// Enum for ProposedSupplyStatus
+typedef enum
+{
+ EMBER_ZCL_PROPOSED_SUPPLY_STATUS_RESERVED = 0,
+ EMBER_ZCL_PROPOSED_SUPPLY_STATUS_SUPPLY_OFF_ARMED = 1,
+ EMBER_ZCL_PROPOSED_SUPPLY_STATUS_SUPPLY_ON = 2,
+} EmberAfProposedSupplyStatus;
+
+// Enum for PublishCppEventCppAuth
+typedef enum
+{
+ EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_PENDING = 0,
+ EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_ACCEPTED = 1,
+ EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_REJECTED = 2,
+ EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_FORCED = 3,
+} EmberAfPublishCppEventCppAuth;
+
+// Enum for PumpControlMode
+typedef enum
+{
+ EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_SPEED = 0,
+ EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_PRESSURE = 1,
+ EMBER_ZCL_PUMP_CONTROL_MODE_PROPORTIONAL_PRESSURE = 2,
+ EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_FLOW = 3,
+ EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_TEMPERATURE = 5,
+ EMBER_ZCL_PUMP_CONTROL_MODE_AUTOMATIC = 7,
+} EmberAfPumpControlMode;
+
+// Enum for PumpOperationMode
+typedef enum
+{
+ EMBER_ZCL_PUMP_OPERATION_MODE_NORMAL = 0,
+ EMBER_ZCL_PUMP_OPERATION_MODE_MINIMUM = 1,
+ EMBER_ZCL_PUMP_OPERATION_MODE_MAXIMUM = 2,
+ EMBER_ZCL_PUMP_OPERATION_MODE_LOCAL = 3,
+} EmberAfPumpOperationMode;
+
+// Enum for PushHistoricalMeteringData
+typedef enum
+{
+ EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_DAY = 64,
+ EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_WEEK = 128,
+ EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_MONTH = 384,
+ EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_YEAR = 448,
+} EmberAfPushHistoricalMeteringData;
+
+// Enum for PushHistoricalPaymentData
+typedef enum
+{
+ EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_DAY = 512,
+ EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_WEEK = 1024,
+ EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_MONTH = 3072,
+ EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_YEAR = 3584,
+} EmberAfPushHistoricalPaymentData;
+
+// Enum for RegisterTier
+typedef enum
+{
+ EMBER_ZCL_REGISTER_TIER_NO_TIER_RELATED = 0,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER1_SUMMATION_DELIVERED_ATTRIBUTE = 1,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER2_SUMMATION_DELIVERED_ATTRIBUTE = 2,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER3_SUMMATION_DELIVERED_ATTRIBUTE = 3,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER4_SUMMATION_DELIVERED_ATTRIBUTE = 4,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER5_SUMMATION_DELIVERED_ATTRIBUTE = 5,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER6_SUMMATION_DELIVERED_ATTRIBUTE = 6,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER7_SUMMATION_DELIVERED_ATTRIBUTE = 7,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER8_SUMMATION_DELIVERED_ATTRIBUTE = 8,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER9_SUMMATION_DELIVERED_ATTRIBUTE = 9,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER10_SUMMATION_DELIVERED_ATTRIBUTE = 10,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER11_SUMMATION_DELIVERED_ATTRIBUTE = 11,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER12_SUMMATION_DELIVERED_ATTRIBUTE = 12,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER13_SUMMATION_DELIVERED_ATTRIBUTE = 13,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER14_SUMMATION_DELIVERED_ATTRIBUTE = 14,
+ EMBER_ZCL_REGISTER_TIER_REFER_TO_EXTENDED_REGISTER_TIER_FIELD = 15,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER15_SUMMATION_DELIVERED_ATTRIBUTE = 15,
+} EmberAfRegisterTier;
+
+// Enum for RelativeHumidityDisplay
+typedef enum
+{
+ EMBER_ZCL_RELATIVE_HUMIDITY_DISPLAY_NOT_DISPLAYED = 0,
+ EMBER_ZCL_RELATIVE_HUMIDITY_DISPLAY_DISPLAYED = 1,
+} EmberAfRelativeHumidityDisplay;
+
+// Enum for RelativeHumidityMode
+typedef enum
+{
+ EMBER_ZCL_RELATIVE_HUMIDITY_MODE_MEASURE_LOCALLY = 0,
+ EMBER_ZCL_RELATIVE_HUMIDITY_MODE_UPDATED_OVER_THE_NETWORK = 1,
+} EmberAfRelativeHumidityMode;
+
+// Enum for RemoteEnableFlags
+typedef enum
+{
+ EMBER_ZCL_REMOTE_ENABLE_FLAGS_DISABLED = 0,
+ EMBER_ZCL_REMOTE_ENABLE_FLAGS_TEMPORARILY_LOCKED_DISABLED = 7,
+ EMBER_ZCL_REMOTE_ENABLE_FLAGS_ENABLED_REMOTE_CONTROL = 15,
+ EMBER_ZCL_REMOTE_ENABLE_FLAGS_ENABLED_REMOTE_AND_ENERGY_CONTROL = 1,
+} EmberAfRemoteEnableFlags;
+
+// Enum for RepaymentDebtType
+typedef enum
+{
+ EMBER_ZCL_REPAYMENT_DEBT_TYPE_DEBT1 = 0,
+ EMBER_ZCL_REPAYMENT_DEBT_TYPE_DEBT2 = 1,
+ EMBER_ZCL_REPAYMENT_DEBT_TYPE_DEBT3 = 2,
+ EMBER_ZCL_REPAYMENT_DEBT_TYPE_ALL_DEBTS = 255,
+} EmberAfRepaymentDebtType;
+
+// Enum for ResultType
+typedef enum
+{
+ EMBER_ZCL_RESULT_TYPE_ACCEPTED = 0,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_INVALID_TOP_UP = 1,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_DUPLICATE_TOP_UP = 2,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_ERROR = 3,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_MAX_CREDIT_REACHED = 4,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_KEYPAD_LOCK = 5,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_TOP_UP_VALUE_TOO_LARGE = 6,
+ EMBER_ZCL_RESULT_TYPE_ACCEPTED_SUPPLY_ENABLED = 16,
+ EMBER_ZCL_RESULT_TYPE_ACCEPTED_SUPPLY_DISABLED = 17,
+ EMBER_ZCL_RESULT_TYPE_ACCEPTED_SUPPLY_ARMED = 18,
+} EmberAfResultType;
+
+// Enum for SampleType
+typedef enum
+{
+ EMBER_ZCL_SAMPLE_TYPE_CONSUMPTION_DELIVERED = 0,
+} EmberAfSampleType;
+
+// Enum for SaturationMoveMode
+typedef enum
+{
+ EMBER_ZCL_SATURATION_MOVE_MODE_STOP = 0,
+ EMBER_ZCL_SATURATION_MOVE_MODE_UP = 1,
+ EMBER_ZCL_SATURATION_MOVE_MODE_DOWN = 3,
+} EmberAfSaturationMoveMode;
+
+// Enum for SaturationStepMode
+typedef enum
+{
+ EMBER_ZCL_SATURATION_STEP_MODE_UP = 1,
+ EMBER_ZCL_SATURATION_STEP_MODE_DOWN = 3,
+} EmberAfSaturationStepMode;
+
+// Enum for SensingLightSensorType
+typedef enum
+{
+ EMBER_ZCL_SENSING_LIGHT_SENSOR_TYPE_PHOTODIODE = 0,
+ EMBER_ZCL_SENSING_LIGHT_SENSOR_TYPE_CMOS = 1,
+} EmberAfSensingLightSensorType;
+
+// Enum for SetpointAdjustMode
+typedef enum
+{
+ EMBER_ZCL_SETPOINT_ADJUST_MODE_HEAT_SETPOINT = 0,
+ EMBER_ZCL_SETPOINT_ADJUST_MODE_COOL_SETPOINT = 1,
+ EMBER_ZCL_SETPOINT_ADJUST_MODE_HEAT_AND_COOL_SETPOINTS = 2,
+} EmberAfSetpointAdjustMode;
+
+// Enum for SignatureType
+typedef enum
+{
+ EMBER_ZCL_SIGNATURE_TYPE_RESERVED = 0,
+ EMBER_ZCL_SIGNATURE_TYPE_ECDSA = 1,
+} EmberAfSignatureType;
+
+// Enum for SnapshotConfirmation
+typedef enum
+{
+ EMBER_ZCL_SNAPSHOT_CONFIRMATION_ACCEPTED = 0,
+ EMBER_ZCL_SNAPSHOT_CONFIRMATION_SNAPSHOT_CAUSE_NOT_SUPPORTED = 1,
+} EmberAfSnapshotConfirmation;
+
+// Enum for SnapshotPayloadType
+typedef enum
+{
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_DELIVERED_REGISTERS = 0,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_RECEIVED_REGISTERS = 1,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_DELIVERED = 2,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_RECEIVED = 3,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_DELIVERED_REGISTERS_NO_BILLING = 4,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_RECEIVED_REGISTER_NO_BILLINGS = 5,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_DELIVERED_NO_BILLING = 6,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_RECEIVED_NO_BILLING = 7,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_DATA_UNAVAILABLE = 128,
+} EmberAfSnapshotPayloadType;
+
+// Enum for SnapshotScheduleConfirmation
+typedef enum
+{
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ACCEPTED = 0,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_TYPE_NOT_SUPPORTED = 1,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_CAUSE_NOT_SUPPORTED = 2,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_SCHEDULE_NOT_CURRENTLY_AVAILABLE = 3,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_SCHEDULES_NOT_SUPPORTED_BY_DEVICE = 4,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_INSUFFICIENT_SPACE_FOR_SNAPSHOT_SCHEDULE = 5,
+} EmberAfSnapshotScheduleConfirmation;
+
+// Enum for SquawkLevel
+typedef enum
+{
+ EMBER_ZCL_SQUAWK_LEVEL_LOW_LEVEL = 0,
+ EMBER_ZCL_SQUAWK_LEVEL_MEDIUM_LEVEL = 1,
+ EMBER_ZCL_SQUAWK_LEVEL_HIGH_LEVEL = 2,
+ EMBER_ZCL_SQUAWK_LEVEL_VERY_HIGH_LEVEL = 2,
+} EmberAfSquawkLevel;
+
+// Enum for SquawkMode
+typedef enum
+{
+ EMBER_ZCL_SQUAWK_MODE_SYSTEM_IS_ARMED = 0,
+ EMBER_ZCL_SQUAWK_MODE_SYSTEM_IS_DISARMED = 1,
+} EmberAfSquawkMode;
+
+// Enum for SquawkStobe
+typedef enum
+{
+ EMBER_ZCL_SQUAWK_STOBE_NO_STROBE = 0,
+ EMBER_ZCL_SQUAWK_STOBE_USE_STROBE = 1,
+} EmberAfSquawkStobe;
+
+// Enum for StartOfWeek
+typedef enum
+{
+ EMBER_ZCL_START_OF_WEEK_SUNDAY = 0,
+ EMBER_ZCL_START_OF_WEEK_MONDAY = 1,
+ EMBER_ZCL_START_OF_WEEK_TUESDAY = 2,
+ EMBER_ZCL_START_OF_WEEK_WEDNESDAY = 3,
+ EMBER_ZCL_START_OF_WEEK_THURSDAY = 4,
+ EMBER_ZCL_START_OF_WEEK_FRIDAY = 5,
+ EMBER_ZCL_START_OF_WEEK_SATURDAY = 6,
+} EmberAfStartOfWeek;
+
+// Enum for StartUpOnOffValue
+typedef enum
+{
+ EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_OFF = 0,
+ EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_ON = 1,
+ EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_TOGGLE = 2,
+ EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_PREVIOUS = 255,
+} EmberAfStartUpOnOffValue;
+
+// Enum for StepMode
+typedef enum
+{
+ EMBER_ZCL_STEP_MODE_UP = 0,
+ EMBER_ZCL_STEP_MODE_DOWN = 1,
+} EmberAfStepMode;
+
+// Enum for SupplyStatus
+typedef enum
+{
+ EMBER_ZCL_SUPPLY_STATUS_SUPPLY_OFF = 0,
+ EMBER_ZCL_SUPPLY_STATUS_SUPPLY_OFF_ARMED = 1,
+ EMBER_ZCL_SUPPLY_STATUS_SUPPLY_ON = 2,
+ EMBER_ZCL_SUPPLY_STATUS_SUPPLY_UNCHANGED = 3,
+} EmberAfSupplyStatus;
+
+// Enum for SwitchActions
+typedef enum
+{
+ EMBER_ZCL_SWITCH_ACTIONS_ON = 0,
+ EMBER_ZCL_SWITCH_ACTIONS_OFF = 1,
+ EMBER_ZCL_SWITCH_ACTIONS_TOGGLE = 2,
+} EmberAfSwitchActions;
+
+// Enum for SwitchType
+typedef enum
+{
+ EMBER_ZCL_SWITCH_TYPE_TOGGLE = 0,
+ EMBER_ZCL_SWITCH_TYPE_MOMENTARY = 1,
+ EMBER_ZCL_SWITCH_TYPE_MULTI_FUNCTION = 2,
+} EmberAfSwitchType;
+
+// Enum for TariffChargingScheme
+typedef enum
+{
+ EMBER_ZCL_TARIFF_CHARGING_SCHEME_TOU_TARIFF = 0,
+ EMBER_ZCL_TARIFF_CHARGING_SCHEME_BLOCK_TARIFF = 16,
+ EMBER_ZCL_TARIFF_CHARGING_SCHEME_BLOCK_TOU_TARIFF_WITH_COMMON_THRESHOLDS = 32,
+ EMBER_ZCL_TARIFF_CHARGING_SCHEME_BLOCK_TOU_TARIFF_WITH_INDIVIDUAL_THRESHOLDS_PER_TIER = 48,
+} EmberAfTariffChargingScheme;
+
+// Enum for TariffResolutionPeriod
+typedef enum
+{
+ EMBER_ZCL_TARIFF_RESOLUTION_PERIOD_NOT_DEFINED = 0,
+ EMBER_ZCL_TARIFF_RESOLUTION_PERIOD_BLOCK_PERIOD = 1,
+ EMBER_ZCL_TARIFF_RESOLUTION_PERIOD_ONE_DAY = 2,
+} EmberAfTariffResolutionPeriod;
+
+// Enum for TariffType
+typedef enum
+{
+ EMBER_ZCL_TARIFF_TYPE_DELIVERED_TARIFF = 0,
+ EMBER_ZCL_TARIFF_TYPE_RECEIVED_TARIFF = 1,
+ EMBER_ZCL_TARIFF_TYPE_DELIVERED_AND_RECEIVED_TARIFF = 2,
+} EmberAfTariffType;
+
+// Enum for TemperatureDisplayMode
+typedef enum
+{
+ EMBER_ZCL_TEMPERATURE_DISPLAY_MODE_CELSIUS = 0,
+ EMBER_ZCL_TEMPERATURE_DISPLAY_MODE_FAHRENHEIT = 1,
+} EmberAfTemperatureDisplayMode;
+
+// Enum for TemperatureSetpointHold
+typedef enum
+{
+ EMBER_ZCL_TEMPERATURE_SETPOINT_HOLD_SETPOINT_HOLD_OFF = 0,
+ EMBER_ZCL_TEMPERATURE_SETPOINT_HOLD_SETPOINT_HOLD_ON = 1,
+} EmberAfTemperatureSetpointHold;
+
+// Enum for ThermostatControlSequence
+typedef enum
+{
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_ONLY = 0,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_WITH_REHEAT = 1,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_HEATING_ONLY = 2,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_HEATING_WITH_REHEAT = 3,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_AND_HEATING = 4,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_AND_HEATING_WITH_REHEAT = 5,
+} EmberAfThermostatControlSequence;
+
+// Enum for ThermostatRunningMode
+typedef enum
+{
+ EMBER_ZCL_THERMOSTAT_RUNNING_MODE_OFF = 0,
+ EMBER_ZCL_THERMOSTAT_RUNNING_MODE_COOL = 3,
+ EMBER_ZCL_THERMOSTAT_RUNNING_MODE_HEAT = 4,
+} EmberAfThermostatRunningMode;
+
+// Enum for ThermostatSystemMode
+typedef enum
+{
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_OFF = 0,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_AUTO = 1,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_COOL = 3,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_HEAT = 4,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_EMERGENCY_HEATING = 5,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_PRECOOLING = 6,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_FAN_ONLY = 7,
+} EmberAfThermostatSystemMode;
+
+// Enum for TierBlockMode
+typedef enum
+{
+ EMBER_ZCL_TIER_BLOCK_MODE_ACTIVE_BLOCK = 0,
+ EMBER_ZCL_TIER_BLOCK_MODE_ACTIVE_BLOCK_PRICE_TIER = 1,
+ EMBER_ZCL_TIER_BLOCK_MODE_ACTIVE_BLOCK_PRICE_TIER_THRESHOLD = 2,
+ EMBER_ZCL_TIER_BLOCK_MODE_NOT_USED = 255,
+} EmberAfTierBlockMode;
+
+// Enum for TimeEncoding
+typedef enum
+{
+ EMBER_ZCL_TIME_ENCODING_RELATIVE = 0,
+ EMBER_ZCL_TIME_ENCODING_ABSOLUTE = 64,
+} EmberAfTimeEncoding;
+
+// Enum for TunnelingProtocolId
+typedef enum
+{
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_DLMS_COSEM = 0,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_IEC_61107 = 1,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_ANSI_C12 = 2,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_M_BUS = 3,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_SML = 4,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_CLIMATE_TALK = 5,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_GB_HRGP = 6,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_IP_V4 = 7,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_IP_V6 = 8,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_TEST = 199,
+} EmberAfTunnelingProtocolId;
+
+// Enum for TunnelingTransferDataStatus
+typedef enum
+{
+ EMBER_ZCL_TUNNELING_TRANSFER_DATA_STATUS_NO_SUCH_TUNNEL = 0,
+ EMBER_ZCL_TUNNELING_TRANSFER_DATA_STATUS_WRONG_DEVICE = 1,
+ EMBER_ZCL_TUNNELING_TRANSFER_DATA_STATUS_DATA_OVERFLOW = 2,
+} EmberAfTunnelingTransferDataStatus;
+
+// Enum for TunnelingTunnelStatus
+typedef enum
+{
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_SUCCESS = 0,
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_BUSY = 1,
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_NO_MORE_TUNNEL_IDS = 2,
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_PROTOCOL_NOT_SUPPORTED = 3,
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_FLOW_CONTROL_NOT_SUPPORTED = 4,
+} EmberAfTunnelingTunnelStatus;
+
+// Enum for WanStatus
+typedef enum
+{
+ EMBER_ZCL_WAN_STATUS_CONNECTION_TO_WAN_IS_NOT_AVAILABLE = 0,
+ EMBER_ZCL_WAN_STATUS_CONNECTION_TO_WAN_IS_AVAILABLE = 1,
+} EmberAfWanStatus;
+
+// Enum for WarningEvent
+typedef enum
+{
+ EMBER_ZCL_WARNING_EVENT_WARNING1_OVERALL_POWER_ABOVE_AVAILABLE_POWER_LEVEL = 0,
+ EMBER_ZCL_WARNING_EVENT_WARNING2_OVERALL_POWER_ABOVE_POWER_THRESHOLD_LEVEL = 1,
+ EMBER_ZCL_WARNING_EVENT_WARNING3_OVERALL_POWER_BACK_BELOW_THE_AVAILABLE_POWER_LEVEL = 2,
+ EMBER_ZCL_WARNING_EVENT_WARNING4_OVERALL_POWER_BACK_BELOW_THE_POWER_THRESHOLD_LEVEL = 3,
+ EMBER_ZCL_WARNING_EVENT_WARNING5_OVERALL_POWER_WILL_BE_POTENTIALLY_ABOVE_AVAILABLE_POWER_LEVEL_IF_THE_APPLIANCE_STARTS = 4,
+} EmberAfWarningEvent;
+
+// Enum for WarningMode
+typedef enum
+{
+ EMBER_ZCL_WARNING_MODE_STOP = 0,
+ EMBER_ZCL_WARNING_MODE_BURGLAR = 1,
+ EMBER_ZCL_WARNING_MODE_FIRE = 2,
+ EMBER_ZCL_WARNING_MODE_EMERGENCY = 3,
+ EMBER_ZCL_WARNING_MODE_POLICE_PANIC = 4,
+ EMBER_ZCL_WARNING_MODE_FIRE_PANIC = 5,
+ EMBER_ZCL_WARNING_MODE_EMERGENCY_PANIC = 6,
+} EmberAfWarningMode;
+
+// Enum for WarningStobe
+typedef enum
+{
+ EMBER_ZCL_WARNING_STOBE_NO_STROBE = 0,
+ EMBER_ZCL_WARNING_STOBE_USE_STROBE = 1,
+} EmberAfWarningStobe;
+
+// Enum for WwahIasZoneEnrollmentMode
+typedef enum
+{
+ EMBER_ZCL_WWAH_IAS_ZONE_ENROLLMENT_MODE_TRIP_TO_PAIR = 0,
+ EMBER_ZCL_WWAH_IAS_ZONE_ENROLLMENT_MODE_AUTO_ENROLLMENT_RESPONSE = 1,
+ EMBER_ZCL_WWAH_IAS_ZONE_ENROLLMENT_MODE_REQUEST = 2,
+} EmberAfWwahIasZoneEnrollmentMode;
+
+// Enum for WwahPowerNotificationReason
+typedef enum
+{
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_UNKNOWN = 0,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_BATTERY = 1,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_BROWNOUT = 2,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_WATCHDOG = 3,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_RESET_PIN = 4,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_MEMORY_HARDWARE_FAULT = 5,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_SOFWARE_EXCEPTION = 6,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_OTA_BOOTLOAD_SUCCESS = 7,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_SOFTWARE_RESET = 8,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_POWER_BUTTON = 9,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_TEMPERATURE = 10,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_BOOTLOAD_FAILURE = 11,
+} EmberAfWwahPowerNotificationReason;
+
+// Enum for ZigbeeInformationLogicalType
+typedef enum
+{
+ EMBER_ZCL_ZIGBEE_INFORMATION_LOGICAL_TYPE_COORDINATOR = 0,
+ EMBER_ZCL_ZIGBEE_INFORMATION_LOGICAL_TYPE_ROUTER = 1,
+ EMBER_ZCL_ZIGBEE_INFORMATION_LOGICAL_TYPE_END_DEVICE = 2,
+} EmberAfZigbeeInformationLogicalType;
+
+// Enum for ZllStatus
+typedef enum
+{
+ EMBER_ZCL_ZLL_STATUS_SUCCESS = 0,
+ EMBER_ZCL_ZLL_STATUS_FAILURE = 1,
+} EmberAfZllStatus;
+
+#define EMBER_AF_ALARM_MASK_GENERAL_HW_FAULT (1)
+#define EMBER_AF_ALARM_MASK_GENERAL_HW_FAULT_OFFSET (0)
+#define EMBER_AF_ALARM_MASK_GENERAL_SW_FAULT (2)
+#define EMBER_AF_ALARM_MASK_GENERAL_SW_FAULT_OFFSET (1)
+#define EMBER_AF_ALERT_COUNT_NUMBER_OF_ALERTS (15)
+#define EMBER_AF_ALERT_COUNT_NUMBER_OF_ALERTS_OFFSET (0)
+#define EMBER_AF_ALERT_COUNT_TYPE_OF_ALERT (240)
+#define EMBER_AF_ALERT_COUNT_TYPE_OF_ALERT_OFFSET (4)
+#define EMBER_AF_ALERT_STRUCTURE_ALERT_ID (255)
+#define EMBER_AF_ALERT_STRUCTURE_ALERT_ID_OFFSET (0)
+#define EMBER_AF_ALERT_STRUCTURE_CATEGORY (3840)
+#define EMBER_AF_ALERT_STRUCTURE_CATEGORY_OFFSET (8)
+#define EMBER_AF_ALERT_STRUCTURE_PRESENCE_RECOVERY (12288)
+#define EMBER_AF_ALERT_STRUCTURE_PRESENCE_RECOVERY_OFFSET (12)
+#define EMBER_AF_ALTERNATE_COST_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_ALTERNATE_COST_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_AMI_CANCEL_CONTROL_TERMINATE_WITH_RANDOMIZATION (1)
+#define EMBER_AF_AMI_CANCEL_CONTROL_TERMINATE_WITH_RANDOMIZATION_OFFSET (0)
+#define EMBER_AF_AMI_COMMAND_OPTIONS_REQUEST_RX_ON_WHEN_IDLE (1)
+#define EMBER_AF_AMI_COMMAND_OPTIONS_REQUEST_RX_ON_WHEN_IDLE_OFFSET (0)
+#define EMBER_AF_AMI_DEVICE_CLASS_HVAC_COMPRESSOR_OR_FURNACE (1)
+#define EMBER_AF_AMI_DEVICE_CLASS_HVAC_COMPRESSOR_OR_FURNACE_OFFSET (0)
+#define EMBER_AF_AMI_DEVICE_CLASS_STRIP_HEAT_BASEBOARD_HEAT (2)
+#define EMBER_AF_AMI_DEVICE_CLASS_STRIP_HEAT_BASEBOARD_HEAT_OFFSET (1)
+#define EMBER_AF_AMI_DEVICE_CLASS_WATER_HEATER (4)
+#define EMBER_AF_AMI_DEVICE_CLASS_WATER_HEATER_OFFSET (2)
+#define EMBER_AF_AMI_DEVICE_CLASS_POOL_PUMP_SPA_JACUZZI (8)
+#define EMBER_AF_AMI_DEVICE_CLASS_POOL_PUMP_SPA_JACUZZI_OFFSET (3)
+#define EMBER_AF_AMI_DEVICE_CLASS_SMART_APPLIANCES (16)
+#define EMBER_AF_AMI_DEVICE_CLASS_SMART_APPLIANCES_OFFSET (4)
+#define EMBER_AF_AMI_DEVICE_CLASS_IRRIGATION_PUMP (32)
+#define EMBER_AF_AMI_DEVICE_CLASS_IRRIGATION_PUMP_OFFSET (5)
+#define EMBER_AF_AMI_DEVICE_CLASS_MANAGED_C_AND_I_LOADS (64)
+#define EMBER_AF_AMI_DEVICE_CLASS_MANAGED_C_AND_I_LOADS_OFFSET (6)
+#define EMBER_AF_AMI_DEVICE_CLASS_SIMPLE_MISC_LOADS (128)
+#define EMBER_AF_AMI_DEVICE_CLASS_SIMPLE_MISC_LOADS_OFFSET (7)
+#define EMBER_AF_AMI_DEVICE_CLASS_EXTERIOR_LIGHTING (256)
+#define EMBER_AF_AMI_DEVICE_CLASS_EXTERIOR_LIGHTING_OFFSET (8)
+#define EMBER_AF_AMI_DEVICE_CLASS_INTERIOR_LIGHTING (512)
+#define EMBER_AF_AMI_DEVICE_CLASS_INTERIOR_LIGHTING_OFFSET (9)
+#define EMBER_AF_AMI_DEVICE_CLASS_ELECTRIC_VEHICLE (1024)
+#define EMBER_AF_AMI_DEVICE_CLASS_ELECTRIC_VEHICLE_OFFSET (10)
+#define EMBER_AF_AMI_DEVICE_CLASS_GENERATION_SYSTEMS (2048)
+#define EMBER_AF_AMI_DEVICE_CLASS_GENERATION_SYSTEMS_OFFSET (11)
+#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_START_TIME (1)
+#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_START_TIME_OFFSET (0)
+#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_END_TIME (2)
+#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_END_TIME_OFFSET (1)
+#define EMBER_AF_AMI_METER_STATUS_CHECK_METER (1)
+#define EMBER_AF_AMI_METER_STATUS_CHECK_METER_OFFSET (0)
+#define EMBER_AF_AMI_METER_STATUS_LOW_BATTERY (2)
+#define EMBER_AF_AMI_METER_STATUS_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_AMI_METER_STATUS_TAMPER_DETECT (4)
+#define EMBER_AF_AMI_METER_STATUS_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_AMI_METER_STATUS_POWER_FAILURE (8)
+#define EMBER_AF_AMI_METER_STATUS_POWER_FAILURE_OFFSET (3)
+#define EMBER_AF_AMI_METER_STATUS_POWER_QUALITY (16)
+#define EMBER_AF_AMI_METER_STATUS_POWER_QUALITY_OFFSET (4)
+#define EMBER_AF_AMI_METER_STATUS_LEAK_DETECT (32)
+#define EMBER_AF_AMI_METER_STATUS_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_AMI_METER_STATUS_SERVICE_DISCONNECT_OPEN (64)
+#define EMBER_AF_AMI_METER_STATUS_SERVICE_DISCONNECT_OPEN_OFFSET (6)
+#define EMBER_AF_AMI_METER_STATUS_RESERVED (128)
+#define EMBER_AF_AMI_METER_STATUS_RESERVED_OFFSET (7)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH1 (1)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH1_OFFSET (0)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH2 (2)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH2_OFFSET (1)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH3 (4)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH3_OFFSET (2)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH4 (8)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH4_OFFSET (3)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH5 (16)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH5_OFFSET (4)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH6 (32)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH6_OFFSET (5)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH7 (64)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH7_OFFSET (6)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH8 (128)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH8_OFFSET (7)
+#define EMBER_AF_BALLAST_STATUS_NON_OPERATIONAL (1)
+#define EMBER_AF_BALLAST_STATUS_NON_OPERATIONAL_OFFSET (0)
+#define EMBER_AF_BALLAST_STATUS_LAMP_NOT_IN_SOCKET (2)
+#define EMBER_AF_BALLAST_STATUS_LAMP_NOT_IN_SOCKET_OFFSET (1)
+#define EMBER_AF_BARRIER_CONTROL_CAPABILITIES_PARTIAL_BARRIER (1)
+#define EMBER_AF_BARRIER_CONTROL_CAPABILITIES_PARTIAL_BARRIER_OFFSET (0)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_REMOTE_LOCKOUT (1)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_REMOTE_LOCKOUT_OFFSET (0)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_TEMPER_DETECTED (2)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_TEMPER_DETECTED_OFFSET (1)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_FAILED_COMMUNICATION (4)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_FAILED_COMMUNICATION_OFFSET (2)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_POSITION_FAILURE (8)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_POSITION_FAILURE_OFFSET (3)
+#define EMBER_AF_BATTERY_ALARM_MASK_VOLTAGE_TOO_LOW (1)
+#define EMBER_AF_BATTERY_ALARM_MASK_VOLTAGE_TOO_LOW_OFFSET (0)
+#define EMBER_AF_BILL_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_BILL_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_BILLING_PERIOD_DURATION_DURATION (4194303)
+#define EMBER_AF_BILLING_PERIOD_DURATION_DURATION_OFFSET (0)
+#define EMBER_AF_BILLING_PERIOD_DURATION_UNITS (12582912)
+#define EMBER_AF_BILLING_PERIOD_DURATION_UNITS_OFFSET (22)
+#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_TIMEBASE (15)
+#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_TIMEBASE_OFFSET (0)
+#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_CONTROL (240)
+#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_CONTROL_OFFSET (4)
+#define EMBER_AF_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT_REQUIREMENT (1)
+#define EMBER_AF_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT_REQUIREMENT_OFFSET (0)
+#define EMBER_AF_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK (2)
+#define EMBER_AF_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK_OFFSET (1)
+#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE (15)
+#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_OFFSET (0)
+#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_CONTROL (240)
+#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_CONTROL_OFFSET (4)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER1 (2)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER1_OFFSET (1)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER2 (4)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER2_OFFSET (2)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER3 (8)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER3_OFFSET (3)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER4 (16)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER4_OFFSET (4)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER5 (32)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER5_OFFSET (5)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER6 (64)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER6_OFFSET (6)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER7 (128)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER7_OFFSET (7)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER8 (256)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER8_OFFSET (8)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER9 (512)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER9_OFFSET (9)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER10 (1024)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER10_OFFSET (10)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER11 (2048)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER11_OFFSET (11)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER12 (4096)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER12_OFFSET (12)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER13 (8192)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER13_OFFSET (13)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER14 (16384)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER14_OFFSET (14)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER15 (32768)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER15_OFFSET (15)
+#define EMBER_AF_BLOCK_THRESHOLD_SUB_PAYLOAD_CONTROL_APPLY_TO_ALL_TOU_TIERS_OR_WHEN_BLOCK_ONLY_CHARGING (1)
+#define EMBER_AF_BLOCK_THRESHOLD_SUB_PAYLOAD_CONTROL_APPLY_TO_ALL_TOU_TIERS_OR_WHEN_BLOCK_ONLY_CHARGING_OFFSET (0)
+#define EMBER_AF_CO2_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_CO2_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_CALORIFIC_VALUE_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_CALORIFIC_VALUE_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL0 (1)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL0_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL0 (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL0_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL27 (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL27_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL35 (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL35_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL0 (1)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL0_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL1 (2)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL1_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL1 (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL1_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL28 (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL28_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_853_CHANNEL36 (2)
+#define EMBER_AF_CHANNEL_MASK_853_CHANNEL36_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL1 (2)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL1_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL2 (4)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL2_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL2 (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL2_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL29 (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL29_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL37 (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL37_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL2 (4)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL2_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL3 (8)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL3_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL3 (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL3_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL30 (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL30_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL38 (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL38_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL3 (8)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL3_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL4 (16)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL4_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL4 (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL4_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL31 (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL31_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL39 (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL39_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL4 (16)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL4_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL5 (32)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL5_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL5 (32)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL5_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL32 (32)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL32_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL40 (32)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL40_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL5 (32)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL5_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL6 (64)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL6_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL6 (64)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL6_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL33 (64)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL33_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL41 (64)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL41_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL6 (64)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL6_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL7 (128)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL7_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL7 (128)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL7_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL34 (128)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL34_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL42 (128)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL42_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL7 (128)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL7_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL8 (256)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL8_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL8 (256)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL8_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL62 (256)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL62_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL43 (256)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL43_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL8 (256)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL8_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL9 (512)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL9_OFFSET (9)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL9 (512)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL9_OFFSET (9)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL44 (512)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL44_OFFSET (9)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL9 (512)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL9_OFFSET (9)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL10 (1024)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL10_OFFSET (10)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL10 (1024)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL10_OFFSET (10)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL45 (1024)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL45_OFFSET (10)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL10 (1024)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL10_OFFSET (10)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL11 (2048)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL11_OFFSET (11)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL11 (2048)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL11_OFFSET (11)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL46 (2048)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL46_OFFSET (11)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL11 (2048)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL11_OFFSET (11)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL12 (4096)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL12_OFFSET (12)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL12 (4096)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL12_OFFSET (12)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL47 (4096)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL47_OFFSET (12)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL12 (4096)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL12_OFFSET (12)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL13 (8192)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL13_OFFSET (13)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL13 (8192)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL13_OFFSET (13)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL48 (8192)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL48_OFFSET (13)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL13 (8192)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL13_OFFSET (13)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL14 (16384)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL14_OFFSET (14)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL14 (16384)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL14_OFFSET (14)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL49 (16384)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL49_OFFSET (14)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL14 (16384)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL14_OFFSET (14)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL15 (32768)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL15_OFFSET (15)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL15 (32768)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL15_OFFSET (15)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL50 (32768)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL50_OFFSET (15)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL15 (32768)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL15_OFFSET (15)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL16 (65536)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL16_OFFSET (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL16 (65536)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL16_OFFSET (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL51 (65536)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL51_OFFSET (16)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL16 (65536)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL16_OFFSET (16)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL17 (131072)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL17_OFFSET (17)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL17 (131072)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL17_OFFSET (17)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL52 (131072)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL52_OFFSET (17)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL17 (131072)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL17_OFFSET (17)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL18 (262144)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL18_OFFSET (18)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL18 (262144)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL18_OFFSET (18)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL53 (262144)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL53_OFFSET (18)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL18 (262144)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL18_OFFSET (18)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL19 (524288)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL19_OFFSET (19)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL19 (524288)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL19_OFFSET (19)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL54 (524288)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL54_OFFSET (19)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL19 (524288)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL19_OFFSET (19)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL20 (1048576)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL20_OFFSET (20)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL20 (1048576)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL20_OFFSET (20)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL55 (1048576)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL55_OFFSET (20)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL20 (1048576)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL20_OFFSET (20)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL21 (2097152)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL21_OFFSET (21)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL21 (2097152)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL21_OFFSET (21)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL56 (2097152)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL56_OFFSET (21)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL21 (2097152)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL21_OFFSET (21)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL22 (4194304)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL22_OFFSET (22)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL22 (4194304)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL22_OFFSET (22)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL57 (4194304)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL57_OFFSET (22)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL22 (4194304)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL22_OFFSET (22)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL23 (8388608)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL23_OFFSET (23)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL23 (8388608)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL23_OFFSET (23)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL58 (8388608)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL58_OFFSET (23)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL23 (8388608)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL23_OFFSET (23)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL24 (16777216)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL24_OFFSET (24)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL24 (16777216)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL24_OFFSET (24)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL59 (16777216)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL59_OFFSET (24)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL24 (16777216)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL24_OFFSET (24)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL25 (33554432)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL25_OFFSET (25)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL25 (33554432)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL25_OFFSET (25)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL60 (33554432)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL60_OFFSET (25)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL25 (33554432)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL25_OFFSET (25)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL26 (67108864)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL26_OFFSET (26)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL26 (67108864)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL26_OFFSET (26)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL61 (67108864)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL61_OFFSET (26)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL26 (67108864)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL26_OFFSET (26)
+#define EMBER_AF_CHANNEL_MASK_PAGE (4160749568)
+#define EMBER_AF_CHANNEL_MASK_PAGE_OFFSET (27)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_ALL_LOGS_CLEARED (1)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_ALL_LOGS_CLEARED_OFFSET (0)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_TAMPER_LOG_CLEARED (2)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_TAMPER_LOG_CLEARED_OFFSET (1)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_FAULT_LOG_CLEARED (4)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_FAULT_LOG_CLEARED_OFFSET (2)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_GENERAL_EVENT_LOG_CLEARED (8)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_GENERAL_EVENT_LOG_CLEARED_OFFSET (3)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_SECURITY_EVENT_LOG_CLEARED (16)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_SECURITY_EVENT_LOG_CLEARED_OFFSET (4)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_NETWORK_EVENT_LOG_CLEARED (32)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_NETWORK_EVENT_LOG_CLEARED_OFFSET (5)
+#define EMBER_AF_COLOR_CAPABILITIES_HUE_SATURATION_SUPPORTED (1)
+#define EMBER_AF_COLOR_CAPABILITIES_HUE_SATURATION_SUPPORTED_OFFSET (0)
+#define EMBER_AF_COLOR_CAPABILITIES_ENHANCED_HUE_SUPPORTED (2)
+#define EMBER_AF_COLOR_CAPABILITIES_ENHANCED_HUE_SUPPORTED_OFFSET (1)
+#define EMBER_AF_COLOR_CAPABILITIES_COLOR_LOOP_SUPPORTED (4)
+#define EMBER_AF_COLOR_CAPABILITIES_COLOR_LOOP_SUPPORTED_OFFSET (2)
+#define EMBER_AF_COLOR_CAPABILITIES_XY_ATTRIBUTES_SUPPORTED (8)
+#define EMBER_AF_COLOR_CAPABILITIES_XY_ATTRIBUTES_SUPPORTED_OFFSET (3)
+#define EMBER_AF_COLOR_CAPABILITIES_COLOR_TEMPERATURE_SUPPORTED (16)
+#define EMBER_AF_COLOR_CAPABILITIES_COLOR_TEMPERATURE_SUPPORTED_OFFSET (4)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION (1)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION_OFFSET (0)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_DIRECTION (2)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_DIRECTION_OFFSET (1)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_TIME (4)
+#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_CONVERSION_FACTOR_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_CONVERSION_FACTOR_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_CREDIT_STATUS_CREDIT_OK (1)
+#define EMBER_AF_CREDIT_STATUS_CREDIT_OK_OFFSET (0)
+#define EMBER_AF_CREDIT_STATUS_LOW_CREDIT (2)
+#define EMBER_AF_CREDIT_STATUS_LOW_CREDIT_OFFSET (1)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_ENABLED (4)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_ENABLED_OFFSET (2)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_AVAILABLE (8)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_AVAILABLE_OFFSET (3)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_SELECTED (16)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_SELECTED_OFFSET (4)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_IN_USE (32)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_IN_USE_OFFSET (5)
+#define EMBER_AF_CREDIT_STATUS_CREDIT_EXHAUSTED (64)
+#define EMBER_AF_CREDIT_STATUS_CREDIT_EXHAUSTED_OFFSET (6)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_BILLING_INFO (1)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_BILLING_INFO_OFFSET (0)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_BILLING_INFO_USING_NEW_CURRENCY (2)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_BILLING_INFO_USING_NEW_CURRENCY_OFFSET (1)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_OLD_CONSUMPTION_DATA (4)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_OLD_CONSUMPTION_DATA_OFFSET (2)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_OLD_CONSUMPTION_DATA_USING_NEW_CURRENCY (8)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_OLD_CONSUMPTION_DATA_USING_NEW_CURRENCY_OFFSET (3)
+#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_START_TIME (1)
+#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_START_TIME_OFFSET (0)
+#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_DURATION (2)
+#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_DURATION_OFFSET (1)
+#define EMBER_AF_CURRENT_EVENT_STATUS_EXTENDED_BITS_PRESENT (4)
+#define EMBER_AF_CURRENT_EVENT_STATUS_EXTENDED_BITS_PRESENT_OFFSET (2)
+#define EMBER_AF_CURRENT_EVENT_STATUS_EVENT_ACTIVE (8)
+#define EMBER_AF_CURRENT_EVENT_STATUS_EVENT_ACTIVE_OFFSET (3)
+#define EMBER_AF_CURRENT_EVENT_STATUS_DEVICE_PARTICIPATING_IN_EVENT (16)
+#define EMBER_AF_CURRENT_EVENT_STATUS_DEVICE_PARTICIPATING_IN_EVENT_OFFSET (4)
+#define EMBER_AF_CURRENT_EVENT_STATUS_REDUCING_LOAD (32)
+#define EMBER_AF_CURRENT_EVENT_STATUS_REDUCING_LOAD_OFFSET (5)
+#define EMBER_AF_CURRENT_EVENT_STATUS_ON_AT_END_OF_EVENT (64)
+#define EMBER_AF_CURRENT_EVENT_STATUS_ON_AT_END_OF_EVENT_OFFSET (6)
+#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)
+#define EMBER_AF_DAY_OF_WEEK_MONDAY_OFFSET (1)
+#define EMBER_AF_DAY_OF_WEEK_TUESDAY (4)
+#define EMBER_AF_DAY_OF_WEEK_TUESDAY_OFFSET (2)
+#define EMBER_AF_DAY_OF_WEEK_WEDNESDAY (8)
+#define EMBER_AF_DAY_OF_WEEK_WEDNESDAY_OFFSET (3)
+#define EMBER_AF_DAY_OF_WEEK_THURSDAY (16)
+#define EMBER_AF_DAY_OF_WEEK_THURSDAY_OFFSET (4)
+#define EMBER_AF_DAY_OF_WEEK_FRIDAY (32)
+#define EMBER_AF_DAY_OF_WEEK_FRIDAY_OFFSET (5)
+#define EMBER_AF_DAY_OF_WEEK_SATURDAY (64)
+#define EMBER_AF_DAY_OF_WEEK_SATURDAY_OFFSET (6)
+#define EMBER_AF_DAY_OF_WEEK_AWAY_OR_VACATION (128)
+#define EMBER_AF_DAY_OF_WEEK_AWAY_OR_VACATION_OFFSET (7)
+#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_LOW (1)
+#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_LOW_OFFSET (0)
+#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_HIGH (2)
+#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_HIGH_OFFSET (1)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SUNDAY (1)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SUNDAY_OFFSET (0)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_MONDAY (2)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_MONDAY_OFFSET (1)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_TUESDAY (4)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_TUESDAY_OFFSET (2)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_WEDNESDAY (8)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_WEDNESDAY_OFFSET (3)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_THURSDAY (16)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_THURSDAY_OFFSET (4)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_FRIDAY (32)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_FRIDAY_OFFSET (5)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SATURDAY (64)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SATURDAY_OFFSET (6)
+#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_RIGHT_OF_THE_DECIMAL_POINT (7)
+#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_RIGHT_OF_THE_DECIMAL_POINT_OFFSET (0)
+#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_LEFT_OF_THE_DECIMAL_POINT (120)
+#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_LEFT_OF_THE_DECIMAL_POINT_OFFSET (3)
+#define EMBER_AF_ENERGY_FORMATTING_SUPPRESS_LEADING_ZEROS (128)
+#define EMBER_AF_ENERGY_FORMATTING_SUPPRESS_LEADING_ZEROS_OFFSET (7)
+#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_HAN_DEVICES (1)
+#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_HAN_DEVICES_OFFSET (0)
+#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_WAN (2)
+#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_WAN_OFFSET (1)
+#define EMBER_AF_EVENT_CONFIGURATION_LOG_ACTION (7)
+#define EMBER_AF_EVENT_CONFIGURATION_LOG_ACTION_OFFSET (0)
+#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_WAN (8)
+#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_WAN_OFFSET (3)
+#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_HAN (16)
+#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_HAN_OFFSET (4)
+#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_ZIG_BEE (32)
+#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_ZIG_BEE_OFFSET (5)
+#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_PHYSICAL (64)
+#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_PHYSICAL_OFFSET (6)
+#define EMBER_AF_EVENT_CONTROL_LOG_ID_LOG_ID (15)
+#define EMBER_AF_EVENT_CONTROL_LOG_ID_LOG_ID_OFFSET (0)
+#define EMBER_AF_EVENT_CONTROL_LOG_ID_EVENT_CONTROL (240)
+#define EMBER_AF_EVENT_CONTROL_LOG_ID_EVENT_CONTROL_OFFSET (4)
+#define EMBER_AF_FRIENDLY_CREDIT_FRIENDLY_CREDIT_ENABLED (1)
+#define EMBER_AF_FRIENDLY_CREDIT_FRIENDLY_CREDIT_ENABLED_OFFSET (0)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_OTA_FIRMWARE (1)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_OTA_FIRMWARE_OFFSET (0)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CBKE_UPDATE_REQUEST (2)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CBKE_UPDATE_REQUEST_OFFSET (1)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TIME_SYNC (4)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TIME_SYNC_OFFSET (2)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_HAN (16)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_HAN_OFFSET (4)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_WAN (32)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_WAN_OFFSET (5)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET (448)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET_OFFSET (6)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET (3584)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET_OFFSET (9)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER (4096)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER_OFFSET (12)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_METERING_CLUSTER (8192)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_METERING_CLUSTER_OFFSET (13)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER (16384)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER_OFFSET (14)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NETWORK_KEY_ACTIVE (32768)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NETWORK_KEY_ACTIVE_OFFSET (15)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_DISPLAY_MESSAGE (65536)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_DISPLAY_MESSAGE_OFFSET (16)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CANCEL_ALL_MESSAGES (131072)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CANCEL_ALL_MESSAGES_OFFSET (17)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANGE_SUPPLY (262144)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANGE_SUPPLY_OFFSET (18)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_LOCAL_CHANGE_SUPPLY (524288)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_LOCAL_CHANGE_SUPPLY_OFFSET (19)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_SET_UNCONTROLLED_FLOW_THRESHOLD (1048576)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_SET_UNCONTROLLED_FLOW_THRESHOLD_OFFSET (20)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TUNNEL_MESSAGE_PENDING (2097152)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TUNNEL_MESSAGE_PENDING_OFFSET (21)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SNAPSHOT (4194304)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SNAPSHOT_OFFSET (22)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SAMPLED_DATA (8388608)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SAMPLED_DATA_OFFSET (23)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE (16777216)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE_OFFSET (24)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_ENERGY_SCAN_PENDING (33554432)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_ENERGY_SCAN_PENDING_OFFSET (25)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANNEL_CHANGE_PENDING (67108864)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANNEL_CHANGE_PENDING_OFFSET (26)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_ABSOLUTE_ONLY (1)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_ABSOLUTE_ONLY_OFFSET (0)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_RECALCULATE (2)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_RECALCULATE_OFFSET (1)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST (4)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST_OFFSET (2)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST_RESPONSE (8)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST_RESPONSE_OFFSET (3)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_COMPACT_RESPONSE (16)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_COMPACT_RESPONSE_OFFSET (4)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_MANUFACTURE_ID_PRESENT (1)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_MANUFACTURE_ID_PRESENT_OFFSET (0)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_MODEL_ID_PRESENT (2)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_MODEL_ID_PRESENT_OFFSET (1)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_GPD_COMMANDS_PRESENT (4)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_GPD_COMMANDS_PRESENT_OFFSET (2)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_CLUSTER_LIST_PRESENT (8)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_CLUSTER_LIST_PRESENT_OFFSET (3)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_SWITCH_INFORMATION_PRESENT (16)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_SWITCH_INFORMATION_PRESENT_OFFSET (4)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_APPLICATION_DESCRIPTION_PRESENT (32)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_APPLICATION_DESCRIPTION_PRESENT_OFFSET (5)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RX_AFTER_TX (8)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RX_AFTER_TX_OFFSET (3)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_LEVEL (48)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_LEVEL_OFFSET (4)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_KEY_TYPE (448)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_KEY_TYPE_OFFSET (6)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_PROCESSING_FAILED (512)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_PROCESSING_FAILED_OFFSET (9)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY (1024)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY_OFFSET (10)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_PROXY_INFO_PRESENT (2048)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_PROXY_INFO_PRESENT_OFFSET (11)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RESERVED (61440)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RESERVED_OFFSET (12)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_MASK (31)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_MASK_OFFSET (0)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_OPERATIONAL_CHANNEL (15)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_OPERATIONAL_CHANNEL_OFFSET (0)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_BASIC (16)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_BASIC_OFFSET (4)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_RESERVED (224)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_NEXT_ATTEMPT (15)
+#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_NEXT_ATTEMPT_OFFSET (0)
+#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_SECOND_NEXT_ATTEMPT (240)
+#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_SECOND_NEXT_ATTEMPT_OFFSET (4)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_SECURITY_LEVEL_CAPABILITIES (3)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_SECURITY_LEVEL_CAPABILITIES_OFFSET (0)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_KEY_TYPE (28)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_KEY_TYPE_OFFSET (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_PRESENT (32)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_PRESENT_OFFSET (5)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_ENCRYPTION (64)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_ENCRYPTION_OFFSET (6)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_OUTGOING_COUNTER_PRESENT (128)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_OUTGOING_COUNTER_PRESENT_OFFSET (7)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_MAC_SEQ_NUM_CAP (1)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_MAC_SEQ_NUM_CAP_OFFSET (0)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RX_ON_CAP (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RX_ON_CAP_OFFSET (1)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_APPLICATION_INFORMATION_PRESENT (4)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_APPLICATION_INFORMATION_PRESENT_OFFSET (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RESERVED (8)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RESERVED_OFFSET (3)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_PAN_ID_REQUEST (16)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_PAN_ID_REQUEST_OFFSET (4)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_GP_SECURITY_KEY_REQUEST (32)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_GP_SECURITY_KEY_REQUEST_OFFSET (5)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_FIXED_LOCATION (64)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_FIXED_LOCATION_OFFSET (6)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_EXTENDED_OPTIONS_FIELD (128)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_EXTENDED_OPTIONS_FIELD_OFFSET (7)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_PAN_ID_PRESENT (1)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_PAN_ID_PRESENT_OFFSET (0)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPD_SECURITY_KEY_PRESENT (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPD_SECURITY_KEY_PRESENT_OFFSET (1)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPDKEY_ENCRYPTION (4)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPDKEY_ENCRYPTION_OFFSET (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_SECURITY_LEVEL (24)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_SECURITY_LEVEL_OFFSET (3)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_KEY_TYPE (224)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_KEY_TYPE_OFFSET (5)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GP_FEATURE (1)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GP_FEATURE_OFFSET (0)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_DIRECT_COMMUNICATION (2)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_DIRECT_COMMUNICATION_OFFSET (1)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_DERIVED_GROUPCAST_COMMUNICATION (4)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_DERIVED_GROUPCAST_COMMUNICATION_OFFSET (2)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PRE_COMMISSIONED_GROUPCAST_COMMUNICATION (8)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PRE_COMMISSIONED_GROUPCAST_COMMUNICATION_OFFSET (3)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_FULL_UNICAST_COMMUNICATION (16)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_FULL_UNICAST_COMMUNICATION_OFFSET (4)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_LIGHTWEIGHT_UNICAST_COMMUNICATION (32)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_LIGHTWEIGHT_UNICAST_COMMUNICATION_OFFSET (5)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_BIDIRECTIONAL_COMMUNICATION (64)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_BIDIRECTIONAL_COMMUNICATION_OFFSET (6)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_BIDIRECTIONAL_COMMUNICATION (128)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_BIDIRECTIONAL_COMMUNICATION_OFFSET (7)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXY_TABLE_MAINTAINANCE (256)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXY_TABLE_MAINTAINANCE_OFFSET (8)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_COMMUNICATION (512)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_COMMUNICATION_OFFSET (9)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_COMMUNICATION (1024)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_COMMUNICATION_OFFSET (10)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_CT_BASED_COMMISSIONING (2048)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_CT_BASED_COMMISSIONING_OFFSET (11)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MAINTAINANCE_GPDF (4096)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MAINTAINANCE_GPDF_OFFSET (12)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL0_IN_OPERATION (8192)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL0_IN_OPERATION_OFFSET (13)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL1_IN_OPERATION (16384)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL1_IN_OPERATION_OFFSET (14)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL2_IN_OPERATION (32768)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL2_IN_OPERATION_OFFSET (15)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL3_IN_OPERATION (65536)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL3_IN_OPERATION_OFFSET (16)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_SINK_TABLE_BASED_GROUPCAST_FORWARDING (131072)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_SINK_TABLE_BASED_GROUPCAST_FORWARDING_OFFSET (17)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_TRANSLATION_TABLE (262144)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_TRANSLATION_TABLE_OFFSET (18)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_IEEE_ADDRESS (524288)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_IEEE_ADDRESS_OFFSET (19)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_COMPACT_ATTRIBUTE_REPORTING (1048576)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_COMPACT_ATTRIBUTE_REPORTING_OFFSET (20)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_RESERVED (14680064)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_RESERVED_OFFSET (21)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_UNICAST (8)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_UNICAST_OFFSET (3)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_DERIVED_GROUP (16)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_DERIVED_GROUP_OFFSET (4)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_COMMISSIONED_GROUP (32)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_COMMISSIONED_GROUP_OFFSET (5)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_LEVEL (192)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_LEVEL_OFFSET (6)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_KEY_TYPE (1792)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_KEY_TYPE_OFFSET (8)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_RX_AFTER_TX (2048)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_RX_AFTER_TX_OFFSET (11)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_GP_TX_QUEUE_FULL (4096)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_GP_TX_QUEUE_FULL_OFFSET (12)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY (8192)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY_OFFSET (13)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_PROXY_INFO_PRESENT (16384)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_PROXY_INFO_PRESENT_OFFSET (14)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_RESERVED (32768)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_RESERVED_OFFSET (15)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_FIRST_TO_FORWARD (8)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_FIRST_TO_FORWARD_OFFSET (3)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_NO_PAIRING (16)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_NO_PAIRING_OFFSET (4)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_RESERVED (224)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_ACTION (7)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_ACTION_OFFSET (0)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_SEND_GP_PAIRING (8)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_SEND_GP_PAIRING_OFFSET (3)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_RESERVED (240)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE (24)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_OFFSET (3)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SEQUENCE_NUMBER_CAPABILITIES (32)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SEQUENCE_NUMBER_CAPABILITIES_OFFSET (5)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RX_ON_CAPABILITY (64)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RX_ON_CAPABILITY_OFFSET (6)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_FIXED_LOCATION (128)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_FIXED_LOCATION_OFFSET (7)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_ASSIGNED_ALIAS (256)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_ASSIGNED_ALIAS_OFFSET (8)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SECURITY_USE (512)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SECURITY_USE_OFFSET (9)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_INFORMATION_PRESENT (1024)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_INFORMATION_PRESENT_OFFSET (10)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RESERVED (63488)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RESERVED_OFFSET (11)
+#define EMBER_AF_GP_PAIRING_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_PAIRING_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PAIRING_OPTION_ADD_SINK (8)
+#define EMBER_AF_GP_PAIRING_OPTION_ADD_SINK_OFFSET (3)
+#define EMBER_AF_GP_PAIRING_OPTION_REMOVE_GPD (16)
+#define EMBER_AF_GP_PAIRING_OPTION_REMOVE_GPD_OFFSET (4)
+#define EMBER_AF_GP_PAIRING_OPTION_COMMUNICATION_MODE (96)
+#define EMBER_AF_GP_PAIRING_OPTION_COMMUNICATION_MODE_OFFSET (5)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_FIXED (128)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_FIXED_OFFSET (7)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_MAC_SEQUENCE_NUMBER_CAPABILITIES (256)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_MAC_SEQUENCE_NUMBER_CAPABILITIES_OFFSET (8)
+#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_LEVEL (1536)
+#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_LEVEL_OFFSET (9)
+#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_KEY_TYPE (14336)
+#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_KEY_TYPE_OFFSET (11)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_FRAME_COUNTER_PRESENT (16384)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_FRAME_COUNTER_PRESENT_OFFSET (14)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_KEY_PRESENT (32768)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_KEY_PRESENT_OFFSET (15)
+#define EMBER_AF_GP_PAIRING_OPTION_ASSIGNED_ALIAS_PRESENT (65536)
+#define EMBER_AF_GP_PAIRING_OPTION_ASSIGNED_ALIAS_PRESENT_OFFSET (16)
+#define EMBER_AF_GP_PAIRING_OPTION_GROUPCAST_RADIUS_PRESENT (131072)
+#define EMBER_AF_GP_PAIRING_OPTION_GROUPCAST_RADIUS_PRESENT_OFFSET (17)
+#define EMBER_AF_GP_PAIRING_OPTION_RESERVED (16515072)
+#define EMBER_AF_GP_PAIRING_OPTION_RESERVED_OFFSET (18)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_UNICAST_SINKS (8)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_UNICAST_SINKS_OFFSET (3)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_DERIVED_GROUPCAST_SINKS (16)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_DERIVED_GROUPCAST_SINKS_OFFSET (4)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_COMMISSIONED_GROUPCAST_SINKS (32)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_COMMISSIONED_GROUPCAST_SINKS_OFFSET (5)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_FRAME_COUNTER (64)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_FRAME_COUNTER_OFFSET (6)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_KEY (128)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_KEY_OFFSET (7)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_RESERVED (65280)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_RESERVED_OFFSET (8)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION (2)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION_OFFSET (1)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS (4)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS_OFFSET (2)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT (8)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT_OFFSET (3)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_ACTION (1)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_ACTION_OFFSET (0)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_COMMISSIONING_WINDOW_PRESENT (2)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_COMMISSIONING_WINDOW_PRESENT_OFFSET (1)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_EXIT_MODE (12)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_EXIT_MODE_OFFSET (2)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_CHANNEL_PRESENT (16)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_CHANNEL_PRESENT_OFFSET (4)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_UNICAST_COMMUNICATION (32)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_UNICAST_COMMUNICATION_OFFSET (5)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_RESERVED (192)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_RESERVED_OFFSET (6)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_APPLICATION_ID (7)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_ACTIVE (8)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_ACTIVE_OFFSET (3)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_VALID (16)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_VALID_OFFSET (4)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SEQUENCE_NUMBER_CAP (32)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SEQUENCE_NUMBER_CAP_OFFSET (5)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_LIGHTWEIGHT_UNICAST_GPS (64)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_LIGHTWEIGHT_UNICAST_GPS_OFFSET (6)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_DERIVED_GROUP_GPS (128)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_DERIVED_GROUP_GPS_OFFSET (7)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_COMMISIONED_GROUP_GPS (256)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_COMMISIONED_GROUP_GPS_OFFSET (8)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FIRST_TO_FORWARD (512)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FIRST_TO_FORWARD_OFFSET (9)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_IN_RANGE (1024)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_IN_RANGE_OFFSET (10)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_GPD_FIXED (2048)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_GPD_FIXED_OFFSET (11)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_HAS_ALL_UNICAST_ROUTES (4096)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_HAS_ALL_UNICAST_ROUTES_OFFSET (12)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS (8192)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS_OFFSET (13)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SECURITY_USE (16384)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SECURITY_USE_OFFSET (14)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_EXTENSION (32768)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_EXTENSION_OFFSET (15)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FULL_UNICAST_GPS (65536)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FULL_UNICAST_GPS_OFFSET (16)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL (3)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL_OFFSET (0)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE (28)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE_OFFSET (2)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED (224)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_APPLICATION_ID (7)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE (24)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_OFFSET (3)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_RESERVED (224)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_RESPONSE_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_RESPONSE_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_RESPONSE_OPTION_TRANSMIT_ON_END_POINT_MATCH (8)
+#define EMBER_AF_GP_RESPONSE_OPTION_TRANSMIT_ON_END_POINT_MATCH_OFFSET (3)
+#define EMBER_AF_GP_RESPONSE_OPTION_RESERVED (240)
+#define EMBER_AF_GP_RESPONSE_OPTION_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_TRANSMIT_CHANNEL (15)
+#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_TRANSMIT_CHANNEL_OFFSET (0)
+#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_RESERVED (240)
+#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION (1)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION_OFFSET (0)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS (2)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS_OFFSET (1)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT (4)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT_OFFSET (2)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_RESERVED (248)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_RESERVED_OFFSET (3)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_ACTION (1)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_ACTION_OFFSET (0)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_SECURITY (2)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_SECURITY_OFFSET (1)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_PAIRING (4)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_PAIRING_OFFSET (2)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_PROXIES (8)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_PROXIES_OFFSET (3)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_RESERVED (240)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_APPLICATION_ID (7)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_COMMUNICATION_MODE (24)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_COMMUNICATION_MODE_OFFSET (3)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SEQUENCE_NUM_CAPABILITIES (32)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SEQUENCE_NUM_CAPABILITIES_OFFSET (5)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RX_ON_CAPABILITY (64)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RX_ON_CAPABILITY_OFFSET (6)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_FIXED_LOCATION (128)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_FIXED_LOCATION_OFFSET (7)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS (256)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS_OFFSET (8)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SECURITY_USE (512)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SECURITY_USE_OFFSET (9)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RESERVED (64512)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RESERVED_OFFSET (10)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL (3)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL_OFFSET (0)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE (28)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE_OFFSET (2)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED (224)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_APPLICATION_ID (7)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TYPE (24)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_OFFSET (3)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_RESERVED (224)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT (8)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT_OFFSET (3)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_RESERVED (240)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_GPD_ID (1)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_GPD_ID_OFFSET (0)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_CMD_ID (2)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_CMD_ID_OFFSET (1)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_PAYLOAD (4)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_PAYLOAD_OFFSET (2)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ZB_ENDPOINT (8)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ZB_ENDPOINT_OFFSET (3)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ADDITIONAL_INFO_BLOCK (16)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ADDITIONAL_INFO_BLOCK_OFFSET (4)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ACTION (24)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ACTION_OFFSET (3)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_NUMBER_OF_TRANSLATIONS (224)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_NUMBER_OF_TRANSLATIONS_OFFSET (5)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT (256)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT_OFFSET (8)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_RESERVED (65024)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_RESERVED_OFFSET (9)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_DERIVED_GROUP (8)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_DERIVED_GROUP_OFFSET (3)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_COMMISSIONED_GROUP (16)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_COMMISSIONED_GROUP_OFFSET (4)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_RESERVED (224)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_RESERVED_OFFSET (5)
+#define EMBER_AF_IAS_ZONE_STATUS_ALARM1 (1)
+#define EMBER_AF_IAS_ZONE_STATUS_ALARM1_OFFSET (0)
+#define EMBER_AF_IAS_ZONE_STATUS_ALARM2 (2)
+#define EMBER_AF_IAS_ZONE_STATUS_ALARM2_OFFSET (1)
+#define EMBER_AF_IAS_ZONE_STATUS_TAMPER (4)
+#define EMBER_AF_IAS_ZONE_STATUS_TAMPER_OFFSET (2)
+#define EMBER_AF_IAS_ZONE_STATUS_BATTERY (8)
+#define EMBER_AF_IAS_ZONE_STATUS_BATTERY_OFFSET (3)
+#define EMBER_AF_IAS_ZONE_STATUS_SUPERVISION_REPORTS (16)
+#define EMBER_AF_IAS_ZONE_STATUS_SUPERVISION_REPORTS_OFFSET (4)
+#define EMBER_AF_IAS_ZONE_STATUS_RESTORE_REPORTS (32)
+#define EMBER_AF_IAS_ZONE_STATUS_RESTORE_REPORTS_OFFSET (5)
+#define EMBER_AF_IAS_ZONE_STATUS_TROUBLE (64)
+#define EMBER_AF_IAS_ZONE_STATUS_TROUBLE_OFFSET (6)
+#define EMBER_AF_IAS_ZONE_STATUS_AC (128)
+#define EMBER_AF_IAS_ZONE_STATUS_AC_OFFSET (7)
+#define EMBER_AF_IAS_ZONE_STATUS_TEST (256)
+#define EMBER_AF_IAS_ZONE_STATUS_TEST_OFFSET (8)
+#define EMBER_AF_IAS_ZONE_STATUS_BATTERY_DEFECT (512)
+#define EMBER_AF_IAS_ZONE_STATUS_BATTERY_DEFECT_OFFSET (9)
+#define EMBER_AF_KEY_BITMASK_DEVELOPMENT (1)
+#define EMBER_AF_KEY_BITMASK_DEVELOPMENT_OFFSET (0)
+#define EMBER_AF_KEY_BITMASK_MASTER (16)
+#define EMBER_AF_KEY_BITMASK_MASTER_OFFSET (4)
+#define EMBER_AF_KEY_BITMASK_CERTIFICATION (32768)
+#define EMBER_AF_KEY_BITMASK_CERTIFICATION_OFFSET (15)
+#define EMBER_AF_LAMP_ALARM_MODE_LAMP_BURN_HOURS (1)
+#define EMBER_AF_LAMP_ALARM_MODE_LAMP_BURN_HOURS_OFFSET (0)
+#define EMBER_AF_LOAD_CONTROL_STATE_RELAY_OPEN_OR_CONSUMPTION_INTERUPTED (1)
+#define EMBER_AF_LOAD_CONTROL_STATE_RELAY_OPEN_OR_CONSUMPTION_INTERUPTED_OFFSET (0)
+#define EMBER_AF_LOAD_CONTROL_STATE_EVENT_IN_PROGRESS (2)
+#define EMBER_AF_LOAD_CONTROL_STATE_EVENT_IN_PROGRESS_OFFSET (1)
+#define EMBER_AF_LOAD_CONTROL_STATE_POWER_STABILIZING (4)
+#define EMBER_AF_LOAD_CONTROL_STATE_POWER_STABILIZING_OFFSET (2)
+#define EMBER_AF_LOAD_CONTROL_STATE_OTHER_LOAD_REDUCTION (8)
+#define EMBER_AF_LOAD_CONTROL_STATE_OTHER_LOAD_REDUCTION_OFFSET (3)
+#define EMBER_AF_LOAD_CONTROL_STATE_CURRENT_FLOW_OR_CONSUMING_COMMODITY (16)
+#define EMBER_AF_LOAD_CONTROL_STATE_CURRENT_FLOW_OR_CONSUMING_COMMODITY_OFFSET (4)
+#define EMBER_AF_LOAD_CONTROL_STATE_LOAD_CALL (32)
+#define EMBER_AF_LOAD_CONTROL_STATE_LOAD_CALL_OFFSET (5)
+#define EMBER_AF_LOCATION_TYPE_ABSOLUTE (1)
+#define EMBER_AF_LOCATION_TYPE_ABSOLUTE_OFFSET (0)
+#define EMBER_AF_LOCATION_TYPE_2_D (2)
+#define EMBER_AF_LOCATION_TYPE_2_D_OFFSET (1)
+#define EMBER_AF_LOCATION_TYPE_COORDINATE_SYSTEM (12)
+#define EMBER_AF_LOCATION_TYPE_COORDINATE_SYSTEM_OFFSET (2)
+#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_LOW (1)
+#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_LOW_OFFSET (0)
+#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_HIGH (2)
+#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_HIGH_OFFSET (1)
+#define EMBER_AF_MAINS_ALARM_MASK_MAINS_POWER_SUPPLY_LOST (4)
+#define EMBER_AF_MAINS_ALARM_MASK_MAINS_POWER_SUPPLY_LOST_OFFSET (2)
+#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_NO_RETURNED (1)
+#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_NO_RETURNED_OFFSET (0)
+#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_YES_RETURNED (2)
+#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_YES_RETURNED_OFFSET (1)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_TRANS_MECHANISM (3)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_TRANS_MECHANISM_OFFSET (0)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_URGENCY (12)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_URGENCY_OFFSET (2)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_ENHANCED_CONFIRMATION_REQUEST (32)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_ENHANCED_CONFIRMATION_REQUEST_OFFSET (5)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_CONFIRMATION (128)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_CONFIRMATION_OFFSET (7)
+#define EMBER_AF_MESSAGING_EXTENDED_CONTROL_MASK_MESSAGE_CONFIRMATION_STATUS (1)
+#define EMBER_AF_MESSAGING_EXTENDED_CONTROL_MASK_MESSAGE_CONFIRMATION_STATUS_OFFSET (0)
+#define EMBER_AF_METERING_EXTENDED_STATUS_METER_COVER_REMOVED (1)
+#define EMBER_AF_METERING_EXTENDED_STATUS_METER_COVER_REMOVED_OFFSET (0)
+#define EMBER_AF_METERING_EXTENDED_STATUS_STRONG_MAGNETIC_FIELD_DETECTED (2)
+#define EMBER_AF_METERING_EXTENDED_STATUS_STRONG_MAGNETIC_FIELD_DETECTED_OFFSET (1)
+#define EMBER_AF_METERING_EXTENDED_STATUS_BATTERY_FAILURE (4)
+#define EMBER_AF_METERING_EXTENDED_STATUS_BATTERY_FAILURE_OFFSET (2)
+#define EMBER_AF_METERING_EXTENDED_STATUS_PROGRAM_MEMORY_ERROR (8)
+#define EMBER_AF_METERING_EXTENDED_STATUS_PROGRAM_MEMORY_ERROR_OFFSET (3)
+#define EMBER_AF_METERING_EXTENDED_STATUS_RAM_ERROR (16)
+#define EMBER_AF_METERING_EXTENDED_STATUS_RAM_ERROR_OFFSET (4)
+#define EMBER_AF_METERING_EXTENDED_STATUS_NV_MEMORY_ERROR (32)
+#define EMBER_AF_METERING_EXTENDED_STATUS_NV_MEMORY_ERROR_OFFSET (5)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SYSTEM_ERROR (64)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SYSTEM_ERROR_OFFSET (6)
+#define EMBER_AF_METERING_EXTENDED_STATUS_WATCHDOG_ERROR (128)
+#define EMBER_AF_METERING_EXTENDED_STATUS_WATCHDOG_ERROR_OFFSET (7)
+#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_DISCONNECT_FAILURE (256)
+#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_DISCONNECT_FAILURE_OFFSET (8)
+#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_CONNECT_FAILURE (512)
+#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_CONNECT_FAILURE_OFFSET (9)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SW_CHANGED_TAMPERED (1024)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SW_CHANGED_TAMPERED_OFFSET (10)
+#define EMBER_AF_METERING_EXTENDED_STATUS_CLOCK_INVALID (2048)
+#define EMBER_AF_METERING_EXTENDED_STATUS_CLOCK_INVALID_OFFSET (11)
+#define EMBER_AF_METERING_EXTENDED_STATUS_TEMPERATURE_EXCEEDED (4096)
+#define EMBER_AF_METERING_EXTENDED_STATUS_TEMPERATURE_EXCEEDED_OFFSET (12)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MOISTURE_DETECTED (8192)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MOISTURE_DETECTED_OFFSET (13)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_TERMINAL_COVER_REMOVED (16777216)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_TERMINAL_COVER_REMOVED_OFFSET (24)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_INCORRECT_POLARITY (33554432)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_INCORRECT_POLARITY_OFFSET (25)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_CURRENT_WITH_NO_VOLTAGE (67108864)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_CURRENT_WITH_NO_VOLTAGE_OFFSET (26)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_LIMIT_THRESHOLD_EXCEEDED (134217728)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_LIMIT_THRESHOLD_EXCEEDED_OFFSET (27)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_UNDER_VOLTAGE (268435456)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_UNDER_VOLTAGE_OFFSET (28)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_OVER_VOLTAGE (536870912)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_OVER_VOLTAGE_OFFSET (29)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_BATTERY_COVER_REMOVED (16777216)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_BATTERY_COVER_REMOVED_OFFSET (24)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_TILT_TAMPER (33554432)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_TILT_TAMPER_OFFSET (25)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_EXCESS_FLOW (67108864)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_EXCESS_FLOW_OFFSET (26)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_POWER (1073741824)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_POWER_OFFSET (30)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_VOLTAGE (2147483648)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_VOLTAGE_OFFSET (31)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_REMOTE_LOAD_CONTROL (3221225472)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_REMOTE_LOAD_CONTROL_OFFSET (30)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_BY_OTHER_REMOTE_COMMAND (4294967296)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_BY_OTHER_REMOTE_COMMAND_OFFSET (32)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_SHORT_CIRCUIT \
+ (5368709120)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_SHORT_CIRCUIT_OFFSET \
+ (30)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_OTHER (6442450944)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_OTHER_OFFSET (31)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_BI_DIRECTIONAL_OPERATION (17179869184)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_BI_DIRECTIONAL_OPERATION_OFFSET (34)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_ACTIVE_POWER_RECEIVED (34359738368)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_ACTIVE_POWER_RECEIVED_OFFSET (35)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_MODE_OF_OPERATION (68719476736)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_MODE_OF_OPERATION_OFFSET (36)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_CHECK_METER (1)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_CHECK_METER_OFFSET (0)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_LOW_BATTERY (2)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_TAMPER_DETECT (4)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_FAILURE (8)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_FAILURE_OFFSET (3)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_QUALITY (16)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_QUALITY_OFFSET (4)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_LEAK_DETECT (32)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_SERVICE_DISCONNECT_OPEN (64)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_SERVICE_DISCONNECT_OPEN_OFFSET (6)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_RESERVED (128)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_RESERVED_OFFSET (7)
+#define EMBER_AF_METERING_STATUS_GAS_CHECK_METER (1)
+#define EMBER_AF_METERING_STATUS_GAS_CHECK_METER_OFFSET (0)
+#define EMBER_AF_METERING_STATUS_GAS_LOW_BATTERY (2)
+#define EMBER_AF_METERING_STATUS_GAS_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_METERING_STATUS_GAS_TAMPER_DETECT (4)
+#define EMBER_AF_METERING_STATUS_GAS_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_METERING_STATUS_GAS_NOT_DEFINED (8)
+#define EMBER_AF_METERING_STATUS_GAS_NOT_DEFINED_OFFSET (3)
+#define EMBER_AF_METERING_STATUS_GAS_LOW_PRESSURE (16)
+#define EMBER_AF_METERING_STATUS_GAS_LOW_PRESSURE_OFFSET (4)
+#define EMBER_AF_METERING_STATUS_GAS_LEAK_DETECT (32)
+#define EMBER_AF_METERING_STATUS_GAS_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_METERING_STATUS_GAS_SERVICE_DISCONNECT (64)
+#define EMBER_AF_METERING_STATUS_GAS_SERVICE_DISCONNECT_OFFSET (6)
+#define EMBER_AF_METERING_STATUS_GAS_REVERSE_FLOW (128)
+#define EMBER_AF_METERING_STATUS_GAS_REVERSE_FLOW_OFFSET (7)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_CHECK_METER (1)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_CHECK_METER_OFFSET (0)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LOW_BATTERY (2)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TAMPER_DETECT (4)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TEMPERATURE_SENSOR (8)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TEMPERATURE_SENSOR_OFFSET (3)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_BURST_DETECT (16)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_BURST_DETECT_OFFSET (4)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LEAK_DETECT (32)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_SERVICE_DISCONNECT (64)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_SERVICE_DISCONNECT_OFFSET (6)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_FLOW_SENSOR (128)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_FLOW_SENSOR_OFFSET (7)
+#define EMBER_AF_METERING_STATUS_WATER_CHECK_METER (1)
+#define EMBER_AF_METERING_STATUS_WATER_CHECK_METER_OFFSET (0)
+#define EMBER_AF_METERING_STATUS_WATER_LOW_BATTERY (2)
+#define EMBER_AF_METERING_STATUS_WATER_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_METERING_STATUS_WATER_TAMPER_DETECT (4)
+#define EMBER_AF_METERING_STATUS_WATER_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_METERING_STATUS_WATER_PIPE_EMPTY (8)
+#define EMBER_AF_METERING_STATUS_WATER_PIPE_EMPTY_OFFSET (3)
+#define EMBER_AF_METERING_STATUS_WATER_LOW_PRESSURE (16)
+#define EMBER_AF_METERING_STATUS_WATER_LOW_PRESSURE_OFFSET (4)
+#define EMBER_AF_METERING_STATUS_WATER_LEAK_DETECT (32)
+#define EMBER_AF_METERING_STATUS_WATER_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_METERING_STATUS_WATER_SERVICE_DISCONNECT (64)
+#define EMBER_AF_METERING_STATUS_WATER_SERVICE_DISCONNECT_OFFSET (6)
+#define EMBER_AF_METERING_STATUS_WATER_REVERSE_FLOW (128)
+#define EMBER_AF_METERING_STATUS_WATER_REVERSE_FLOW_OFFSET (7)
+#define EMBER_AF_MODE_FOR_SEQUENCE_HEAT_SETPOINT_FIELD_PRESENT (1)
+#define EMBER_AF_MODE_FOR_SEQUENCE_HEAT_SETPOINT_FIELD_PRESENT_OFFSET (0)
+#define EMBER_AF_MODE_FOR_SEQUENCE_COOL_SETPOINT_FIELD_PRESENT (2)
+#define EMBER_AF_MODE_FOR_SEQUENCE_COOL_SETPOINT_FIELD_PRESENT_OFFSET (1)
+#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_LOG_PAYLOAD_CONTROL (15)
+#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_LOG_PAYLOAD_CONTROL_OFFSET (0)
+#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_NUMBER_OF_EVENTS (240)
+#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_NUMBER_OF_EVENTS_OFFSET (4)
+#define EMBER_AF_OCCUPANCY_OCCUPIED (1)
+#define EMBER_AF_OCCUPANCY_OCCUPIED_OFFSET (0)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PIR (1)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PIR_OFFSET (0)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_ULTRASONIC (2)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_ULTRASONIC_OFFSET (1)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PHYSICAL_CONTACT (4)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PHYSICAL_CONTACT_OFFSET (2)
+#define EMBER_AF_ON_OFF_CONTROL_ACCEPT_ONLY_WHEN_ON (1)
+#define EMBER_AF_ON_OFF_CONTROL_ACCEPT_ONLY_WHEN_ON_OFFSET (0)
+#define EMBER_AF_ORIGINATOR_ID_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED (1)
+#define EMBER_AF_ORIGINATOR_ID_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED_OFFSET (0)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DISCONNECTION_ENABLED (1)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DISCONNECTION_ENABLED_OFFSET (0)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_PREPAYMENT_ENABLED (2)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_PREPAYMENT_ENABLED_OFFSET (1)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_MANAGEMENT_ENABLED (4)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_MANAGEMENT_ENABLED_OFFSET (2)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_DISPLAY_ENABLED (16)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_DISPLAY_ENABLED_OFFSET (4)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_ACCOUNT_BASE (64)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_ACCOUNT_BASE_OFFSET (6)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CONTACTOR_FITTED (128)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CONTACTOR_FITTED_OFFSET (7)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_STANDING_CHARGE_CONFIGURATION (256)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_STANDING_CHARGE_CONFIGURATION_OFFSET (8)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_STANDING_CHARGE_CONFIGURATION (512)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_STANDING_CHARGE_CONFIGURATION_OFFSET (9)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DEBT_CONFIGURATION (1024)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DEBT_CONFIGURATION_OFFSET (10)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_DEBT_CONFIGURATION (2048)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_DEBT_CONFIGURATION_OFFSET (11)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_GENERAL (1)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_GENERAL_OFFSET (0)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TARIFF_INFORMATION (8)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TARIFF_INFORMATION_OFFSET (3)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_PRICE_MATRIX (16)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_PRICE_MATRIX_OFFSET (4)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT (1024)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT_OFFSET (10)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TENANCY (4096)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TENANCY_OFFSET (12)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_SUPPLIER (8192)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_SUPPLIER_OFFSET (13)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_METER_MODE (16384)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_METER_MODE_OFFSET (14)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_TOP_UP_ADDITION (262144)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_TOP_UP_ADDITION_OFFSET (18)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_DEBT_CREDIT_ADDITION (524288)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_DEBT_CREDIT_ADDITION_OFFSET (19)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_LOW_CREDIT_WARNING (1)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_LOW_CREDIT_WARNING_OFFSET (0)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ERROR (2)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ERROR_OFFSET (1)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ALREADY_USED (4)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ALREADY_USED_OFFSET (2)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_INVALID (8)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_INVALID_OFFSET (3)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_IN_USE (16)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_IN_USE_OFFSET (4)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_PERIOD_END_WARNING (32)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_PERIOD_END_WARNING_OFFSET (5)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_EC_AVAILABLE (64)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_EC_AVAILABLE_OFFSET (6)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_UNAUTHORISED_ENERGY_USE (128)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_UNAUTHORISED_ENERGY_USE_OFFSET (7)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_CREDIT (256)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_CREDIT_OFFSET (8)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_TAMPER (512)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_TAMPER_OFFSET (9)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_HES (1024)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_HES_OFFSET (10)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_PHYSICAL_ATTACK (2048)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_PHYSICAL_ATTACK_OFFSET (11)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_ELECTRONIC_ATTACK (4096)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_ELECTRONIC_ATTACK_OFFSET (12)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_A (8192)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_A_OFFSET (13)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_B (16384)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_B_OFFSET (14)
+#define EMBER_AF_PRICE_CONTROL_MASK_PRICE_ACKNOWLEDGEMENT_REQUIRED (1)
+#define EMBER_AF_PRICE_CONTROL_MASK_PRICE_ACKNOWLEDGEMENT_REQUIRED_OFFSET (0)
+#define EMBER_AF_PRICE_CONTROL_MASK_TOTAL_TIERS_EXCEEDS15 (2)
+#define EMBER_AF_PRICE_CONTROL_MASK_TOTAL_TIERS_EXCEEDS15_OFFSET (1)
+#define EMBER_AF_PRICE_MATRIX_SUB_PAYLOAD_CONTROL_TOU_BASED (1)
+#define EMBER_AF_PRICE_MATRIX_SUB_PAYLOAD_CONTROL_TOU_BASED_OFFSET (0)
+#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_REGISTER_TIER (15)
+#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_REGISTER_TIER_OFFSET (0)
+#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_NUMBER_OF_PRICE_TIERS (240)
+#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_NUMBER_OF_PRICE_TIERS_OFFSET (4)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_PRICE_TIER (15)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_PRICE_TIER_OFFSET (0)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_TRAILING_DIGIT (240)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_PRE_SNAPSHOTS (1)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_PRE_SNAPSHOTS_OFFSET (0)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_POST_SNAPSHOTS (2)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_POST_SNAPSHOTS_OFFSET (1)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_CREDIT_REGISTER (4)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_CREDIT_REGISTER_OFFSET (2)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_DEBIT_REGISTER (8)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_DEBIT_REGISTER_OFFSET (3)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_BILLING_PERIOD (16)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_BILLING_PERIOD_OFFSET (4)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TARIFF_PLAN (32)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TARIFF_PLAN_OFFSET (5)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_STANDING_CHARGE (64)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_STANDING_CHARGE_OFFSET (6)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_BLOCK_HISTORICAL_LOAD_PROFILE_INFORMATION (128)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_BLOCK_HISTORICAL_LOAD_PROFILE_INFORMATION_OFFSET (7)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_HISTORICAL_LOAD_PROFILE_INFORMATION (256)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_HISTORICAL_LOAD_PROFILE_INFORMATION_OFFSET (8)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_CONSUMER (512)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_CONSUMER_OFFSET (9)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_SUPPLIER (1024)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_SUPPLIER_OFFSET (10)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_METER_CONNECTOR_STATE_ON_OFF_ARMED (6144)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_METER_CONNECTOR_STATE_ON_OFF_ARMED_OFFSET (11)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TRANSACTION_LOG (8192)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TRANSACTION_LOG_OFFSET (13)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_PREPAYMENT_LOG (16384)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_PREPAYMENT_LOG_OFFSET (14)
+#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_LOW (1)
+#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_LOW_OFFSET (0)
+#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_HIGH (2)
+#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_HIGH_OFFSET (1)
+#define EMBER_AF_PUMP_ALARM_MASK_POWER_MISSING_PHASE (4)
+#define EMBER_AF_PUMP_ALARM_MASK_POWER_MISSING_PHASE_OFFSET (2)
+#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_LOW (8)
+#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_LOW_OFFSET (3)
+#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_HIGH (16)
+#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_HIGH_OFFSET (4)
+#define EMBER_AF_PUMP_ALARM_MASK_DRY_RUNNING (32)
+#define EMBER_AF_PUMP_ALARM_MASK_DRY_RUNNING_OFFSET (5)
+#define EMBER_AF_PUMP_ALARM_MASK_MOTOR_TEMPERATURE_TOO_HIGH (64)
+#define EMBER_AF_PUMP_ALARM_MASK_MOTOR_TEMPERATURE_TOO_HIGH_OFFSET (6)
+#define EMBER_AF_PUMP_ALARM_MASK_PUMP_MOTOR_HAS_FATAL_FAILURE (128)
+#define EMBER_AF_PUMP_ALARM_MASK_PUMP_MOTOR_HAS_FATAL_FAILURE_OFFSET (7)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_TEMPERATURE_TOO_HIGH (256)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_TEMPERATURE_TOO_HIGH_OFFSET (8)
+#define EMBER_AF_PUMP_ALARM_MASK_PUMP_BLOCKED (512)
+#define EMBER_AF_PUMP_ALARM_MASK_PUMP_BLOCKED_OFFSET (9)
+#define EMBER_AF_PUMP_ALARM_MASK_SENSOR_FAILURE (1024)
+#define EMBER_AF_PUMP_ALARM_MASK_SENSOR_FAILURE_OFFSET (10)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_NON_FATAL_FAILURE (2048)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_NON_FATAL_FAILURE_OFFSET (11)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_FATAL_FAILURE (4096)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_FATAL_FAILURE_OFFSET (12)
+#define EMBER_AF_PUMP_ALARM_MASK_GENERAL_FAULT (8192)
+#define EMBER_AF_PUMP_ALARM_MASK_GENERAL_FAULT_OFFSET (13)
+#define EMBER_AF_PUMP_STATUS_DEVICE_FAULT (1)
+#define EMBER_AF_PUMP_STATUS_DEVICE_FAULT_OFFSET (0)
+#define EMBER_AF_PUMP_STATUS_SUPPLYFAULT (2)
+#define EMBER_AF_PUMP_STATUS_SUPPLYFAULT_OFFSET (1)
+#define EMBER_AF_PUMP_STATUS_SPEED_LOW (4)
+#define EMBER_AF_PUMP_STATUS_SPEED_LOW_OFFSET (2)
+#define EMBER_AF_PUMP_STATUS_SPEED_HIGH (8)
+#define EMBER_AF_PUMP_STATUS_SPEED_HIGH_OFFSET (3)
+#define EMBER_AF_PUMP_STATUS_LOCAL_OVERRIDE (16)
+#define EMBER_AF_PUMP_STATUS_LOCAL_OVERRIDE_OFFSET (4)
+#define EMBER_AF_PUMP_STATUS_RUNNING (32)
+#define EMBER_AF_PUMP_STATUS_RUNNING_OFFSET (5)
+#define EMBER_AF_PUMP_STATUS_REMOTE_PRESSURE (64)
+#define EMBER_AF_PUMP_STATUS_REMOTE_PRESSURE_OFFSET (6)
+#define EMBER_AF_PUMP_STATUS_REMOTE_FLOW (128)
+#define EMBER_AF_PUMP_STATUS_REMOTE_FLOW_OFFSET (7)
+#define EMBER_AF_PUMP_STATUS_REMOTE_TEMPERATURE (256)
+#define EMBER_AF_PUMP_STATUS_REMOTE_TEMPERATURE_OFFSET (8)
+#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_REMOTE_ENABLE_FLAGS (15)
+#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_REMOTE_ENABLE_FLAGS_OFFSET (0)
+#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_DEVICE_STATUS2_STRUCTURE (240)
+#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_DEVICE_STATUS2_STRUCTURE_OFFSET (4)
+#define EMBER_AF_RESET_OPTIONS_RESET_CURRENT (1)
+#define EMBER_AF_RESET_OPTIONS_RESET_CURRENT_OFFSET (0)
+#define EMBER_AF_RESET_OPTIONS_RESET_ALL (2)
+#define EMBER_AF_RESET_OPTIONS_RESET_ALL_OFFSET (1)
+#define EMBER_AF_RESET_OPTIONS_ERASE_INDEX (4)
+#define EMBER_AF_RESET_OPTIONS_ERASE_INDEX_OFFSET (2)
+#define EMBER_AF_RESTART_OPTIONS_START_MODE1 (1)
+#define EMBER_AF_RESTART_OPTIONS_START_MODE1_OFFSET (0)
+#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE2 (2)
+#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE2_OFFSET (1)
+#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE3 (4)
+#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE3_OFFSET (2)
+#define EMBER_AF_RESTART_OPTIONS_IMMEDIATE (8)
+#define EMBER_AF_RESTART_OPTIONS_IMMEDIATE_OFFSET (3)
+#define EMBER_AF_SCENES_COPY_MODE_COPY_ALL_SCENES (1)
+#define EMBER_AF_SCENES_COPY_MODE_COPY_ALL_SCENES_OFFSET (0)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_OPERATIONAL (1)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_OPERATIONAL_OFFSET (0)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_ADJUSTING (2)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_ADJUSTING_OFFSET (1)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_OPENING (4)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_OPENING_OFFSET (2)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_MOTOR_OPENING (8)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_MOTOR_OPENING_OFFSET (3)
+#define EMBER_AF_SNAPSHOT_CAUSE_GENERAL (1)
+#define EMBER_AF_SNAPSHOT_CAUSE_GENERAL_OFFSET (0)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BILLING_PERIOD (2)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BILLING_PERIOD_OFFSET (1)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BLOCK_PERIOD (4)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BLOCK_PERIOD_OFFSET (2)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TARIFF_INFORMATION (8)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TARIFF_INFORMATION_OFFSET (3)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_PRICE_MATRIX (16)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_PRICE_MATRIX_OFFSET (4)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_BLOCK_THRESHOLDS (32)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_BLOCK_THRESHOLDS_OFFSET (5)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CV (64)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CV_OFFSET (6)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CF (128)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CF_OFFSET (7)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CALENDAR (256)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CALENDAR_OFFSET (8)
+#define EMBER_AF_SNAPSHOT_CAUSE_CRITICAL_PEAK_PRICING (512)
+#define EMBER_AF_SNAPSHOT_CAUSE_CRITICAL_PEAK_PRICING_OFFSET (9)
+#define EMBER_AF_SNAPSHOT_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT (1024)
+#define EMBER_AF_SNAPSHOT_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT_OFFSET (10)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_RESOLVE_PERIOD (2048)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_RESOLVE_PERIOD_OFFSET (11)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TENANCY (4096)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TENANCY_OFFSET (12)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_SUPPLIER (8192)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_SUPPLIER_OFFSET (13)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_MODE (16384)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_MODE_OFFSET (14)
+#define EMBER_AF_SNAPSHOT_CAUSE_DEBT_PAYMENT (32768)
+#define EMBER_AF_SNAPSHOT_CAUSE_DEBT_PAYMENT_OFFSET (15)
+#define EMBER_AF_SNAPSHOT_CAUSE_SCHEDULED_SNAPSHOT (65536)
+#define EMBER_AF_SNAPSHOT_CAUSE_SCHEDULED_SNAPSHOT_OFFSET (16)
+#define EMBER_AF_SNAPSHOT_CAUSE_OTA_FIRMWARE_DOWNLOAD (131072)
+#define EMBER_AF_SNAPSHOT_CAUSE_OTA_FIRMWARE_DOWNLOAD_OFFSET (17)
+#define EMBER_AF_SQUAWK_INFO_MODE (240)
+#define EMBER_AF_SQUAWK_INFO_MODE_OFFSET (4)
+#define EMBER_AF_SQUAWK_INFO_STROBE (8)
+#define EMBER_AF_SQUAWK_INFO_STROBE_OFFSET (3)
+#define EMBER_AF_SQUAWK_INFO_LEVEL (3)
+#define EMBER_AF_SQUAWK_INFO_LEVEL_OFFSET (0)
+#define EMBER_AF_START_TIME_MINUTES (63)
+#define EMBER_AF_START_TIME_MINUTES_OFFSET (0)
+#define EMBER_AF_START_TIME_TIME_ENCODING (192)
+#define EMBER_AF_START_TIME_TIME_ENCODING_OFFSET (6)
+#define EMBER_AF_START_TIME_HOURS (65280)
+#define EMBER_AF_START_TIME_HOURS_OFFSET (8)
+#define EMBER_AF_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED (1)
+#define EMBER_AF_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED_OFFSET (0)
+#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_TYPE (15)
+#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_TYPE_OFFSET (0)
+#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_CHARGING_SCHEME (240)
+#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_CHARGING_SCHEME_OFFSET (4)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_INITIALIZATION_FAILURE (1)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_INITIALIZATION_FAILURE_OFFSET (0)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_HARDWARE_FAILURE (2)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_HARDWARE_FAILURE_OFFSET (1)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_SELFCALIBRATION_FAILURE (4)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_SELFCALIBRATION_FAILURE_OFFSET (2)
+#define EMBER_AF_THERMOSTAT_OCCUPANCY_OCCUPIED (1)
+#define EMBER_AF_THERMOSTAT_OCCUPANCY_OCCUPIED_OFFSET (0)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_STATE_ON (1)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_STATE_ON_OFFSET (0)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_STATE_ON (2)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_STATE_ON_OFFSET (1)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_STATE_ON (4)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_STATE_ON_OFFSET (2)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_SECOND_STAGE_STATE_ON (8)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_SECOND_STAGE_STATE_ON_OFFSET (3)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_SECOND_STAGE_STATE_ON (16)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_SECOND_STAGE_STATE_ON_OFFSET (4)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_SECOND_STAGE_STATE_ON (32)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_SECOND_STAGE_STATE_ON_OFFSET (5)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_THIRD_STAGE_STATE_ON (64)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_THIRD_STAGE_STATE_ON_OFFSET (6)
+#define EMBER_AF_THERMOSTAT_SENSING_LOCAL_TEMP_SENSED_REMOTELY (1)
+#define EMBER_AF_THERMOSTAT_SENSING_LOCAL_TEMP_SENSED_REMOTELY_OFFSET (0)
+#define EMBER_AF_THERMOSTAT_SENSING_OUTDOOR_TEMP_SENSED_REMOTELY (2)
+#define EMBER_AF_THERMOSTAT_SENSING_OUTDOOR_TEMP_SENSED_REMOTELY_OFFSET (1)
+#define EMBER_AF_THERMOSTAT_SENSING_OCCUPANCY_SENSED_REMOTELY (4)
+#define EMBER_AF_THERMOSTAT_SENSING_OCCUPANCY_SENSED_REMOTELY_OFFSET (2)
+#define EMBER_AF_TIME_STATUS_MASK_MASTER_CLOCK (1)
+#define EMBER_AF_TIME_STATUS_MASK_MASTER_CLOCK_OFFSET (0)
+#define EMBER_AF_TIME_STATUS_MASK_SYNCHRONIZED (2)
+#define EMBER_AF_TIME_STATUS_MASK_SYNCHRONIZED_OFFSET (1)
+#define EMBER_AF_TIME_STATUS_MASK_MASTER_ZONE_DST (4)
+#define EMBER_AF_TIME_STATUS_MASK_MASTER_ZONE_DST_OFFSET (2)
+#define EMBER_AF_TIME_STATUS_MASK_SUPERSEDING (8)
+#define EMBER_AF_TIME_STATUS_MASK_SUPERSEDING_OFFSET (3)
+#define EMBER_AF_WARNING_INFO_MODE (240)
+#define EMBER_AF_WARNING_INFO_MODE_OFFSET (4)
+#define EMBER_AF_WARNING_INFO_STROBE (12)
+#define EMBER_AF_WARNING_INFO_STROBE_OFFSET (2)
+#define EMBER_AF_WARNING_INFO_SIREN_LEVEL (3)
+#define EMBER_AF_WARNING_INFO_SIREN_LEVEL_OFFSET (0)
+#define EMBER_AF_ZIGBEE_INFORMATION_LOGICAL_TYPE (3)
+#define EMBER_AF_ZIGBEE_INFORMATION_LOGICAL_TYPE_OFFSET (0)
+#define EMBER_AF_ZIGBEE_INFORMATION_RX_ON_WHEN_IDLE (4)
+#define EMBER_AF_ZIGBEE_INFORMATION_RX_ON_WHEN_IDLE_OFFSET (2)
+#define EMBER_AF_ZLL_INFORMATION_FACTORY_NEW (1)
+#define EMBER_AF_ZLL_INFORMATION_FACTORY_NEW_OFFSET (0)
+#define EMBER_AF_ZLL_INFORMATION_ADDRESS_ASSIGNMENT (2)
+#define EMBER_AF_ZLL_INFORMATION_ADDRESS_ASSIGNMENT_OFFSET (1)
+#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_INITIATOR (16)
+#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_INITIATOR_OFFSET (4)
+#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_PRIORITY_REQUEST (32)
+#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_PRIORITY_REQUEST_OFFSET (5)
+#define EMBER_AF_ZLL_INFORMATION_PROFILE_INTEROP (128)
+#define EMBER_AF_ZLL_INFORMATION_PROFILE_INTEROP_OFFSET (7)
diff --git a/examples/chip-tool/gen/gen_config.h b/examples/chip-tool/gen/gen_config.h
new file mode 100644
index 0000000..7c77a36
--- /dev/null
+++ b/examples/chip-tool/gen/gen_config.h
@@ -0,0 +1,88 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// User options for plugin Binding Table Library
+#define EMBER_BINDING_TABLE_SIZE 10
+
+/**** Network Section ****/
+#define EMBER_SUPPORTED_NETWORKS (1)
+
+#define EMBER_APS_UNICAST_MESSAGE_COUNT 10
+
+/**** Cluster endpoint counts ****/
+#define EMBER_AF_BARRIER_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_COLOR_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_DOOR_LOCK_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_GROUPS_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_LEVEL_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_ON_OFF_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_SCENES_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+
+/**** Cluster Plugins ****/
+
+// Use this macro to check if the client side of the Barrier Control cluster is included
+#define ZCL_USING_BARRIER_CONTROL_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_BARRIER_CONTROL_CLIENT
+
+// Use this macro to check if the client side of the Basic cluster is included
+#define ZCL_USING_BASIC_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_BASIC_CLIENT
+
+// Use this macro to check if the client side of the Binding cluster is included
+#define ZCL_USING_BINDING_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_BINDING_CLIENT
+
+// Use this macro to check if the client side of the Color Control cluster is included
+#define ZCL_USING_COLOR_CONTROL_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_COLOR_CONTROL_CLIENT
+
+// Use this macro to check if the client side of the Door Lock cluster is included
+#define ZCL_USING_DOOR_LOCK_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_DOOR_LOCK_CLIENT
+
+// Use this macro to check if the client side of the Groups cluster is included
+#define ZCL_USING_GROUPS_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_GROUPS_CLIENT
+
+// Use this macro to check if the client side of the Identify cluster is included
+#define ZCL_USING_IDENTIFY_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_IDENTIFY_CLIENT
+
+// Use this macro to check if the client side of the Level Control cluster is included
+#define ZCL_USING_LEVEL_CONTROL_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_LEVEL_CONTROL_CLIENT
+
+// Use this macro to check if the client side of the On/off cluster is included
+#define ZCL_USING_ON_OFF_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_ON_OFF_CLIENT
+
+// Use this macro to check if the client side of the Scenes cluster is included
+#define ZCL_USING_SCENES_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_SCENES_CLIENT
+
+// Use this macro to check if the client side of the Temperature Measurement cluster is included
+#define ZCL_USING_TEMP_MEASUREMENT_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_TEMPERATURE_MEASUREMENT_CLIENT
diff --git a/examples/chip-tool/gen/gen_tokens.h b/examples/chip-tool/gen/gen_tokens.h
new file mode 100644
index 0000000..860bf57
--- /dev/null
+++ b/examples/chip-tool/gen/gen_tokens.h
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// This file contains the tokens for attributes stored in flash
+
+// Identifier tags for tokens
+
+// Types for the tokens
+#ifdef DEFINETYPES
+#endif // DEFINETYPES
+
+// Actual token definitions
+#ifdef DEFINETOKENS
+#endif // DEFINETOKENS
+
+// Macro snippet that loads all the attributes from tokens
+#define GENERATED_TOKEN_LOADER(endpoint) \
+ do \
+ { \
+ } while (false)
+
+// Macro snippet that saves the attribute to token
+#define GENERATED_TOKEN_SAVER \
+ do \
+ { \
+ } while (false)
diff --git a/examples/chip-tool/gen/print-cluster.h b/examples/chip-tool/gen/print-cluster.h
new file mode 100644
index 0000000..4348de1
--- /dev/null
+++ b/examples/chip-tool/gen/print-cluster.h
@@ -0,0 +1,868 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// This is the mapping of IDs to cluster names assuming a format according
+// to the "EmberAfClusterName" defined in the ZCL header.
+// The names of clusters that are not present, are removed.
+
+#if defined(ZCL_USING_BASIC_CLUSTER_SERVER) || defined(ZCL_USING_BASIC_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BASIC_CLUSTER { ZCL_BASIC_CLUSTER_ID, 0, "Basic" },
+#else
+#define CHIP_PRINTCLUSTER_BASIC_CLUSTER
+#endif
+
+#if defined(ZCL_USING_POWER_CONFIG_CLUSTER_SERVER) || defined(ZCL_USING_POWER_CONFIG_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_POWER_CONFIG_CLUSTER { ZCL_POWER_CONFIG_CLUSTER_ID, 1, "Power Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_POWER_CONFIG_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DEVICE_TEMP_CLUSTER_SERVER) || defined(ZCL_USING_DEVICE_TEMP_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DEVICE_TEMP_CLUSTER { ZCL_DEVICE_TEMP_CLUSTER_ID, 2, "Device Temperature Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_DEVICE_TEMP_CLUSTER
+#endif
+
+#if defined(ZCL_USING_IDENTIFY_CLUSTER_SERVER) || defined(ZCL_USING_IDENTIFY_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_IDENTIFY_CLUSTER { ZCL_IDENTIFY_CLUSTER_ID, 3, "Identify" },
+#else
+#define CHIP_PRINTCLUSTER_IDENTIFY_CLUSTER
+#endif
+
+#if defined(ZCL_USING_GROUPS_CLUSTER_SERVER) || defined(ZCL_USING_GROUPS_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_GROUPS_CLUSTER { ZCL_GROUPS_CLUSTER_ID, 4, "Groups" },
+#else
+#define CHIP_PRINTCLUSTER_GROUPS_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SCENES_CLUSTER_SERVER) || defined(ZCL_USING_SCENES_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SCENES_CLUSTER { ZCL_SCENES_CLUSTER_ID, 5, "Scenes" },
+#else
+#define CHIP_PRINTCLUSTER_SCENES_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ON_OFF_CLUSTER_SERVER) || defined(ZCL_USING_ON_OFF_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ON_OFF_CLUSTER { ZCL_ON_OFF_CLUSTER_ID, 6, "On/off" },
+#else
+#define CHIP_PRINTCLUSTER_ON_OFF_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ON_OFF_SWITCH_CONFIG_CLUSTER_SERVER) || defined(ZCL_USING_ON_OFF_SWITCH_CONFIG_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ON_OFF_SWITCH_CONFIG_CLUSTER { ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_ID, 7, "On/off Switch Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_ON_OFF_SWITCH_CONFIG_CLUSTER
+#endif
+
+#if defined(ZCL_USING_LEVEL_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_LEVEL_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_LEVEL_CONTROL_CLUSTER { ZCL_LEVEL_CONTROL_CLUSTER_ID, 8, "Level Control" },
+#else
+#define CHIP_PRINTCLUSTER_LEVEL_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ALARM_CLUSTER_SERVER) || defined(ZCL_USING_ALARM_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ALARM_CLUSTER { ZCL_ALARM_CLUSTER_ID, 9, "Alarms" },
+#else
+#define CHIP_PRINTCLUSTER_ALARM_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TIME_CLUSTER_SERVER) || defined(ZCL_USING_TIME_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TIME_CLUSTER { ZCL_TIME_CLUSTER_ID, 10, "Time" },
+#else
+#define CHIP_PRINTCLUSTER_TIME_CLUSTER
+#endif
+
+#if defined(ZCL_USING_RSSI_LOCATION_CLUSTER_SERVER) || defined(ZCL_USING_RSSI_LOCATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_RSSI_LOCATION_CLUSTER { ZCL_RSSI_LOCATION_CLUSTER_ID, 11, "RSSI Location" },
+#else
+#define CHIP_PRINTCLUSTER_RSSI_LOCATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BINARY_INPUT_BASIC_CLUSTER_SERVER) || defined(ZCL_USING_BINARY_INPUT_BASIC_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BINARY_INPUT_BASIC_CLUSTER { ZCL_BINARY_INPUT_BASIC_CLUSTER_ID, 15, "Binary Input (Basic)" },
+#else
+#define CHIP_PRINTCLUSTER_BINARY_INPUT_BASIC_CLUSTER
+#endif
+
+#if defined(ZCL_USING_COMMISSIONING_CLUSTER_SERVER) || defined(ZCL_USING_COMMISSIONING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_COMMISSIONING_CLUSTER { ZCL_COMMISSIONING_CLUSTER_ID, 21, "Commissioning" },
+#else
+#define CHIP_PRINTCLUSTER_COMMISSIONING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PARTITION_CLUSTER_SERVER) || defined(ZCL_USING_PARTITION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PARTITION_CLUSTER { ZCL_PARTITION_CLUSTER_ID, 22, "Partition" },
+#else
+#define CHIP_PRINTCLUSTER_PARTITION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_OTA_BOOTLOAD_CLUSTER_SERVER) || defined(ZCL_USING_OTA_BOOTLOAD_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OTA_BOOTLOAD_CLUSTER { ZCL_OTA_BOOTLOAD_CLUSTER_ID, 25, "Over the Air Bootloading" },
+#else
+#define CHIP_PRINTCLUSTER_OTA_BOOTLOAD_CLUSTER
+#endif
+
+#if defined(ZCL_USING_POWER_PROFILE_CLUSTER_SERVER) || defined(ZCL_USING_POWER_PROFILE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_POWER_PROFILE_CLUSTER { ZCL_POWER_PROFILE_CLUSTER_ID, 26, "Power Profile" },
+#else
+#define CHIP_PRINTCLUSTER_POWER_PROFILE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_APPLIANCE_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_APPLIANCE_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_APPLIANCE_CONTROL_CLUSTER { ZCL_APPLIANCE_CONTROL_CLUSTER_ID, 27, "Appliance Control" },
+#else
+#define CHIP_PRINTCLUSTER_APPLIANCE_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_POLL_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_POLL_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_POLL_CONTROL_CLUSTER { ZCL_POLL_CONTROL_CLUSTER_ID, 32, "Poll Control" },
+#else
+#define CHIP_PRINTCLUSTER_POLL_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_GREEN_POWER_CLUSTER_SERVER) || defined(ZCL_USING_GREEN_POWER_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_GREEN_POWER_CLUSTER { ZCL_GREEN_POWER_CLUSTER_ID, 33, "Green Power" },
+#else
+#define CHIP_PRINTCLUSTER_GREEN_POWER_CLUSTER
+#endif
+
+#if defined(ZCL_USING_KEEPALIVE_CLUSTER_SERVER) || defined(ZCL_USING_KEEPALIVE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_KEEPALIVE_CLUSTER { ZCL_KEEPALIVE_CLUSTER_ID, 37, "Keep-Alive" },
+#else
+#define CHIP_PRINTCLUSTER_KEEPALIVE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SHADE_CONFIG_CLUSTER_SERVER) || defined(ZCL_USING_SHADE_CONFIG_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SHADE_CONFIG_CLUSTER { ZCL_SHADE_CONFIG_CLUSTER_ID, 256, "Shade Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_SHADE_CONFIG_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DOOR_LOCK_CLUSTER_SERVER) || defined(ZCL_USING_DOOR_LOCK_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DOOR_LOCK_CLUSTER { ZCL_DOOR_LOCK_CLUSTER_ID, 257, "Door Lock" },
+#else
+#define CHIP_PRINTCLUSTER_DOOR_LOCK_CLUSTER
+#endif
+
+#if defined(ZCL_USING_WINDOW_COVERING_CLUSTER_SERVER) || defined(ZCL_USING_WINDOW_COVERING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_WINDOW_COVERING_CLUSTER { ZCL_WINDOW_COVERING_CLUSTER_ID, 258, "Window Covering" },
+#else
+#define CHIP_PRINTCLUSTER_WINDOW_COVERING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BARRIER_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_BARRIER_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BARRIER_CONTROL_CLUSTER { ZCL_BARRIER_CONTROL_CLUSTER_ID, 259, "Barrier Control" },
+#else
+#define CHIP_PRINTCLUSTER_BARRIER_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PUMP_CONFIG_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_PUMP_CONFIG_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PUMP_CONFIG_CONTROL_CLUSTER { ZCL_PUMP_CONFIG_CONTROL_CLUSTER_ID, 512, "Pump Configuration and Control" },
+#else
+#define CHIP_PRINTCLUSTER_PUMP_CONFIG_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_THERMOSTAT_CLUSTER_SERVER) || defined(ZCL_USING_THERMOSTAT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_THERMOSTAT_CLUSTER { ZCL_THERMOSTAT_CLUSTER_ID, 513, "Thermostat" },
+#else
+#define CHIP_PRINTCLUSTER_THERMOSTAT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_FAN_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_FAN_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_FAN_CONTROL_CLUSTER { ZCL_FAN_CONTROL_CLUSTER_ID, 514, "Fan Control" },
+#else
+#define CHIP_PRINTCLUSTER_FAN_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DEHUMID_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_DEHUMID_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DEHUMID_CONTROL_CLUSTER { ZCL_DEHUMID_CONTROL_CLUSTER_ID, 515, "Dehumidification Control" },
+#else
+#define CHIP_PRINTCLUSTER_DEHUMID_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_THERMOSTAT_UI_CONFIG_CLUSTER_SERVER) || defined(ZCL_USING_THERMOSTAT_UI_CONFIG_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_THERMOSTAT_UI_CONFIG_CLUSTER \
+ { ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_ID, 516, "Thermostat User Interface Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_THERMOSTAT_UI_CONFIG_CLUSTER
+#endif
+
+#if defined(ZCL_USING_COLOR_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_COLOR_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_COLOR_CONTROL_CLUSTER { ZCL_COLOR_CONTROL_CLUSTER_ID, 768, "Color Control" },
+#else
+#define CHIP_PRINTCLUSTER_COLOR_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BALLAST_CONFIGURATION_CLUSTER_SERVER) || defined(ZCL_USING_BALLAST_CONFIGURATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BALLAST_CONFIGURATION_CLUSTER { ZCL_BALLAST_CONFIGURATION_CLUSTER_ID, 769, "Ballast Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_BALLAST_CONFIGURATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ILLUM_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_ILLUM_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ILLUM_MEASUREMENT_CLUSTER { ZCL_ILLUM_MEASUREMENT_CLUSTER_ID, 1024, "Illuminance Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_ILLUM_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ILLUM_LEVEL_SENSING_CLUSTER_SERVER) || defined(ZCL_USING_ILLUM_LEVEL_SENSING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ILLUM_LEVEL_SENSING_CLUSTER { ZCL_ILLUM_LEVEL_SENSING_CLUSTER_ID, 1025, "Illuminance Level Sensing" },
+#else
+#define CHIP_PRINTCLUSTER_ILLUM_LEVEL_SENSING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TEMP_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_TEMP_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TEMP_MEASUREMENT_CLUSTER { ZCL_TEMP_MEASUREMENT_CLUSTER_ID, 1026, "Temperature Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_TEMP_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PRESSURE_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_PRESSURE_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PRESSURE_MEASUREMENT_CLUSTER { ZCL_PRESSURE_MEASUREMENT_CLUSTER_ID, 1027, "Pressure Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_PRESSURE_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_FLOW_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_FLOW_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_FLOW_MEASUREMENT_CLUSTER { ZCL_FLOW_MEASUREMENT_CLUSTER_ID, 1028, "Flow Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_FLOW_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER \
+ { ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_ID, 1029, "Relative Humidity Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_OCCUPANCY_SENSING_CLUSTER_SERVER) || defined(ZCL_USING_OCCUPANCY_SENSING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OCCUPANCY_SENSING_CLUSTER { ZCL_OCCUPANCY_SENSING_CLUSTER_ID, 1030, "Occupancy Sensing" },
+#else
+#define CHIP_PRINTCLUSTER_OCCUPANCY_SENSING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1036, "Carbon Monoxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1037, "Carbon Dioxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1038, "Ethylene Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1039, "Ethylene Oxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1040, "Hydrogen Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1041, "Hydrogen Sulphide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1042, "Nitric Oxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1043, "Nitrogen Dioxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1044, "Oxygen Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1045, "Ozone Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1046, "Sulfur Dioxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1047, "Dissolved Oxygen Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1048, "Bromate Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1049, "Chloramines Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1050, "Chlorine Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1051, \
+ "Fecal coliform and E. Coli Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1052, "Fluoride Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1053, "Haloacetic Acids Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1054, "Total Trihalomethanes Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1055, "Total Coliform Bacteria Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1056, "Turbidity Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1057, "Copper Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1058, "Lead Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1059, "Manganese Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1060, "Sulfate Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1061, "Bromodichloromethane Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1062, "Bromoform Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1063, "Chlorodibromomethane Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1064, "Chloroform Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1065, "Sodium Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_IAS_ZONE_CLUSTER_SERVER) || defined(ZCL_USING_IAS_ZONE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_IAS_ZONE_CLUSTER { ZCL_IAS_ZONE_CLUSTER_ID, 1280, "IAS Zone" },
+#else
+#define CHIP_PRINTCLUSTER_IAS_ZONE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_IAS_ACE_CLUSTER_SERVER) || defined(ZCL_USING_IAS_ACE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_IAS_ACE_CLUSTER { ZCL_IAS_ACE_CLUSTER_ID, 1281, "IAS ACE" },
+#else
+#define CHIP_PRINTCLUSTER_IAS_ACE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_IAS_WD_CLUSTER_SERVER) || defined(ZCL_USING_IAS_WD_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_IAS_WD_CLUSTER { ZCL_IAS_WD_CLUSTER_ID, 1282, "IAS WD" },
+#else
+#define CHIP_PRINTCLUSTER_IAS_WD_CLUSTER
+#endif
+
+#if defined(ZCL_USING_GENERIC_TUNNEL_CLUSTER_SERVER) || defined(ZCL_USING_GENERIC_TUNNEL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_GENERIC_TUNNEL_CLUSTER { ZCL_GENERIC_TUNNEL_CLUSTER_ID, 1536, "Generic Tunnel" },
+#else
+#define CHIP_PRINTCLUSTER_GENERIC_TUNNEL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BACNET_PROTOCOL_TUNNEL_CLUSTER_SERVER) || defined(ZCL_USING_BACNET_PROTOCOL_TUNNEL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BACNET_PROTOCOL_TUNNEL_CLUSTER { ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_ID, 1537, "BACnet Protocol Tunnel" },
+#else
+#define CHIP_PRINTCLUSTER_BACNET_PROTOCOL_TUNNEL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_11073_PROTOCOL_TUNNEL_CLUSTER_SERVER) || defined(ZCL_USING_11073_PROTOCOL_TUNNEL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_11073_PROTOCOL_TUNNEL_CLUSTER { ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_ID, 1556, "11073 Protocol Tunnel" },
+#else
+#define CHIP_PRINTCLUSTER_11073_PROTOCOL_TUNNEL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ISO7816_PROTOCOL_TUNNEL_CLUSTER_SERVER) || defined(ZCL_USING_ISO7816_PROTOCOL_TUNNEL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ISO7816_PROTOCOL_TUNNEL_CLUSTER \
+ { ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_ID, 1557, "ISO 7816 Protocol Tunnel" },
+#else
+#define CHIP_PRINTCLUSTER_ISO7816_PROTOCOL_TUNNEL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PRICE_CLUSTER_SERVER) || defined(ZCL_USING_PRICE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PRICE_CLUSTER { ZCL_PRICE_CLUSTER_ID, 1792, "Price" },
+#else
+#define CHIP_PRINTCLUSTER_PRICE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER \
+ { ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID, 1793, "Demand Response and Load Control" },
+#else
+#define CHIP_PRINTCLUSTER_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SIMPLE_METERING_CLUSTER_SERVER) || defined(ZCL_USING_SIMPLE_METERING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SIMPLE_METERING_CLUSTER { ZCL_SIMPLE_METERING_CLUSTER_ID, 1794, "Simple Metering" },
+#else
+#define CHIP_PRINTCLUSTER_SIMPLE_METERING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_MESSAGING_CLUSTER_SERVER) || defined(ZCL_USING_MESSAGING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_MESSAGING_CLUSTER { ZCL_MESSAGING_CLUSTER_ID, 1795, "Messaging" },
+#else
+#define CHIP_PRINTCLUSTER_MESSAGING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TUNNELING_CLUSTER_SERVER) || defined(ZCL_USING_TUNNELING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TUNNELING_CLUSTER { ZCL_TUNNELING_CLUSTER_ID, 1796, "Tunneling" },
+#else
+#define CHIP_PRINTCLUSTER_TUNNELING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PREPAYMENT_CLUSTER_SERVER) || defined(ZCL_USING_PREPAYMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PREPAYMENT_CLUSTER { ZCL_PREPAYMENT_CLUSTER_ID, 1797, "Prepayment" },
+#else
+#define CHIP_PRINTCLUSTER_PREPAYMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ENERGY_MANAGEMENT_CLUSTER_SERVER) || defined(ZCL_USING_ENERGY_MANAGEMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ENERGY_MANAGEMENT_CLUSTER { ZCL_ENERGY_MANAGEMENT_CLUSTER_ID, 1798, "Energy Management" },
+#else
+#define CHIP_PRINTCLUSTER_ENERGY_MANAGEMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CALENDAR_CLUSTER_SERVER) || defined(ZCL_USING_CALENDAR_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CALENDAR_CLUSTER { ZCL_CALENDAR_CLUSTER_ID, 1799, "Calendar" },
+#else
+#define CHIP_PRINTCLUSTER_CALENDAR_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DEVICE_MANAGEMENT_CLUSTER_SERVER) || defined(ZCL_USING_DEVICE_MANAGEMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DEVICE_MANAGEMENT_CLUSTER { ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, 1800, "Device Management" },
+#else
+#define CHIP_PRINTCLUSTER_DEVICE_MANAGEMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_EVENTS_CLUSTER_SERVER) || defined(ZCL_USING_EVENTS_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_EVENTS_CLUSTER { ZCL_EVENTS_CLUSTER_ID, 1801, "Events" },
+#else
+#define CHIP_PRINTCLUSTER_EVENTS_CLUSTER
+#endif
+
+#if defined(ZCL_USING_MDU_PAIRING_CLUSTER_SERVER) || defined(ZCL_USING_MDU_PAIRING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_MDU_PAIRING_CLUSTER { ZCL_MDU_PAIRING_CLUSTER_ID, 1802, "MDU Pairing" },
+#else
+#define CHIP_PRINTCLUSTER_MDU_PAIRING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SUB_GHZ_CLUSTER_SERVER) || defined(ZCL_USING_SUB_GHZ_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SUB_GHZ_CLUSTER { ZCL_SUB_GHZ_CLUSTER_ID, 1803, "Sub-GHz" },
+#else
+#define CHIP_PRINTCLUSTER_SUB_GHZ_CLUSTER
+#endif
+
+#if defined(ZCL_USING_KEY_ESTABLISHMENT_CLUSTER_SERVER) || defined(ZCL_USING_KEY_ESTABLISHMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_KEY_ESTABLISHMENT_CLUSTER { ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, 2048, "Key Establishment" },
+#else
+#define CHIP_PRINTCLUSTER_KEY_ESTABLISHMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_INFORMATION_CLUSTER_SERVER) || defined(ZCL_USING_INFORMATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_INFORMATION_CLUSTER { ZCL_INFORMATION_CLUSTER_ID, 2304, "Information" },
+#else
+#define CHIP_PRINTCLUSTER_INFORMATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DATA_SHARING_CLUSTER_SERVER) || defined(ZCL_USING_DATA_SHARING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DATA_SHARING_CLUSTER { ZCL_DATA_SHARING_CLUSTER_ID, 2305, "Data Sharing" },
+#else
+#define CHIP_PRINTCLUSTER_DATA_SHARING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_GAMING_CLUSTER_SERVER) || defined(ZCL_USING_GAMING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_GAMING_CLUSTER { ZCL_GAMING_CLUSTER_ID, 2306, "Gaming" },
+#else
+#define CHIP_PRINTCLUSTER_GAMING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DATA_RATE_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_DATA_RATE_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DATA_RATE_CONTROL_CLUSTER { ZCL_DATA_RATE_CONTROL_CLUSTER_ID, 2307, "Data Rate Control" },
+#else
+#define CHIP_PRINTCLUSTER_DATA_RATE_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_VOICE_OVER_ZIGBEE_CLUSTER_SERVER) || defined(ZCL_USING_VOICE_OVER_ZIGBEE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_VOICE_OVER_ZIGBEE_CLUSTER { ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID, 2308, "Voice over ZigBee" },
+#else
+#define CHIP_PRINTCLUSTER_VOICE_OVER_ZIGBEE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHATTING_CLUSTER_SERVER) || defined(ZCL_USING_CHATTING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHATTING_CLUSTER { ZCL_CHATTING_CLUSTER_ID, 2309, "Chatting" },
+#else
+#define CHIP_PRINTCLUSTER_CHATTING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PAYMENT_CLUSTER_SERVER) || defined(ZCL_USING_PAYMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PAYMENT_CLUSTER { ZCL_PAYMENT_CLUSTER_ID, 2561, "Payment" },
+#else
+#define CHIP_PRINTCLUSTER_PAYMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BILLING_CLUSTER_SERVER) || defined(ZCL_USING_BILLING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BILLING_CLUSTER { ZCL_BILLING_CLUSTER_ID, 2562, "Billing" },
+#else
+#define CHIP_PRINTCLUSTER_BILLING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_APPLIANCE_IDENTIFICATION_CLUSTER_SERVER) || defined(ZCL_USING_APPLIANCE_IDENTIFICATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_APPLIANCE_IDENTIFICATION_CLUSTER \
+ { ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_ID, 2816, "Appliance Identification" },
+#else
+#define CHIP_PRINTCLUSTER_APPLIANCE_IDENTIFICATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_METER_IDENTIFICATION_CLUSTER_SERVER) || defined(ZCL_USING_METER_IDENTIFICATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_METER_IDENTIFICATION_CLUSTER { ZCL_METER_IDENTIFICATION_CLUSTER_ID, 2817, "Meter Identification" },
+#else
+#define CHIP_PRINTCLUSTER_METER_IDENTIFICATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_SERVER) || defined(ZCL_USING_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_APPLIANCE_EVENTS_AND_ALERT_CLUSTER \
+ { ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID, 2818, "Appliance Events and Alert" },
+#else
+#define CHIP_PRINTCLUSTER_APPLIANCE_EVENTS_AND_ALERT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_APPLIANCE_STATISTICS_CLUSTER_SERVER) || defined(ZCL_USING_APPLIANCE_STATISTICS_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_APPLIANCE_STATISTICS_CLUSTER { ZCL_APPLIANCE_STATISTICS_CLUSTER_ID, 2819, "Appliance Statistics" },
+#else
+#define CHIP_PRINTCLUSTER_APPLIANCE_STATISTICS_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ELECTRICAL_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_ELECTRICAL_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ELECTRICAL_MEASUREMENT_CLUSTER { ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID, 2820, "Electrical Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_ELECTRICAL_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DIAGNOSTICS_CLUSTER_SERVER) || defined(ZCL_USING_DIAGNOSTICS_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DIAGNOSTICS_CLUSTER { ZCL_DIAGNOSTICS_CLUSTER_ID, 2821, "Diagnostics" },
+#else
+#define CHIP_PRINTCLUSTER_DIAGNOSTICS_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ZLL_COMMISSIONING_CLUSTER_SERVER) || defined(ZCL_USING_ZLL_COMMISSIONING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ZLL_COMMISSIONING_CLUSTER { ZCL_ZLL_COMMISSIONING_CLUSTER_ID, 4096, "ZLL Commissioning" },
+#else
+#define CHIP_PRINTCLUSTER_ZLL_COMMISSIONING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BINDING_CLUSTER_SERVER) || defined(ZCL_USING_BINDING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BINDING_CLUSTER { ZCL_BINDING_CLUSTER_ID, 61440, "Binding" },
+#else
+#define CHIP_PRINTCLUSTER_BINDING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SAMPLE_MFG_SPECIFIC_CLUSTER_SERVER) || defined(ZCL_USING_SAMPLE_MFG_SPECIFIC_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER { ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID, 64512, "Sample Mfg Specific Cluster" },
+#else
+#define CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SAMPLE_MFG_SPECIFIC_CLUSTER_2_SERVER) || defined(ZCL_USING_SAMPLE_MFG_SPECIFIC_CLUSTER_2_CLIENT)
+#define CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER_2 \
+ { ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_ID, 64512, "Sample Mfg Specific Cluster 2" },
+#else
+#define CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER_2
+#endif
+
+#if defined(ZCL_USING_OTA_CONFIGURATION_CLUSTER_SERVER) || defined(ZCL_USING_OTA_CONFIGURATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OTA_CONFIGURATION_CLUSTER { ZCL_OTA_CONFIGURATION_CLUSTER_ID, 64513, "Configuration Cluster" },
+#else
+#define CHIP_PRINTCLUSTER_OTA_CONFIGURATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_MFGLIB_CLUSTER_SERVER) || defined(ZCL_USING_MFGLIB_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_MFGLIB_CLUSTER { ZCL_MFGLIB_CLUSTER_ID, 64514, "MFGLIB Cluster" },
+#else
+#define CHIP_PRINTCLUSTER_MFGLIB_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SL_WWAH_CLUSTER_SERVER) || defined(ZCL_USING_SL_WWAH_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SL_WWAH_CLUSTER { ZCL_SL_WWAH_CLUSTER_ID, 64599, "SL Works With All Hubs" },
+#else
+#define CHIP_PRINTCLUSTER_SL_WWAH_CLUSTER
+#endif
+
+#define CLUSTER_IDS_TO_NAMES \
+ CHIP_PRINTCLUSTER_BASIC_CLUSTER \
+ CHIP_PRINTCLUSTER_POWER_CONFIG_CLUSTER \
+ CHIP_PRINTCLUSTER_DEVICE_TEMP_CLUSTER \
+ CHIP_PRINTCLUSTER_IDENTIFY_CLUSTER \
+ CHIP_PRINTCLUSTER_GROUPS_CLUSTER \
+ CHIP_PRINTCLUSTER_SCENES_CLUSTER \
+ CHIP_PRINTCLUSTER_ON_OFF_CLUSTER \
+ CHIP_PRINTCLUSTER_ON_OFF_SWITCH_CONFIG_CLUSTER \
+ CHIP_PRINTCLUSTER_LEVEL_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_ALARM_CLUSTER \
+ CHIP_PRINTCLUSTER_TIME_CLUSTER \
+ CHIP_PRINTCLUSTER_RSSI_LOCATION_CLUSTER \
+ CHIP_PRINTCLUSTER_BINARY_INPUT_BASIC_CLUSTER \
+ CHIP_PRINTCLUSTER_COMMISSIONING_CLUSTER \
+ CHIP_PRINTCLUSTER_PARTITION_CLUSTER \
+ CHIP_PRINTCLUSTER_OTA_BOOTLOAD_CLUSTER \
+ CHIP_PRINTCLUSTER_POWER_PROFILE_CLUSTER \
+ CHIP_PRINTCLUSTER_APPLIANCE_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_POLL_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_GREEN_POWER_CLUSTER \
+ CHIP_PRINTCLUSTER_KEEPALIVE_CLUSTER \
+ CHIP_PRINTCLUSTER_SHADE_CONFIG_CLUSTER \
+ CHIP_PRINTCLUSTER_DOOR_LOCK_CLUSTER \
+ CHIP_PRINTCLUSTER_WINDOW_COVERING_CLUSTER \
+ CHIP_PRINTCLUSTER_BARRIER_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_PUMP_CONFIG_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_THERMOSTAT_CLUSTER \
+ CHIP_PRINTCLUSTER_FAN_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_DEHUMID_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_THERMOSTAT_UI_CONFIG_CLUSTER \
+ CHIP_PRINTCLUSTER_COLOR_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_BALLAST_CONFIGURATION_CLUSTER \
+ CHIP_PRINTCLUSTER_ILLUM_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_ILLUM_LEVEL_SENSING_CLUSTER \
+ CHIP_PRINTCLUSTER_TEMP_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_PRESSURE_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_FLOW_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_OCCUPANCY_SENSING_CLUSTER \
+ CHIP_PRINTCLUSTER_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_IAS_ZONE_CLUSTER \
+ CHIP_PRINTCLUSTER_IAS_ACE_CLUSTER \
+ CHIP_PRINTCLUSTER_IAS_WD_CLUSTER \
+ CHIP_PRINTCLUSTER_GENERIC_TUNNEL_CLUSTER \
+ CHIP_PRINTCLUSTER_BACNET_PROTOCOL_TUNNEL_CLUSTER \
+ CHIP_PRINTCLUSTER_11073_PROTOCOL_TUNNEL_CLUSTER \
+ CHIP_PRINTCLUSTER_ISO7816_PROTOCOL_TUNNEL_CLUSTER \
+ CHIP_PRINTCLUSTER_PRICE_CLUSTER \
+ CHIP_PRINTCLUSTER_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_SIMPLE_METERING_CLUSTER \
+ CHIP_PRINTCLUSTER_MESSAGING_CLUSTER \
+ CHIP_PRINTCLUSTER_TUNNELING_CLUSTER \
+ CHIP_PRINTCLUSTER_PREPAYMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_ENERGY_MANAGEMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CALENDAR_CLUSTER \
+ CHIP_PRINTCLUSTER_DEVICE_MANAGEMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_EVENTS_CLUSTER \
+ CHIP_PRINTCLUSTER_MDU_PAIRING_CLUSTER \
+ CHIP_PRINTCLUSTER_SUB_GHZ_CLUSTER \
+ CHIP_PRINTCLUSTER_KEY_ESTABLISHMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_INFORMATION_CLUSTER \
+ CHIP_PRINTCLUSTER_DATA_SHARING_CLUSTER \
+ CHIP_PRINTCLUSTER_GAMING_CLUSTER \
+ CHIP_PRINTCLUSTER_DATA_RATE_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_VOICE_OVER_ZIGBEE_CLUSTER \
+ CHIP_PRINTCLUSTER_CHATTING_CLUSTER \
+ CHIP_PRINTCLUSTER_PAYMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_BILLING_CLUSTER \
+ CHIP_PRINTCLUSTER_APPLIANCE_IDENTIFICATION_CLUSTER \
+ CHIP_PRINTCLUSTER_METER_IDENTIFICATION_CLUSTER \
+ CHIP_PRINTCLUSTER_APPLIANCE_EVENTS_AND_ALERT_CLUSTER \
+ CHIP_PRINTCLUSTER_APPLIANCE_STATISTICS_CLUSTER \
+ CHIP_PRINTCLUSTER_ELECTRICAL_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_DIAGNOSTICS_CLUSTER \
+ CHIP_PRINTCLUSTER_ZLL_COMMISSIONING_CLUSTER \
+ CHIP_PRINTCLUSTER_BINDING_CLUSTER \
+ CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER \
+ CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER_2 \
+ CHIP_PRINTCLUSTER_OTA_CONFIGURATION_CLUSTER \
+ CHIP_PRINTCLUSTER_MFGLIB_CLUSTER \
+ CHIP_PRINTCLUSTER_SL_WWAH_CLUSTER
+
+#define MAX_CLUSTER_NAME_LENGTH 52
diff --git a/examples/chip-tool/main.cpp b/examples/chip-tool/main.cpp
index 5b7b3ae..00d7054 100644
--- a/examples/chip-tool/main.cpp
+++ b/examples/chip-tool/main.cpp
@@ -21,6 +21,7 @@
#include "commands/clusters/Commands.h"
#include "commands/pairing/Commands.h"
#include "commands/payload/Commands.h"
+#include "commands/reporting/Commands.h"
#include <transport/PASESession.h>
@@ -29,9 +30,12 @@
// ================================================================================
int main(int argc, char * argv[])
{
+ InitDataModelHandler();
+
Commands commands;
registerCommandsPayload(commands);
registerCommandsPairing(commands);
+ registerCommandsReporting(commands);
registerClusters(commands);
return commands.Run(chip::kTestControllerNodeId, chip::kTestDeviceNodeId, argc, argv);
diff --git a/examples/chip-tool/templates/commands.zapt b/examples/chip-tool/templates/commands.zapt
new file mode 100644
index 0000000..73bc60b
--- /dev/null
+++ b/examples/chip-tool/templates/commands.zapt
@@ -0,0 +1,297 @@
+{{> header}}
+
+#pragma once
+
+#include "ModelCommand.h"
+#include "gen/CHIPClientCallbacks.h"
+#include <controller/CHIPClusters.h>
+
+static void OnDefaultSuccessResponse(void * context)
+{
+ ChipLogProgress(chipTool, "Default Success Response");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnDefaultFailureResponse(void * context, uint8_t status)
+{
+ ChipLogProgress(chipTool, "Default Failure Response: 0x%02x", status);
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(false);
+}
+
+typedef void (*UnsupportedAttributeCallback)(void * context);
+static void OnUnsupportedAttributeResponse(void * context)
+{
+ ChipLogError(chipTool, "Unsupported attribute Response. This should never happen !");
+}
+
+static void OnBooleanAttributeResponse(void * context, bool value)
+{
+ ChipLogProgress(chipTool, "Boolean attribute Response: %d", value);
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnInt8uAttributeResponse(void * context, uint8_t value)
+{
+ ChipLogProgress(chipTool, "Int8u attribute Response: %" PRIu8, value);
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnInt16uAttributeResponse(void * context, uint16_t value)
+{
+ ChipLogProgress(chipTool, "Int16u attribute Response: %" PRIu16, value);
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+static void OnInt16sAttributeResponse(void * context, int16_t value)
+{
+ ChipLogProgress(chipTool, "Int16s attribute Response: %" PRId16, value);
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+{{#all_user_clusters}}
+{{#if (isClient side) }}
+{{#if (user_cluster_has_enabled_command name side)}}
+{{#all_user_cluster_commands}}
+{{#if (isStrEqual clusterName parent.name)}}
+{{#if (isCommandAvailable parent.side incoming outgoing commandSource name)}}
+static void On{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}(void * context{{#zcl_command_arguments}}{{#unless (isStrEqual label "status")}}, {{asUnderlyingZclType type}} {{asSymbol label}}{{/unless}}{{/zcl_command_arguments}})
+{
+ ChipLogProgress(chipTool, "{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}");
+
+ ModelCommand * command = reinterpret_cast<ModelCommand *>(context);
+ command->SetCommandExitStatus(true);
+}
+
+{{/if}}
+{{/if}}
+{{/all_user_cluster_commands}}
+{{/if}}
+{{/if}}
+{{/all_user_clusters}}
+
+{{> clusters_header}}
+
+{{#chip_clusters}}
+constexpr chip::ClusterId k{{asCamelCased name false}}ClusterId = {{asHex code 4}};
+{{/chip_clusters}}
+
+{{#chip_clusters}}
+{{> cluster_header}}
+
+{{#chip_server_cluster_commands}}
+/*
+ * Command {{asCamelCased name false}}
+ */
+class {{asCamelCased clusterName false}}{{asCamelCased name false}}: public ModelCommand
+{
+public:
+ {{asCamelCased clusterName false}}{{asCamelCased name false}}(): ModelCommand("{{asDelimitedCommand name}}")
+ {
+ {{#chip_server_cluster_command_arguments}}
+ {{#if (isString type)}}
+ AddArgument("{{asCamelCased label}}", &m{{asCamelCased label false}});
+ {{else}}
+ AddArgument("{{asCamelCased label}}", {{asTypeMinValue type}}, {{asTypeMaxValue type}}, &m{{asCamelCased label false}});
+ {{/if}}
+ {{/chip_server_cluster_command_arguments}}
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster ({{asHex parent.code 4}}) command ({{asHex code 2}}) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::{{asCamelCased parent.name false}}Cluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.{{asCamelCased name false}}(onSuccessCallback->Cancel(), onFailureCallback->Cancel(){{#chip_server_cluster_command_arguments}}, m{{asCamelCased label false}}{{/chip_server_cluster_command_arguments}});
+ }
+
+private:
+ {{#if (hasSpecificResponse name)}}
+ chip::Callback::Callback<{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}ResponseCallback> * onSuccessCallback = new chip::Callback::Callback<{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}ResponseCallback>(On{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}Response, this);
+ {{else}}
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback = new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ {{/if}}
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback = new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ {{#chip_server_cluster_command_arguments}}
+ {{#if (isString type)}}
+ char * m{{asCamelCased label false}};
+ {{else}}
+ {{chipType}} m{{asCamelCased label false}};
+ {{/if}}
+ {{/chip_server_cluster_command_arguments}}
+};
+
+{{/chip_server_cluster_commands}}
+
+/*
+ * Discover Attributes
+ */
+class Discover{{asCamelCased name false}}Attributes: public ModelCommand
+{
+public:
+ Discover{{asCamelCased name false}}Attributes(): ModelCommand("discover")
+ {
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster ({{asHex parent.code 4}}) command (0x0C) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::{{asCamelCased name false}}Cluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback = new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback = new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+{{#chip_server_cluster_attributes}}
+/*
+ * Attribute {{asCamelCased name false}}
+ */
+class Read{{asCamelCased parent.name false}}{{asCamelCased name false}}: public ModelCommand
+{
+public:
+ Read{{asCamelCased parent.name false}}{{asCamelCased name false}}(): ModelCommand("read")
+ {
+ AddArgument("attr-name", "{{asDelimitedCommand (asCamelCased name)}}");
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster ({{asHex parent.code 4}}) command (0x00) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::{{asCamelCased parent.name false}}Cluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttribute{{asCamelCased name false}}(onSuccessCallback->Cancel(), onFailureCallback->Cancel());
+ }
+
+private:
+ chip::Callback::Callback<{{asCallbackAttributeType atomicTypeId}}AttributeCallback> * onSuccessCallback = new chip::Callback::Callback<{{asCallbackAttributeType atomicTypeId}}AttributeCallback>(On{{asCallbackAttributeType atomicTypeId}}AttributeResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback = new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+};
+
+{{#if (isWritableAttribute)}}
+class Write{{asCamelCased parent.name false}}{{asCamelCased name false}}: public ModelCommand
+{
+public:
+ Write{{asCamelCased parent.name false}}{{asCamelCased name false}}(): ModelCommand("write")
+ {
+ AddArgument("attr-name", "{{asDelimitedCommand (asCamelCased name)}}");
+ AddArgument("attr-value", {{asTypeMinValue type}}, {{asTypeMaxValue type}}, &mValue);
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster ({{asHex parent.code 4}}) command (0x01) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::{{asCamelCased parent.name false}}Cluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.WriteAttribute{{asCamelCased name false}}(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue);
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback = new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback = new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ {{chipType}} mValue;
+};
+
+{{/if}}
+{{#if (isReportableAttribute)}}
+class Report{{asCamelCased parent.name false}}{{asCamelCased name false}}: public ModelCommand
+{
+public:
+ Report{{asCamelCased parent.name false}}{{asCamelCased name false}}(): ModelCommand("report")
+ {
+ AddArgument("attr-name", "{{asDelimitedCommand (asCamelCased name)}}");
+ AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
+ AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval);
+ {{#unless (isDiscreteType)}}
+ AddArgument("change", {{asTypeMinValue type}}, {{asTypeMaxValue type}}, &mChange);
+ {{/unless}}
+ ModelCommand::AddArguments();
+ }
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster ({{asHex parent.code 4}}) command (0x06) on endpoint %" PRIu16, endpointId);
+
+ chip::Controller::{{asCamelCased parent.name false}}Cluster cluster;
+ cluster.Associate(device, endpointId);
+
+ CHIP_ERROR err = cluster.ReportAttribute{{asCamelCased name false}}(onReportCallback->Cancel());
+ if (err != CHIP_NO_ERROR)
+ {
+ return err;
+ }
+
+ return cluster.ConfigureAttribute{{asCamelCased name false}}(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, mMaxInterval{{#unless (isDiscreteType)}}, mChange{{/unless}});
+ }
+
+private:
+ chip::Callback::Callback<DefaultSuccessCallback> * onSuccessCallback = new chip::Callback::Callback<DefaultSuccessCallback>(OnDefaultSuccessResponse, this);
+ chip::Callback::Callback<DefaultFailureCallback> * onFailureCallback = new chip::Callback::Callback<DefaultFailureCallback>(OnDefaultFailureResponse, this);
+ chip::Callback::Callback<{{asCallbackAttributeType atomicTypeId}}AttributeCallback> * onReportCallback = new chip::Callback::Callback<{{asCallbackAttributeType atomicTypeId}}AttributeCallback>(On{{asCallbackAttributeType atomicTypeId}}AttributeResponse, this);
+ uint16_t mMinInterval;
+ uint16_t mMaxInterval;
+ {{#unless (isDiscreteType)}}
+ {{chipType}} mChange;
+ {{/unless}}
+};
+
+{{/if}}
+{{/chip_server_cluster_attributes}}
+{{/chip_clusters}}
+
+/*----------------------------------------------------------------------------*\
+| Register all Clusters commands |
+\*----------------------------------------------------------------------------*/
+{{#chip_clusters}}
+void registerCluster{{asCamelCased name false}}(Commands & commands)
+{
+ const char * clusterName = "{{asCamelCased name false}}";
+
+ commands_list clusterCommands = {
+ {{#chip_server_cluster_commands}}
+ make_unique<{{asCamelCased clusterName false}}{{asCamelCased name false}}>(),
+ {{/chip_server_cluster_commands}}
+ make_unique<Discover{{asCamelCased name false}}Attributes>(),
+ {{#chip_server_cluster_attributes}}
+ make_unique<Read{{asCamelCased parent.name false}}{{asCamelCased name false}}>(),
+ {{#if (isWritableAttribute)}}
+ make_unique<Write{{asCamelCased parent.name false}}{{asCamelCased name false}}>(),
+ {{/if}}
+ {{#if (isReportableAttribute)}}
+ make_unique<Report{{asCamelCased parent.name false}}{{asCamelCased name false}}>(),
+ {{/if}}
+ {{/chip_server_cluster_attributes}}
+ };
+
+ commands.Register(clusterName, clusterCommands);
+}
+{{/chip_clusters}}
+
+void registerClusters(Commands & commands)
+{
+{{#chip_clusters}}
+ registerCluster{{asCamelCased name false}}(commands);
+{{/chip_clusters}}
+}
diff --git a/examples/chip-tool/templates/helper.js b/examples/chip-tool/templates/helper.js
new file mode 100644
index 0000000..752a54a
--- /dev/null
+++ b/examples/chip-tool/templates/helper.js
@@ -0,0 +1,205 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Import helpers from zap core
+const zapPath = '../../../third_party/zap/repo/src-electron/';
+const queryImpexp = require(zapPath + 'db/query-impexp.js')
+const templateUtil = require(zapPath + 'generator/template-util.js')
+const zclHelper = require(zapPath + 'generator/helper-zcl.js')
+const zclQuery = require(zapPath + 'db/query-zcl.js')
+const cHelper = require(zapPath + 'generator/helper-c.js')
+
+const StringHelper = require('../../../src/app/zap-templates/common/StringHelper.js');
+const ChipTypesHelper = require('../../../src/app/zap-templates/common/ChipTypesHelper.js');
+
+function hasSpecificResponse(commandName)
+{
+ // Retrieve the clusterName and the clusterSide. If any if not available, an error will be thrown.
+ const clusterName = this.parent.name;
+ const clusterSide = this.parent.side;
+ if (clusterName == undefined || clusterSide == undefined) {
+ const error = 'chip_server_cluster_commands: Could not find relevant parent cluster.';
+ console.log(error);
+ throw error;
+ }
+
+ function filterCommand(cmd)
+ {
+ return cmd.clusterName == clusterName && cmd.name == (commandName + "Response");
+ }
+
+ function fn(pkgId)
+ {
+ const db = this.global.db;
+ return queryImpexp.exportendPointTypeIds(db, this.global.sessionId)
+ .then(endpointTypes => zclQuery.exportClustersAndEndpointDetailsFromEndpointTypes(db, endpointTypes))
+ .then(endpointsAndClusters => zclQuery.exportCommandDetailsFromAllEndpointTypesAndClusters(db, endpointsAndClusters))
+ .then(endpointCommands => endpointCommands.filter(filterCommand).length)
+ }
+
+ const promise = templateUtil.ensureZclPackageId(this).then(fn.bind(this)).catch(err => console.log(err));
+ return templateUtil.templatePromise(this.global, promise);
+}
+
+function asCallbackAttributeType(attributeType)
+{
+ switch (parseInt(attributeType)) {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ return 'Unsupported';
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ return 'Int8u';
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ return 'Int16u';
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ return 'Int32u';
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ return 'Int64u';
+ case 0x10: // bool / Boolean
+ return 'Boolean';
+ case 0x28: // int8 / Signed 8-bit integer
+ return 'Int8s';
+ case 0x29: // int16 / Signed 16-bit integer
+ return 'Int16s';
+ case 0x2B: // int32 / Signed 32-bit integer
+ return 'Int32s';
+ case 0x2F: // int64 / Signed 64-bit integer
+ return 'Int64s';
+ default:
+ error = 'Unhandled attribute type ' + attributeType;
+ throw error;
+ }
+}
+
+function asDelimitedCommand(name)
+{
+ return name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
+}
+
+function asTypeMinValue(type)
+{
+ function fn(pkgId)
+ {
+ const options = { 'hash' : {} };
+ this.isArray = false;
+ return zclHelper.asUnderlyingZclType.call(this, type, options).then(zclType => {
+ const basicType = ChipTypesHelper.asBasicType(zclType);
+ switch (basicType) {
+ case 'int8_t':
+ case 'int16_t':
+ case 'int32_t':
+ case 'int64_t':
+ return 'INT' + parseInt(basicType.slice(3)) + '_MIN';
+ case 'uint8_t':
+ case 'uint16_t':
+ case 'uint32_t':
+ case 'uint64_t':
+ return '0';
+ default:
+ error = 'Unhandled underlying type ' + zclType + ' for original type ' + type;
+ throw error;
+ }
+ })
+ }
+
+ const promise = templateUtil.ensureZclPackageId(this).then(fn.bind(this)).catch(err => console.log(err));
+ return templateUtil.templatePromise(this.global, promise);
+}
+
+function asTypeMaxValue(type)
+{
+ function fn(pkgId)
+ {
+ const options = { 'hash' : {} };
+ return zclHelper.asUnderlyingZclType.call(this, type, options).then(zclType => {
+ const basicType = ChipTypesHelper.asBasicType(zclType);
+ switch (basicType) {
+ case 'int8_t':
+ case 'int16_t':
+ case 'int32_t':
+ case 'int64_t':
+ return 'INT' + parseInt(basicType.slice(3)) + '_MAX';
+ case 'uint8_t':
+ case 'uint16_t':
+ case 'uint32_t':
+ case 'uint64_t':
+ return 'UINT' + parseInt(basicType.slice(4)) + '_MAX';
+ default:
+ return 'err';
+ error = 'Unhandled underlying type ' + zclType + ' for original type ' + type;
+ throw error;
+ }
+ })
+ }
+
+ const promise = templateUtil.ensureZclPackageId(this).then(fn.bind(this)).catch(err => console.log(err));
+ return templateUtil.templatePromise(this.global, promise);
+}
+
+//
+// Module exports
+//
+exports.hasSpecificResponse = hasSpecificResponse;
+exports.asCallbackAttributeType = asCallbackAttributeType;
+exports.asDelimitedCommand = asDelimitedCommand;
+exports.asTypeMinValue = asTypeMinValue;
+exports.asTypeMaxValue = asTypeMaxValue;
diff --git a/examples/chip-tool/templates/reporting-commands.zapt b/examples/chip-tool/templates/reporting-commands.zapt
new file mode 100644
index 0000000..11cd1c4
--- /dev/null
+++ b/examples/chip-tool/templates/reporting-commands.zapt
@@ -0,0 +1,83 @@
+{{> header}}
+
+#pragma once
+
+#include "ReportingCommand.h"
+
+
+typedef void (*UnsupportedAttributeCallback)(void * context);
+
+class Listen : public ReportingCommand
+{
+public:
+ Listen() : ReportingCommand("listen")
+ {
+ }
+
+ void AddReportCallbacks(uint8_t endpointId) override
+ {
+ chip::app::CHIPDeviceCallbacksMgr & callbacksMgr = chip::app::CHIPDeviceCallbacksMgr::GetInstance();
+{{#chip_clusters}}
+{{#chip_server_cluster_attributes}}
+{{#if (isReportableAttribute)}}
+ callbacksMgr.AddReportCallback(chip::kTestDeviceNodeId, endpointId, {{asHex parent.code 4}}, {{asHex attributeCode 4}}, onReport{{asCamelCased parent.name false}}{{asCamelCased name false}}Callback->Cancel());
+{{/if}}
+{{/chip_server_cluster_attributes}}
+{{/chip_clusters}}
+ }
+
+ static void OnDefaultSuccessResponse(void * context)
+ {
+ ChipLogProgress(chipTool, "Default Success Response");
+ }
+
+ static void OnDefaultFailureResponse(void * context, uint8_t status)
+ {
+ ChipLogProgress(chipTool, "Default Failure Response: 0x%02x", status);
+ }
+
+ static void OnUnsupportedAttributeResponse(void * context)
+ {
+ ChipLogError(chipTool, "Unsupported attribute Response. This should never happen !");
+ }
+
+ static void OnBooleanAttributeResponse(void * context, bool value)
+ {
+ ChipLogProgress(chipTool, "Boolean attribute Response: %d", value);
+ }
+
+ static void OnInt8uAttributeResponse(void * context, uint8_t value)
+ {
+ ChipLogProgress(chipTool, "Int8u attribute Response: %" PRIu8, value);
+ }
+
+ static void OnInt16uAttributeResponse(void * context, uint16_t value)
+ {
+ ChipLogProgress(chipTool, "Int16u attribute Response: %" PRIu16, value);
+ }
+
+ static void OnInt16sAttributeResponse(void * context, int16_t value)
+ {
+ ChipLogProgress(chipTool, "Int16s attribute Response: %" PRId16, value);
+ }
+
+private:
+{{#chip_clusters}}
+{{#chip_server_cluster_attributes}}
+{{#if (isReportableAttribute)}}
+ chip::Callback::Callback<{{asCallbackAttributeType atomicTypeId}}AttributeCallback> * onReport{{asCamelCased parent.name false}}{{asCamelCased name false}}Callback = new chip::Callback::Callback<{{asCallbackAttributeType atomicTypeId}}AttributeCallback>(On{{asCallbackAttributeType atomicTypeId}}AttributeResponse, this);
+{{/if}}
+{{/chip_server_cluster_attributes}}
+{{/chip_clusters}}
+};
+
+void registerCommandsReporting(Commands & commands)
+{
+ const char * clusterName = "Reporting";
+
+ commands_list clusterCommands = {
+ make_unique<Listen>(),
+ };
+
+ commands.Register(clusterName, clusterCommands);
+}
diff --git a/examples/chip-tool/templates/templates.json b/examples/chip-tool/templates/templates.json
new file mode 100644
index 0000000..92a2cc2
--- /dev/null
+++ b/examples/chip-tool/templates/templates.json
@@ -0,0 +1,37 @@
+{
+ "name": "CHIP Tool templates",
+ "version": "chip-v1",
+ "helpers": [
+ "../../../src/app/zap-templates/partials/helper.js",
+ "../../../src/app/zap-templates/common/StringHelper.js",
+ "../../../src/app/zap-templates/templates/chip/helper.js",
+ "helper.js"
+ ],
+ "override": "../../../src/app/zap-templates/common/override.js",
+ "partials": [
+ {
+ "name": "header",
+ "path": "../../../src/app/zap-templates/partials/header.zapt"
+ },
+ {
+ "name": "clusters_header",
+ "path": "../../../src/app/zap-templates/partials/clusters_header.zapt"
+ },
+ {
+ "name": "cluster_header",
+ "path": "../../../src/app/zap-templates/partials/cluster_header.zapt"
+ }
+ ],
+ "templates": [
+ {
+ "path": "commands.zapt",
+ "name": "Cluster Commands header",
+ "output": "examples/chip-tool/commands/clusters/Commands.h"
+ },
+ {
+ "path": "reporting-commands.zapt",
+ "name": "Reporting Commands header",
+ "output": "examples/chip-tool/commands/reporting/Commands.h"
+ }
+ ]
+}
diff --git a/examples/lighting-app/lighting-common/gen/CHIPClientCallbacks.cpp b/examples/lighting-app/lighting-common/gen/CHIPClientCallbacks.cpp
new file mode 100644
index 0000000..f5f88af
--- /dev/null
+++ b/examples/lighting-app/lighting-common/gen/CHIPClientCallbacks.cpp
@@ -0,0 +1,842 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include "gen/CHIPClientCallbacks.h"
+
+#include "gen/enums.h"
+#include <app/util/CHIPDeviceCallbacksMgr.h>
+#include <app/util/af-enums.h>
+#include <app/util/af.h>
+#include <app/util/basic-types.h>
+#include <core/CHIPEncoding.h>
+#include <support/SafeInt.h>
+#include <support/logging/CHIPLogging.h>
+
+using namespace ::chip;
+
+#define CHECK_MESSAGE_LENGTH(value) \
+ if (!chip::CanCastTo<uint16_t>(value)) \
+ { \
+ ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ if (messageLen < value) \
+ { \
+ ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
+
+#define GET_RESPONSE_CALLBACKS(name) \
+ Callback::Cancelable * onSuccessCallback = nullptr; \
+ Callback::Cancelable * onFailureCallback = nullptr; \
+ NodeId sourceId = emberAfCurrentCommand()->source; \
+ uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \
+ CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onSuccessCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing success callback", name); \
+ } \
+ \
+ if (onFailureCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing failure callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+#define GET_REPORT_CALLBACK(name) \
+ Callback::Cancelable * onReportCallback = nullptr; \
+ CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onReportCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing report callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+void LogStatus(uint8_t status)
+{
+ switch (status)
+ {
+ case EMBER_ZCL_STATUS_SUCCESS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_FIELD:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_VALUE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_READ_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_FOUND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_SELECTOR:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WRITE_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ACTION_DENIED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_TIMEOUT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ABORT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_LIMIT_REACHED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status);
+ break;
+ default:
+ ChipLogError(Zcl, "Unknow status: 0x%02x", status);
+ break;
+ }
+}
+
+// Singleton instance of the callbacks manager
+app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance();
+
+bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ ChipLogProgress(Zcl, "DefaultResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " CommandId: 0x%02x", commandId);
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback");
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, static_cast<uint8_t>(status));
+ }
+
+ return true;
+}
+
+bool emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadAttributesResponseCallback");
+
+ // struct readAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute read
+ // per read command. So if multiple attributes are read at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes read at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "WriteAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback");
+
+ // struct writeAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute written
+ // per write command. So if multiple attributes are written at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback");
+
+ // struct configureReportingResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute report
+ // per configure command. So if multiple attributes are configured at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback");
+
+ // struct readReportingConfigurationResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval);
+
+ // FIXME: unk is not supported yet.
+
+ Callback::Callback<ReadReportingConfigurationReportedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout);
+
+ Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ }
+ }
+
+ return true;
+}
+
+bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen,
+ bool extended)
+{
+ ChipLogProgress(Zcl, "DiscoverAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " extended: %d", extended);
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback");
+
+ // struct discoverAttributesResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+ }
+
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "emberAfReportAttributeCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ NodeId sourceId = emberAfCurrentCommand()->source;
+ ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId);
+
+ EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
+ ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId);
+
+ // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed.
+ Callback::Cancelable * onFailureCallback = nullptr;
+
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ GET_REPORT_CALLBACK("emberAfReportAttributesCallback");
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+
+ return true;
+}
diff --git a/examples/lighting-app/lighting-common/gen/CHIPClientCallbacks.h b/examples/lighting-app/lighting-common/gen/CHIPClientCallbacks.h
new file mode 100644
index 0000000..14a3742
--- /dev/null
+++ b/examples/lighting-app/lighting-common/gen/CHIPClientCallbacks.h
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#pragma once
+
+#include <inttypes.h>
+
+// Global Response Callbacks
+typedef void (*DefaultSuccessCallback)(void * context);
+typedef void (*DefaultFailureCallback)(void * context, uint8_t status);
+typedef void (*BooleanAttributeCallback)(void * context, bool value);
+typedef void (*Int8uAttributeCallback)(void * context, uint8_t value);
+typedef void (*Int8sAttributeCallback)(void * context, int8_t value);
+typedef void (*Int16uAttributeCallback)(void * context, uint16_t value);
+typedef void (*Int16sAttributeCallback)(void * context, int16_t value);
+typedef void (*Int32uAttributeCallback)(void * context, uint32_t value);
+typedef void (*Int32sAttributeCallback)(void * context, int32_t value);
+typedef void (*Int64uAttributeCallback)(void * context, uint64_t value);
+typedef void (*Int64sAttributeCallback)(void * context, int64_t value);
+typedef void (*ReadReportingConfigurationReportedCallback)(void * context, uint16_t minInterval, uint16_t maxInterval);
+typedef void (*ReadReportingConfigurationReceivedCallback)(void * context, uint16_t timeout);
+
+// Cluster Specific Response Callbacks
diff --git a/examples/lighting-app/lighting-common/gen/CHIPClustersObjc.h b/examples/lighting-app/lighting-common/gen/CHIPClustersObjc.h
new file mode 100644
index 0000000..53292c5
--- /dev/null
+++ b/examples/lighting-app/lighting-common/gen/CHIPClustersObjc.h
@@ -0,0 +1,99 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#ifndef CHIP_CLUSTERS_H
+#define CHIP_CLUSTERS_H
+
+#import <Foundation/Foundation.h>
+
+typedef void (^ResponseHandler)(NSError * _Nullable error, NSDictionary * _Nullable values);
+
+@class CHIPDevice;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPLevelControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPOnOff : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)off:(ResponseHandler)completionHandler;
+- (BOOL)on:(ResponseHandler)completionHandler;
+- (BOOL)toggle:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* CHIP_CLUSTERS_H */
diff --git a/examples/lighting-app/lighting-common/gen/CHIPClustersObjc.mm b/examples/lighting-app/lighting-common/gen/CHIPClustersObjc.mm
new file mode 100644
index 0000000..d08044a
--- /dev/null
+++ b/examples/lighting-app/lighting-common/gen/CHIPClustersObjc.mm
@@ -0,0 +1,748 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#import <Foundation/Foundation.h>
+
+#import "CHIPDevice.h"
+#import "CHIPDevice_Internal.h"
+#import "gen/CHIPClientCallbacks.h"
+#import "gen/CHIPClustersObjc.h"
+
+#include <controller/CHIPClusters.h>
+
+using namespace ::chip;
+
+class CHIPDefaultSuccessCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPDefaultSuccessCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultSuccessCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDefaultSuccessCallbackBridge * callback = reinterpret_cast<CHIPDefaultSuccessCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDefaultFailureCallbackBridge : public Callback::Callback<DefaultFailureCallback> {
+public:
+ CHIPDefaultFailureCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultFailureCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultFailureCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t status)
+ {
+ CHIPDefaultFailureCallbackBridge * callback = reinterpret_cast<CHIPDefaultFailureCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL" code:status userInfo:@ { NSLocalizedDescriptionKey : @"" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPUnsupportedAttributeCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPUnsupportedAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ {
+ }
+
+ ~CHIPUnsupportedAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPUnsupportedAttributeCallbackBridge * callback = reinterpret_cast<CHIPUnsupportedAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL"
+ code:0
+ userInfo:@ { NSLocalizedDescriptionKey : @"Unsuported attribute type" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPBooleanAttributeCallbackBridge : public Callback::Callback<BooleanAttributeCallback> {
+public:
+ CHIPBooleanAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<BooleanAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPBooleanAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, bool value)
+ {
+ CHIPBooleanAttributeCallbackBridge * callback = reinterpret_cast<CHIPBooleanAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithBool:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8uAttributeCallbackBridge : public Callback::Callback<Int8uAttributeCallback> {
+public:
+ CHIPInt8uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t value)
+ {
+ CHIPInt8uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8sAttributeCallbackBridge : public Callback::Callback<Int8sAttributeCallback> {
+public:
+ CHIPInt8sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int8_t value)
+ {
+ CHIPInt8sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16uAttributeCallbackBridge : public Callback::Callback<Int16uAttributeCallback> {
+public:
+ CHIPInt16uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t value)
+ {
+ CHIPInt16uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16sAttributeCallbackBridge : public Callback::Callback<Int16sAttributeCallback> {
+public:
+ CHIPInt16sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int16_t value)
+ {
+ CHIPInt16sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+@interface CHIPLevelControl ()
+
+@property (readonly) Controller::LevelControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPLevelControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Move(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveToLevel(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Step(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Stop(onSuccess->Cancel(), onFailure->Cancel(), optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StopWithOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentLevel(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentLevel(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPOnOff ()
+
+@property (readonly) Controller::OnOffCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPOnOff
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)off:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)on:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)toggle:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onReport = new CHIPBooleanAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
diff --git a/examples/lock-app/lock-common/gen/CHIPClientCallbacks.cpp b/examples/lock-app/lock-common/gen/CHIPClientCallbacks.cpp
new file mode 100644
index 0000000..f5f88af
--- /dev/null
+++ b/examples/lock-app/lock-common/gen/CHIPClientCallbacks.cpp
@@ -0,0 +1,842 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include "gen/CHIPClientCallbacks.h"
+
+#include "gen/enums.h"
+#include <app/util/CHIPDeviceCallbacksMgr.h>
+#include <app/util/af-enums.h>
+#include <app/util/af.h>
+#include <app/util/basic-types.h>
+#include <core/CHIPEncoding.h>
+#include <support/SafeInt.h>
+#include <support/logging/CHIPLogging.h>
+
+using namespace ::chip;
+
+#define CHECK_MESSAGE_LENGTH(value) \
+ if (!chip::CanCastTo<uint16_t>(value)) \
+ { \
+ ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ if (messageLen < value) \
+ { \
+ ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
+
+#define GET_RESPONSE_CALLBACKS(name) \
+ Callback::Cancelable * onSuccessCallback = nullptr; \
+ Callback::Cancelable * onFailureCallback = nullptr; \
+ NodeId sourceId = emberAfCurrentCommand()->source; \
+ uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \
+ CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onSuccessCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing success callback", name); \
+ } \
+ \
+ if (onFailureCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing failure callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+#define GET_REPORT_CALLBACK(name) \
+ Callback::Cancelable * onReportCallback = nullptr; \
+ CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onReportCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing report callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+void LogStatus(uint8_t status)
+{
+ switch (status)
+ {
+ case EMBER_ZCL_STATUS_SUCCESS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_FIELD:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_VALUE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_READ_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_FOUND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_SELECTOR:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WRITE_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ACTION_DENIED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_TIMEOUT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ABORT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_LIMIT_REACHED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status);
+ break;
+ default:
+ ChipLogError(Zcl, "Unknow status: 0x%02x", status);
+ break;
+ }
+}
+
+// Singleton instance of the callbacks manager
+app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance();
+
+bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ ChipLogProgress(Zcl, "DefaultResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " CommandId: 0x%02x", commandId);
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback");
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, static_cast<uint8_t>(status));
+ }
+
+ return true;
+}
+
+bool emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadAttributesResponseCallback");
+
+ // struct readAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute read
+ // per read command. So if multiple attributes are read at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes read at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "WriteAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback");
+
+ // struct writeAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute written
+ // per write command. So if multiple attributes are written at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback");
+
+ // struct configureReportingResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute report
+ // per configure command. So if multiple attributes are configured at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback");
+
+ // struct readReportingConfigurationResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval);
+
+ // FIXME: unk is not supported yet.
+
+ Callback::Callback<ReadReportingConfigurationReportedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout);
+
+ Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ }
+ }
+
+ return true;
+}
+
+bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen,
+ bool extended)
+{
+ ChipLogProgress(Zcl, "DiscoverAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " extended: %d", extended);
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback");
+
+ // struct discoverAttributesResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+ }
+
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "emberAfReportAttributeCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ NodeId sourceId = emberAfCurrentCommand()->source;
+ ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId);
+
+ EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
+ ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId);
+
+ // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed.
+ Callback::Cancelable * onFailureCallback = nullptr;
+
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ GET_REPORT_CALLBACK("emberAfReportAttributesCallback");
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+
+ return true;
+}
diff --git a/examples/lock-app/lock-common/gen/CHIPClientCallbacks.h b/examples/lock-app/lock-common/gen/CHIPClientCallbacks.h
new file mode 100644
index 0000000..14a3742
--- /dev/null
+++ b/examples/lock-app/lock-common/gen/CHIPClientCallbacks.h
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#pragma once
+
+#include <inttypes.h>
+
+// Global Response Callbacks
+typedef void (*DefaultSuccessCallback)(void * context);
+typedef void (*DefaultFailureCallback)(void * context, uint8_t status);
+typedef void (*BooleanAttributeCallback)(void * context, bool value);
+typedef void (*Int8uAttributeCallback)(void * context, uint8_t value);
+typedef void (*Int8sAttributeCallback)(void * context, int8_t value);
+typedef void (*Int16uAttributeCallback)(void * context, uint16_t value);
+typedef void (*Int16sAttributeCallback)(void * context, int16_t value);
+typedef void (*Int32uAttributeCallback)(void * context, uint32_t value);
+typedef void (*Int32sAttributeCallback)(void * context, int32_t value);
+typedef void (*Int64uAttributeCallback)(void * context, uint64_t value);
+typedef void (*Int64sAttributeCallback)(void * context, int64_t value);
+typedef void (*ReadReportingConfigurationReportedCallback)(void * context, uint16_t minInterval, uint16_t maxInterval);
+typedef void (*ReadReportingConfigurationReceivedCallback)(void * context, uint16_t timeout);
+
+// Cluster Specific Response Callbacks
diff --git a/examples/lock-app/lock-common/gen/CHIPClustersObjc.h b/examples/lock-app/lock-common/gen/CHIPClustersObjc.h
new file mode 100644
index 0000000..65ebec5
--- /dev/null
+++ b/examples/lock-app/lock-common/gen/CHIPClustersObjc.h
@@ -0,0 +1,52 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#ifndef CHIP_CLUSTERS_H
+#define CHIP_CLUSTERS_H
+
+#import <Foundation/Foundation.h>
+
+typedef void (^ResponseHandler)(NSError * _Nullable error, NSDictionary * _Nullable values);
+
+@class CHIPDevice;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPOnOff : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)off:(ResponseHandler)completionHandler;
+- (BOOL)on:(ResponseHandler)completionHandler;
+- (BOOL)toggle:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* CHIP_CLUSTERS_H */
diff --git a/examples/lock-app/lock-common/gen/CHIPClustersObjc.mm b/examples/lock-app/lock-common/gen/CHIPClustersObjc.mm
new file mode 100644
index 0000000..d6806cc
--- /dev/null
+++ b/examples/lock-app/lock-common/gen/CHIPClustersObjc.mm
@@ -0,0 +1,448 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#import <Foundation/Foundation.h>
+
+#import "CHIPDevice.h"
+#import "CHIPDevice_Internal.h"
+#import "gen/CHIPClientCallbacks.h"
+#import "gen/CHIPClustersObjc.h"
+
+#include <controller/CHIPClusters.h>
+
+using namespace ::chip;
+
+class CHIPDefaultSuccessCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPDefaultSuccessCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultSuccessCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDefaultSuccessCallbackBridge * callback = reinterpret_cast<CHIPDefaultSuccessCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDefaultFailureCallbackBridge : public Callback::Callback<DefaultFailureCallback> {
+public:
+ CHIPDefaultFailureCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultFailureCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultFailureCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t status)
+ {
+ CHIPDefaultFailureCallbackBridge * callback = reinterpret_cast<CHIPDefaultFailureCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL" code:status userInfo:@ { NSLocalizedDescriptionKey : @"" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPUnsupportedAttributeCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPUnsupportedAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ {
+ }
+
+ ~CHIPUnsupportedAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPUnsupportedAttributeCallbackBridge * callback = reinterpret_cast<CHIPUnsupportedAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL"
+ code:0
+ userInfo:@ { NSLocalizedDescriptionKey : @"Unsuported attribute type" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPBooleanAttributeCallbackBridge : public Callback::Callback<BooleanAttributeCallback> {
+public:
+ CHIPBooleanAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<BooleanAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPBooleanAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, bool value)
+ {
+ CHIPBooleanAttributeCallbackBridge * callback = reinterpret_cast<CHIPBooleanAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithBool:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8uAttributeCallbackBridge : public Callback::Callback<Int8uAttributeCallback> {
+public:
+ CHIPInt8uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t value)
+ {
+ CHIPInt8uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8sAttributeCallbackBridge : public Callback::Callback<Int8sAttributeCallback> {
+public:
+ CHIPInt8sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int8_t value)
+ {
+ CHIPInt8sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16uAttributeCallbackBridge : public Callback::Callback<Int16uAttributeCallback> {
+public:
+ CHIPInt16uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t value)
+ {
+ CHIPInt16uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16sAttributeCallbackBridge : public Callback::Callback<Int16sAttributeCallback> {
+public:
+ CHIPInt16sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int16_t value)
+ {
+ CHIPInt16sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+@interface CHIPOnOff ()
+
+@property (readonly) Controller::OnOffCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPOnOff
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)off:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)on:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)toggle:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onReport = new CHIPBooleanAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
diff --git a/examples/temperature-measurement-app/esp32/main/gen/CHIPClientCallbacks.cpp b/examples/temperature-measurement-app/esp32/main/gen/CHIPClientCallbacks.cpp
new file mode 100644
index 0000000..f5f88af
--- /dev/null
+++ b/examples/temperature-measurement-app/esp32/main/gen/CHIPClientCallbacks.cpp
@@ -0,0 +1,842 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include "gen/CHIPClientCallbacks.h"
+
+#include "gen/enums.h"
+#include <app/util/CHIPDeviceCallbacksMgr.h>
+#include <app/util/af-enums.h>
+#include <app/util/af.h>
+#include <app/util/basic-types.h>
+#include <core/CHIPEncoding.h>
+#include <support/SafeInt.h>
+#include <support/logging/CHIPLogging.h>
+
+using namespace ::chip;
+
+#define CHECK_MESSAGE_LENGTH(value) \
+ if (!chip::CanCastTo<uint16_t>(value)) \
+ { \
+ ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ if (messageLen < value) \
+ { \
+ ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
+
+#define GET_RESPONSE_CALLBACKS(name) \
+ Callback::Cancelable * onSuccessCallback = nullptr; \
+ Callback::Cancelable * onFailureCallback = nullptr; \
+ NodeId sourceId = emberAfCurrentCommand()->source; \
+ uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \
+ CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onSuccessCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing success callback", name); \
+ } \
+ \
+ if (onFailureCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing failure callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+#define GET_REPORT_CALLBACK(name) \
+ Callback::Cancelable * onReportCallback = nullptr; \
+ CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onReportCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing report callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+void LogStatus(uint8_t status)
+{
+ switch (status)
+ {
+ case EMBER_ZCL_STATUS_SUCCESS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_FIELD:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_VALUE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_READ_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_FOUND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_SELECTOR:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WRITE_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ACTION_DENIED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_TIMEOUT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ABORT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_LIMIT_REACHED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status);
+ break;
+ default:
+ ChipLogError(Zcl, "Unknow status: 0x%02x", status);
+ break;
+ }
+}
+
+// Singleton instance of the callbacks manager
+app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance();
+
+bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ ChipLogProgress(Zcl, "DefaultResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " CommandId: 0x%02x", commandId);
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback");
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, static_cast<uint8_t>(status));
+ }
+
+ return true;
+}
+
+bool emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadAttributesResponseCallback");
+
+ // struct readAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute read
+ // per read command. So if multiple attributes are read at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes read at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "WriteAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback");
+
+ // struct writeAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute written
+ // per write command. So if multiple attributes are written at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback");
+
+ // struct configureReportingResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute report
+ // per configure command. So if multiple attributes are configured at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback");
+
+ // struct readReportingConfigurationResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval);
+
+ // FIXME: unk is not supported yet.
+
+ Callback::Callback<ReadReportingConfigurationReportedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout);
+
+ Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ }
+ }
+
+ return true;
+}
+
+bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen,
+ bool extended)
+{
+ ChipLogProgress(Zcl, "DiscoverAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " extended: %d", extended);
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback");
+
+ // struct discoverAttributesResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+ }
+
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "emberAfReportAttributeCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ NodeId sourceId = emberAfCurrentCommand()->source;
+ ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId);
+
+ EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
+ ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId);
+
+ // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed.
+ Callback::Cancelable * onFailureCallback = nullptr;
+
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ GET_REPORT_CALLBACK("emberAfReportAttributesCallback");
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+
+ return true;
+}
diff --git a/examples/temperature-measurement-app/esp32/main/gen/CHIPClientCallbacks.h b/examples/temperature-measurement-app/esp32/main/gen/CHIPClientCallbacks.h
new file mode 100644
index 0000000..14a3742
--- /dev/null
+++ b/examples/temperature-measurement-app/esp32/main/gen/CHIPClientCallbacks.h
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#pragma once
+
+#include <inttypes.h>
+
+// Global Response Callbacks
+typedef void (*DefaultSuccessCallback)(void * context);
+typedef void (*DefaultFailureCallback)(void * context, uint8_t status);
+typedef void (*BooleanAttributeCallback)(void * context, bool value);
+typedef void (*Int8uAttributeCallback)(void * context, uint8_t value);
+typedef void (*Int8sAttributeCallback)(void * context, int8_t value);
+typedef void (*Int16uAttributeCallback)(void * context, uint16_t value);
+typedef void (*Int16sAttributeCallback)(void * context, int16_t value);
+typedef void (*Int32uAttributeCallback)(void * context, uint32_t value);
+typedef void (*Int32sAttributeCallback)(void * context, int32_t value);
+typedef void (*Int64uAttributeCallback)(void * context, uint64_t value);
+typedef void (*Int64sAttributeCallback)(void * context, int64_t value);
+typedef void (*ReadReportingConfigurationReportedCallback)(void * context, uint16_t minInterval, uint16_t maxInterval);
+typedef void (*ReadReportingConfigurationReceivedCallback)(void * context, uint16_t timeout);
+
+// Cluster Specific Response Callbacks
diff --git a/examples/temperature-measurement-app/esp32/main/gen/CHIPClustersObjc.h b/examples/temperature-measurement-app/esp32/main/gen/CHIPClustersObjc.h
new file mode 100644
index 0000000..2e03369
--- /dev/null
+++ b/examples/temperature-measurement-app/esp32/main/gen/CHIPClustersObjc.h
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#ifndef CHIP_CLUSTERS_H
+#define CHIP_CLUSTERS_H
+
+#import <Foundation/Foundation.h>
+
+typedef void (^ResponseHandler)(NSError * _Nullable error, NSDictionary * _Nullable values);
+
+@class CHIPDevice;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBasic : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)resetToFactoryDefaults:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeZclVersion:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePowerSource:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPTemperatureMeasurement : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+
+- (BOOL)readAttributeMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeMeasuredValue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(int16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeMeasuredValue:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeMinMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeMaxMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* CHIP_CLUSTERS_H */
diff --git a/examples/temperature-measurement-app/esp32/main/gen/CHIPClustersObjc.mm b/examples/temperature-measurement-app/esp32/main/gen/CHIPClustersObjc.mm
new file mode 100644
index 0000000..324192e
--- /dev/null
+++ b/examples/temperature-measurement-app/esp32/main/gen/CHIPClustersObjc.mm
@@ -0,0 +1,543 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#import <Foundation/Foundation.h>
+
+#import "CHIPDevice.h"
+#import "CHIPDevice_Internal.h"
+#import "gen/CHIPClientCallbacks.h"
+#import "gen/CHIPClustersObjc.h"
+
+#include <controller/CHIPClusters.h>
+
+using namespace ::chip;
+
+class CHIPDefaultSuccessCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPDefaultSuccessCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultSuccessCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDefaultSuccessCallbackBridge * callback = reinterpret_cast<CHIPDefaultSuccessCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDefaultFailureCallbackBridge : public Callback::Callback<DefaultFailureCallback> {
+public:
+ CHIPDefaultFailureCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultFailureCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultFailureCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t status)
+ {
+ CHIPDefaultFailureCallbackBridge * callback = reinterpret_cast<CHIPDefaultFailureCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL" code:status userInfo:@ { NSLocalizedDescriptionKey : @"" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPUnsupportedAttributeCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPUnsupportedAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ {
+ }
+
+ ~CHIPUnsupportedAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPUnsupportedAttributeCallbackBridge * callback = reinterpret_cast<CHIPUnsupportedAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL"
+ code:0
+ userInfo:@ { NSLocalizedDescriptionKey : @"Unsuported attribute type" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPBooleanAttributeCallbackBridge : public Callback::Callback<BooleanAttributeCallback> {
+public:
+ CHIPBooleanAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<BooleanAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPBooleanAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, bool value)
+ {
+ CHIPBooleanAttributeCallbackBridge * callback = reinterpret_cast<CHIPBooleanAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithBool:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8uAttributeCallbackBridge : public Callback::Callback<Int8uAttributeCallback> {
+public:
+ CHIPInt8uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t value)
+ {
+ CHIPInt8uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8sAttributeCallbackBridge : public Callback::Callback<Int8sAttributeCallback> {
+public:
+ CHIPInt8sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int8_t value)
+ {
+ CHIPInt8sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16uAttributeCallbackBridge : public Callback::Callback<Int16uAttributeCallback> {
+public:
+ CHIPInt16uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t value)
+ {
+ CHIPInt16uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16sAttributeCallbackBridge : public Callback::Callback<Int16sAttributeCallback> {
+public:
+ CHIPInt16sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int16_t value)
+ {
+ CHIPInt16sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+@interface CHIPBasic ()
+
+@property (readonly) Controller::BasicCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBasic
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)resetToFactoryDefaults:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ResetToFactoryDefaults(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeZclVersion:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeZclVersion(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePowerSource:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePowerSource(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPTemperatureMeasurement ()
+
+@property (readonly) Controller::TemperatureMeasurementCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPTemperatureMeasurement
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)readAttributeMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeMeasuredValue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(int16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeMeasuredValue(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeMeasuredValue:(ResponseHandler)reportHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onReport = new CHIPInt16sAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeMeasuredValue(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeMinMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMinMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeMaxMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMaxMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
diff --git a/scripts/tools/zap_generate_chip_tool.sh b/scripts/tools/zap_generate_chip_tool.sh
new file mode 100755
index 0000000..7bb81ea
--- /dev/null
+++ b/scripts/tools/zap_generate_chip_tool.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+#
+# Copyright (c) 2020 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+ZAP_TEMPLATES=$PWD/src/app/zap-templates
+cd ./third_party/zap/repo/
+node ./src-script/zap-generate.js -z "$ZAP_TEMPLATES"/zcl/zcl.json -g ../../../examples/chip-tool/templates/templates.json -i ../../../examples/chip-tool/chip-tool.zap -o ../../../
+
+# Check if clang-format is available
+if command -v clang-format &>/dev/null; then
+ clang-format -i ../../../examples/chip-tool/commands/clusters/*
+ clang-format -i ../../../examples/chip-tool/commands/reporting/*
+fi
diff --git a/scripts/tools/zap_regen_all.py b/scripts/tools/zap_regen_all.py
index 62c2e15..ce8711c 100755
--- a/scripts/tools/zap_regen_all.py
+++ b/scripts/tools/zap_regen_all.py
@@ -33,5 +33,10 @@
os.system("./scripts/tools/zap_generate_chip.sh")
+os.system("./scripts/tools/zap_generate_chip_tool.sh")
+
for path in Path('./examples').rglob('*.zap'):
os.system("./scripts/tools/zap_generate.sh " + str(path))
+
+for path in Path('./src/darwin').rglob('*.zap'):
+ os.system("./scripts/tools/zap_generate.sh " + str(path))
diff --git a/src/app/chip-zcl-zpro-codec-api.h b/src/app/chip-zcl-zpro-codec-api.h
index 81cdcee..55f92ec 100644
--- a/src/app/chip-zcl-zpro-codec-api.h
+++ b/src/app/chip-zcl-zpro-codec-api.h
@@ -60,50 +60,58 @@
* @brief
* Encode an BarrierControlGoToPercent command for Barrier Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBarrierControlClusterBarrierControlGoToPercentCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeBarrierControlClusterBarrierControlGoToPercentCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t percentOpen);
/**
* @brief
* Encode an BarrierControlStop command for Barrier Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBarrierControlClusterBarrierControlStopCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBarrierControlClusterBarrierControlStopCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Barrier Control server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBarrierControlClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBarrierControlClusterDiscoverAttributes(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Barrier Control server read command for the barrier moving state attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierMovingStateAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierMovingStateAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Barrier Control server read command for the barrier safety status attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierSafetyStatusAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierSafetyStatusAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Barrier Control server read command for the barrier capabilities attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierCapabilitiesAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierCapabilitiesAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Barrier Control server read command for the barrier position attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierPositionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierPositionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Barrier Control server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBarrierControlClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBarrierControlClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster Basic | 0x0000 |
@@ -122,37 +130,39 @@
* @brief
* Encode an MfgSpecificPing command for Basic server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBasicClusterMfgSpecificPingCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBasicClusterMfgSpecificPingCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode an ResetToFactoryDefaults command for Basic server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBasicClusterResetToFactoryDefaultsCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBasicClusterResetToFactoryDefaultsCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Basic server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBasicClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBasicClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Basic server read command for the ZCL version attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBasicClusterReadZclVersionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBasicClusterReadZclVersionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Basic server read command for the power source attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBasicClusterReadPowerSourceAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBasicClusterReadPowerSourceAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Basic server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBasicClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBasicClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster Binding | 0xF000 |
@@ -169,29 +179,30 @@
* @brief
* Encode an Bind command for Binding server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBindingClusterBindCommand(chip::EndpointId destinationEndpoint, chip::NodeId nodeId,
- chip::GroupId groupId, chip::EndpointId endpointId,
- chip::ClusterId clusterId);
+chip::System::PacketBufferHandle encodeBindingClusterBindCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ chip::NodeId nodeId, chip::GroupId groupId,
+ chip::EndpointId endpointId, chip::ClusterId clusterId);
/**
* @brief
* Encode an Unbind command for Binding server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBindingClusterUnbindCommand(chip::EndpointId destinationEndpoint, chip::NodeId nodeId,
- chip::GroupId groupId, chip::EndpointId endpointId,
- chip::ClusterId clusterId);
+chip::System::PacketBufferHandle encodeBindingClusterUnbindCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ chip::NodeId nodeId, chip::GroupId groupId,
+ chip::EndpointId endpointId, chip::ClusterId clusterId);
/**
* @brief
* Encode a Binding server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBindingClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBindingClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Binding server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeBindingClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeBindingClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster ColorControl | 0x0300 |
@@ -270,33 +281,32 @@
* @brief
* Encode an MoveColor command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterMoveColorCommand(chip::EndpointId destinationEndpoint, int16_t rateX,
- int16_t rateY, uint8_t optionsMask,
+chip::System::PacketBufferHandle encodeColorControlClusterMoveColorCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ int16_t rateX, int16_t rateY, uint8_t optionsMask,
uint8_t optionsOverride);
/**
* @brief
* Encode an MoveColorTemperature command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterMoveColorTemperatureCommand(chip::EndpointId destinationEndpoint,
- uint8_t moveMode, uint16_t rate,
- uint16_t colorTemperatureMinimum,
- uint16_t colorTemperatureMaximum,
- uint8_t optionsMask, uint8_t optionsOverride);
+chip::System::PacketBufferHandle encodeColorControlClusterMoveColorTemperatureCommand(
+ uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t moveMode, uint16_t rate, uint16_t colorTemperatureMinimum,
+ uint16_t colorTemperatureMaximum, uint8_t optionsMask, uint8_t optionsOverride);
/**
* @brief
* Encode an MoveHue command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterMoveHueCommand(chip::EndpointId destinationEndpoint, uint8_t moveMode,
- uint8_t rate, uint8_t optionsMask,
+chip::System::PacketBufferHandle encodeColorControlClusterMoveHueCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint8_t moveMode, uint8_t rate, uint8_t optionsMask,
uint8_t optionsOverride);
/**
* @brief
* Encode an MoveSaturation command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterMoveSaturationCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeColorControlClusterMoveSaturationCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t moveMode, uint8_t rate, uint8_t optionsMask,
uint8_t optionsOverride);
@@ -304,24 +314,26 @@
* @brief
* Encode an MoveToColor command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterMoveToColorCommand(chip::EndpointId destinationEndpoint, uint16_t colorX,
- uint16_t colorY, uint16_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride);
+chip::System::PacketBufferHandle encodeColorControlClusterMoveToColorCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t colorX, uint16_t colorY,
+ uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride);
/**
* @brief
* Encode an MoveToColorTemperature command for Color Control server into buffer including the APS frame
*/
chip::System::PacketBufferHandle
-encodeColorControlClusterMoveToColorTemperatureCommand(chip::EndpointId destinationEndpoint, uint16_t colorTemperature,
- uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride);
+encodeColorControlClusterMoveToColorTemperatureCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t colorTemperature, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride);
/**
* @brief
* Encode an MoveToHue command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterMoveToHueCommand(chip::EndpointId destinationEndpoint, uint8_t hue,
- uint8_t direction, uint16_t transitionTime,
+chip::System::PacketBufferHandle encodeColorControlClusterMoveToHueCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint8_t hue, uint8_t direction, uint16_t transitionTime,
uint8_t optionsMask, uint8_t optionsOverride);
/**
@@ -329,14 +341,16 @@
* Encode an MoveToHueAndSaturation command for Color Control server into buffer including the APS frame
*/
chip::System::PacketBufferHandle
-encodeColorControlClusterMoveToHueAndSaturationCommand(chip::EndpointId destinationEndpoint, uint8_t hue, uint8_t saturation,
- uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride);
+encodeColorControlClusterMoveToHueAndSaturationCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t hue,
+ uint8_t saturation, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride);
/**
* @brief
* Encode an MoveToSaturation command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterMoveToSaturationCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeColorControlClusterMoveToSaturationCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t saturation, uint16_t transitionTime,
uint8_t optionsMask, uint8_t optionsOverride);
@@ -344,8 +358,8 @@
* @brief
* Encode an StepColor command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterStepColorCommand(chip::EndpointId destinationEndpoint, int16_t stepX,
- int16_t stepY, uint16_t transitionTime,
+chip::System::PacketBufferHandle encodeColorControlClusterStepColorCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ int16_t stepX, int16_t stepY, uint16_t transitionTime,
uint8_t optionsMask, uint8_t optionsOverride);
/**
@@ -353,22 +367,23 @@
* Encode an StepColorTemperature command for Color Control server into buffer including the APS frame
*/
chip::System::PacketBufferHandle encodeColorControlClusterStepColorTemperatureCommand(
- chip::EndpointId destinationEndpoint, uint8_t stepMode, uint16_t stepSize, uint16_t transitionTime,
+ uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t stepMode, uint16_t stepSize, uint16_t transitionTime,
uint16_t colorTemperatureMinimum, uint16_t colorTemperatureMaximum, uint8_t optionsMask, uint8_t optionsOverride);
/**
* @brief
* Encode an StepHue command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterStepHueCommand(chip::EndpointId destinationEndpoint, uint8_t stepMode,
- uint8_t stepSize, uint8_t transitionTime,
+chip::System::PacketBufferHandle encodeColorControlClusterStepHueCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint8_t stepMode, uint8_t stepSize, uint8_t transitionTime,
uint8_t optionsMask, uint8_t optionsOverride);
/**
* @brief
* Encode an StepSaturation command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterStepSaturationCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeColorControlClusterStepSaturationCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t stepMode, uint8_t stepSize,
uint8_t transitionTime, uint8_t optionsMask,
uint8_t optionsOverride);
@@ -377,426 +392,484 @@
* @brief
* Encode an StopMoveStep command for Color Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterStopMoveStepCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeColorControlClusterStopMoveStepCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
uint8_t optionsMask, uint8_t optionsOverride);
/**
* @brief
* Encode a Color Control server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the current hue attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentHueAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentHueAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
- * Encode a Color Control server report command for the current hue attribute into buffer including the APS frame
+ * Encode a Color Control server configure report command for the current hue attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReportCurrentHueAttribute(chip::EndpointId destinationEndpoint,
- uint16_t minInterval, uint16_t maxInterval,
- uint8_t change);
+chip::System::PacketBufferHandle encodeColorControlClusterConfigureCurrentHueAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval,
+ uint8_t change);
/**
* @brief
* Encode a Color Control server read command for the current saturation attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentSaturationAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentSaturationAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
- * Encode a Color Control server report command for the current saturation attribute into buffer including the APS frame
+ * Encode a Color Control server configure report command for the current saturation attribute into buffer including the APS
+ * frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReportCurrentSaturationAttribute(chip::EndpointId destinationEndpoint,
- uint16_t minInterval,
- uint16_t maxInterval, uint8_t change);
+chip::System::PacketBufferHandle encodeColorControlClusterConfigureCurrentSaturationAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
+ uint16_t minInterval,
+ uint16_t maxInterval, uint8_t change);
/**
* @brief
* Encode a Color Control server read command for the remaining time attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadRemainingTimeAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadRemainingTimeAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the current x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentXAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentXAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
- * Encode a Color Control server report command for the current x attribute into buffer including the APS frame
+ * Encode a Color Control server configure report command for the current x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReportCurrentXAttribute(chip::EndpointId destinationEndpoint,
- uint16_t minInterval, uint16_t maxInterval,
- uint16_t change);
+chip::System::PacketBufferHandle encodeColorControlClusterConfigureCurrentXAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval,
+ uint16_t change);
/**
* @brief
* Encode a Color Control server read command for the current y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentYAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentYAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
- * Encode a Color Control server report command for the current y attribute into buffer including the APS frame
+ * Encode a Color Control server configure report command for the current y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReportCurrentYAttribute(chip::EndpointId destinationEndpoint,
- uint16_t minInterval, uint16_t maxInterval,
- uint16_t change);
+chip::System::PacketBufferHandle encodeColorControlClusterConfigureCurrentYAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval,
+ uint16_t change);
/**
* @brief
* Encode a Color Control server read command for the drift compensation attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadDriftCompensationAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadDriftCompensationAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the compensation text attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadCompensationTextAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadCompensationTextAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the color temperature attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorTemperatureAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorTemperatureAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
- * Encode a Color Control server report command for the color temperature attribute into buffer including the APS frame
+ * Encode a Color Control server configure report command for the color temperature attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReportColorTemperatureAttribute(chip::EndpointId destinationEndpoint,
- uint16_t minInterval,
- uint16_t maxInterval, uint16_t change);
+chip::System::PacketBufferHandle encodeColorControlClusterConfigureColorTemperatureAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
+ uint16_t minInterval,
+ uint16_t maxInterval, uint16_t change);
/**
* @brief
* Encode a Color Control server read command for the color mode attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorModeAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorModeAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the color control options attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorControlOptionsAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorControlOptionsAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color control options attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorControlOptionsAttribute(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeColorControlClusterWriteColorControlOptionsAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t colorControlOptions);
/**
* @brief
* Encode a Color Control server read command for the number of primaries attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadNumberOfPrimariesAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadNumberOfPrimariesAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 1 x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary1XAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary1XAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 1 y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary1YAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary1YAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 1 intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary1IntensityAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary1IntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 2 x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary2XAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary2XAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 2 y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary2YAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary2YAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 2 intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary2IntensityAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary2IntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 3 x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary3XAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary3XAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 3 y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary3YAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary3YAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 3 intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary3IntensityAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary3IntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 4 x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary4XAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary4XAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 4 y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary4YAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary4YAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 4 intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary4IntensityAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary4IntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 5 x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary5XAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary5XAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 5 y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary5YAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary5YAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 5 intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary5IntensityAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary5IntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 6 x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary6XAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary6XAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 6 y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary6YAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary6YAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the primary 6 intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary6IntensityAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary6IntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the white point x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadWhitePointXAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadWhitePointXAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the white point x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteWhitePointXAttribute(chip::EndpointId destinationEndpoint,
- uint16_t whitePointX);
+chip::System::PacketBufferHandle
+encodeColorControlClusterWriteWhitePointXAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t whitePointX);
/**
* @brief
* Encode a Color Control server read command for the white point y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadWhitePointYAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadWhitePointYAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the white point y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteWhitePointYAttribute(chip::EndpointId destinationEndpoint,
- uint16_t whitePointY);
+chip::System::PacketBufferHandle
+encodeColorControlClusterWriteWhitePointYAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t whitePointY);
/**
* @brief
* Encode a Color Control server read command for the color point r x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointRXAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointRXAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color point r x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointRXAttribute(chip::EndpointId destinationEndpoint,
- uint16_t colorPointRX);
+chip::System::PacketBufferHandle
+encodeColorControlClusterWriteColorPointRXAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointRX);
/**
* @brief
* Encode a Color Control server read command for the color point r y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointRYAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointRYAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color point r y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointRYAttribute(chip::EndpointId destinationEndpoint,
- uint16_t colorPointRY);
+chip::System::PacketBufferHandle
+encodeColorControlClusterWriteColorPointRYAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointRY);
/**
* @brief
* Encode a Color Control server read command for the color point r intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointRIntensityAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointRIntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color point r intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointRIntensityAttribute(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointRIntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t colorPointRIntensity);
/**
* @brief
* Encode a Color Control server read command for the color point g x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointGXAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointGXAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color point g x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointGXAttribute(chip::EndpointId destinationEndpoint,
- uint16_t colorPointGX);
+chip::System::PacketBufferHandle
+encodeColorControlClusterWriteColorPointGXAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointGX);
/**
* @brief
* Encode a Color Control server read command for the color point g y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointGYAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointGYAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color point g y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointGYAttribute(chip::EndpointId destinationEndpoint,
- uint16_t colorPointGY);
+chip::System::PacketBufferHandle
+encodeColorControlClusterWriteColorPointGYAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointGY);
/**
* @brief
* Encode a Color Control server read command for the color point g intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointGIntensityAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointGIntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color point g intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointGIntensityAttribute(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointGIntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t colorPointGIntensity);
/**
* @brief
* Encode a Color Control server read command for the color point b x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointBXAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointBXAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color point b x attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointBXAttribute(chip::EndpointId destinationEndpoint,
- uint16_t colorPointBX);
+chip::System::PacketBufferHandle
+encodeColorControlClusterWriteColorPointBXAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointBX);
/**
* @brief
* Encode a Color Control server read command for the color point b y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointBYAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointBYAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color point b y attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointBYAttribute(chip::EndpointId destinationEndpoint,
- uint16_t colorPointBY);
+chip::System::PacketBufferHandle
+encodeColorControlClusterWriteColorPointBYAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointBY);
/**
* @brief
* Encode a Color Control server read command for the color point b intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointBIntensityAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointBIntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server write command for the color point b intensity attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointBIntensityAttribute(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointBIntensityAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t colorPointBIntensity);
/**
* @brief
* Encode a Color Control server read command for the enhanced current hue attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadEnhancedCurrentHueAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadEnhancedCurrentHueAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the enhanced color mode attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadEnhancedColorModeAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadEnhancedColorModeAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the color loop active attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorLoopActiveAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorLoopActiveAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the color loop direction attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorLoopDirectionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorLoopDirectionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the color loop time attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorLoopTimeAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorLoopTimeAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the color capabilities attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorCapabilitiesAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorCapabilitiesAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the color temp physical min attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMinAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMinAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Color Control server read command for the color temp physical max attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMaxAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMaxAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
@@ -804,7 +877,7 @@
* APS frame
*/
chip::System::PacketBufferHandle
-encodeColorControlClusterReadCoupleColorTempToLevelMinMiredsAttribute(chip::EndpointId destinationEndpoint);
+encodeColorControlClusterReadCoupleColorTempToLevelMinMiredsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
@@ -812,7 +885,7 @@
* frame
*/
chip::System::PacketBufferHandle
-encodeColorControlClusterReadStartUpColorTemperatureMiredsAttribute(chip::EndpointId destinationEndpoint);
+encodeColorControlClusterReadStartUpColorTemperatureMiredsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
@@ -820,14 +893,15 @@
* frame
*/
chip::System::PacketBufferHandle
-encodeColorControlClusterWriteStartUpColorTemperatureMiredsAttribute(chip::EndpointId destinationEndpoint,
+encodeColorControlClusterWriteStartUpColorTemperatureMiredsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
uint16_t startUpColorTemperatureMireds);
/**
* @brief
* Encode a Color Control server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeColorControlClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeColorControlClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster DoorLock | 0x0101 |
@@ -868,143 +942,155 @@
* @brief
* Encode an ClearAllPins command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterClearAllPinsCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeDoorLockClusterClearAllPinsCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode an ClearAllRfids command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterClearAllRfidsCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeDoorLockClusterClearAllRfidsCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode an ClearHolidaySchedule command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterClearHolidayScheduleCommand(chip::EndpointId destinationEndpoint,
- uint8_t scheduleId);
+chip::System::PacketBufferHandle
+encodeDoorLockClusterClearHolidayScheduleCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t scheduleId);
/**
* @brief
* Encode an ClearPin command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterClearPinCommand(chip::EndpointId destinationEndpoint, uint16_t userId);
+chip::System::PacketBufferHandle encodeDoorLockClusterClearPinCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t userId);
/**
* @brief
* Encode an ClearRfid command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterClearRfidCommand(chip::EndpointId destinationEndpoint, uint16_t userId);
+chip::System::PacketBufferHandle encodeDoorLockClusterClearRfidCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t userId);
/**
* @brief
* Encode an ClearWeekdaySchedule command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterClearWeekdayScheduleCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeDoorLockClusterClearWeekdayScheduleCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t scheduleId, uint16_t userId);
/**
* @brief
* Encode an ClearYeardaySchedule command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterClearYeardayScheduleCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeDoorLockClusterClearYeardayScheduleCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t scheduleId, uint16_t userId);
/**
* @brief
* Encode an GetHolidaySchedule command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterGetHolidayScheduleCommand(chip::EndpointId destinationEndpoint,
- uint8_t scheduleId);
+chip::System::PacketBufferHandle
+encodeDoorLockClusterGetHolidayScheduleCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t scheduleId);
/**
* @brief
* Encode an GetLogRecord command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterGetLogRecordCommand(chip::EndpointId destinationEndpoint, uint16_t logIndex);
+chip::System::PacketBufferHandle encodeDoorLockClusterGetLogRecordCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t logIndex);
/**
* @brief
* Encode an GetPin command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterGetPinCommand(chip::EndpointId destinationEndpoint, uint16_t userId);
+chip::System::PacketBufferHandle encodeDoorLockClusterGetPinCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t userId);
/**
* @brief
* Encode an GetRfid command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterGetRfidCommand(chip::EndpointId destinationEndpoint, uint16_t userId);
+chip::System::PacketBufferHandle encodeDoorLockClusterGetRfidCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t userId);
/**
* @brief
* Encode an GetUserType command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterGetUserTypeCommand(chip::EndpointId destinationEndpoint, uint16_t userId);
+chip::System::PacketBufferHandle encodeDoorLockClusterGetUserTypeCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t userId);
/**
* @brief
* Encode an GetWeekdaySchedule command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterGetWeekdayScheduleCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeDoorLockClusterGetWeekdayScheduleCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t scheduleId, uint16_t userId);
/**
* @brief
* Encode an GetYeardaySchedule command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterGetYeardayScheduleCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeDoorLockClusterGetYeardayScheduleCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t scheduleId, uint16_t userId);
/**
* @brief
* Encode an LockDoor command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterLockDoorCommand(chip::EndpointId destinationEndpoint, char * pin);
+chip::System::PacketBufferHandle encodeDoorLockClusterLockDoorCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ char * pin);
/**
* @brief
* Encode an SetHolidaySchedule command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterSetHolidayScheduleCommand(chip::EndpointId destinationEndpoint,
- uint8_t scheduleId, uint32_t localStartTime,
- uint32_t localEndTime,
- uint8_t operatingModeDuringHoliday);
+chip::System::PacketBufferHandle
+encodeDoorLockClusterSetHolidayScheduleCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t scheduleId,
+ uint32_t localStartTime, uint32_t localEndTime, uint8_t operatingModeDuringHoliday);
/**
* @brief
* Encode an SetPin command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterSetPinCommand(chip::EndpointId destinationEndpoint, uint16_t userId,
- uint8_t userStatus, uint8_t userType, char * pin);
+chip::System::PacketBufferHandle encodeDoorLockClusterSetPinCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t userId, uint8_t userStatus, uint8_t userType,
+ char * pin);
/**
* @brief
* Encode an SetRfid command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterSetRfidCommand(chip::EndpointId destinationEndpoint, uint16_t userId,
- uint8_t userStatus, uint8_t userType, char * id);
+chip::System::PacketBufferHandle encodeDoorLockClusterSetRfidCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t userId, uint8_t userStatus, uint8_t userType,
+ char * id);
/**
* @brief
* Encode an SetUserType command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterSetUserTypeCommand(chip::EndpointId destinationEndpoint, uint16_t userId,
- uint8_t userType);
+chip::System::PacketBufferHandle encodeDoorLockClusterSetUserTypeCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t userId, uint8_t userType);
/**
* @brief
* Encode an SetWeekdaySchedule command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterSetWeekdayScheduleCommand(chip::EndpointId destinationEndpoint,
- uint8_t scheduleId, uint16_t userId,
- uint8_t daysMask, uint8_t startHour,
- uint8_t startMinute, uint8_t endHour,
- uint8_t endMinute);
+chip::System::PacketBufferHandle
+encodeDoorLockClusterSetWeekdayScheduleCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t scheduleId,
+ uint16_t userId, uint8_t daysMask, uint8_t startHour, uint8_t startMinute,
+ uint8_t endHour, uint8_t endMinute);
/**
* @brief
* Encode an SetYeardaySchedule command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterSetYeardayScheduleCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeDoorLockClusterSetYeardayScheduleCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t scheduleId, uint16_t userId,
uint32_t localStartTime, uint32_t localEndTime);
@@ -1012,51 +1098,55 @@
* @brief
* Encode an UnlockDoor command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterUnlockDoorCommand(chip::EndpointId destinationEndpoint, char * pin);
+chip::System::PacketBufferHandle encodeDoorLockClusterUnlockDoorCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ char * pin);
/**
* @brief
* Encode an UnlockWithTimeout command for Door Lock server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterUnlockWithTimeoutCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeDoorLockClusterUnlockWithTimeoutCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
uint16_t timeoutInSeconds, char * pin);
/**
* @brief
* Encode a Door Lock server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeDoorLockClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Door Lock server read command for the lock state attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterReadLockStateAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeDoorLockClusterReadLockStateAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
- * Encode a Door Lock server report command for the lock state attribute into buffer including the APS frame
+ * Encode a Door Lock server configure report command for the lock state attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterReportLockStateAttribute(chip::EndpointId destinationEndpoint,
- uint16_t minInterval, uint16_t maxInterval);
+chip::System::PacketBufferHandle encodeDoorLockClusterConfigureLockStateAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval);
/**
* @brief
* Encode a Door Lock server read command for the lock type attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterReadLockTypeAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeDoorLockClusterReadLockTypeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Door Lock server read command for the actuator enabled attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterReadActuatorEnabledAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeDoorLockClusterReadActuatorEnabledAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Door Lock server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeDoorLockClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeDoorLockClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster Groups | 0x0004 |
@@ -1078,58 +1168,62 @@
* @brief
* Encode an AddGroup command for Groups server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeGroupsClusterAddGroupCommand(chip::EndpointId destinationEndpoint, uint16_t groupId,
- char * groupName);
+chip::System::PacketBufferHandle encodeGroupsClusterAddGroupCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t groupId, char * groupName);
/**
* @brief
* Encode an AddGroupIfIdentifying command for Groups server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeGroupsClusterAddGroupIfIdentifyingCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeGroupsClusterAddGroupIfIdentifyingCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint16_t groupId, char * groupName);
/**
* @brief
* Encode an GetGroupMembership command for Groups server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeGroupsClusterGetGroupMembershipCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeGroupsClusterGetGroupMembershipCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
uint8_t groupCount, uint16_t groupList);
/**
* @brief
* Encode an RemoveAllGroups command for Groups server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeGroupsClusterRemoveAllGroupsCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeGroupsClusterRemoveAllGroupsCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode an RemoveGroup command for Groups server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeGroupsClusterRemoveGroupCommand(chip::EndpointId destinationEndpoint, uint16_t groupId);
+chip::System::PacketBufferHandle encodeGroupsClusterRemoveGroupCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t groupId);
/**
* @brief
* Encode an ViewGroup command for Groups server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeGroupsClusterViewGroupCommand(chip::EndpointId destinationEndpoint, uint16_t groupId);
+chip::System::PacketBufferHandle encodeGroupsClusterViewGroupCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t groupId);
/**
* @brief
* Encode a Groups server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeGroupsClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeGroupsClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Groups server read command for the name support attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeGroupsClusterReadNameSupportAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeGroupsClusterReadNameSupportAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Groups server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeGroupsClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeGroupsClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster IasZone | 0x0500 |
@@ -1149,50 +1243,52 @@
* @brief
* Encode a IAS Zone server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIasZoneClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIasZoneClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a IAS Zone server read command for the zone state attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIasZoneClusterReadZoneStateAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIasZoneClusterReadZoneStateAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a IAS Zone server read command for the zone type attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIasZoneClusterReadZoneTypeAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIasZoneClusterReadZoneTypeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a IAS Zone server read command for the zone status attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIasZoneClusterReadZoneStatusAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIasZoneClusterReadZoneStatusAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a IAS Zone server read command for the IAS CIE address attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIasZoneClusterReadIasCieAddressAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIasZoneClusterReadIasCieAddressAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a IAS Zone server write command for the IAS CIE address attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIasZoneClusterWriteIasCieAddressAttribute(chip::EndpointId destinationEndpoint,
- uint64_t iasCieAddress);
+chip::System::PacketBufferHandle
+encodeIasZoneClusterWriteIasCieAddressAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint64_t iasCieAddress);
/**
* @brief
* Encode a IAS Zone server read command for the Zone ID attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIasZoneClusterReadZoneIdAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIasZoneClusterReadZoneIdAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a IAS Zone server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIasZoneClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIasZoneClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster Identify | 0x0003 |
@@ -1210,38 +1306,41 @@
* @brief
* Encode an Identify command for Identify server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIdentifyClusterIdentifyCommand(chip::EndpointId destinationEndpoint, uint16_t identifyTime);
+chip::System::PacketBufferHandle encodeIdentifyClusterIdentifyCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t identifyTime);
/**
* @brief
* Encode an IdentifyQuery command for Identify server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIdentifyClusterIdentifyQueryCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIdentifyClusterIdentifyQueryCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Identify server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIdentifyClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIdentifyClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Identify server read command for the identify time attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIdentifyClusterReadIdentifyTimeAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIdentifyClusterReadIdentifyTimeAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Identify server write command for the identify time attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIdentifyClusterWriteIdentifyTimeAttribute(chip::EndpointId destinationEndpoint,
- uint16_t identifyTime);
+chip::System::PacketBufferHandle
+encodeIdentifyClusterWriteIdentifyTimeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t identifyTime);
/**
* @brief
* Encode a Identify server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeIdentifyClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeIdentifyClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster LevelControl | 0x0008 |
@@ -1265,44 +1364,46 @@
* @brief
* Encode an Move command for Level Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterMoveCommand(chip::EndpointId destinationEndpoint, uint8_t moveMode,
- uint8_t rate, uint8_t optionMask, uint8_t optionOverride);
+chip::System::PacketBufferHandle encodeLevelControlClusterMoveCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint8_t moveMode, uint8_t rate, uint8_t optionMask,
+ uint8_t optionOverride);
/**
* @brief
* Encode an MoveToLevel command for Level Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterMoveToLevelCommand(chip::EndpointId destinationEndpoint, uint8_t level,
- uint16_t transitionTime, uint8_t optionMask,
- uint8_t optionOverride);
+chip::System::PacketBufferHandle encodeLevelControlClusterMoveToLevelCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint8_t level, uint16_t transitionTime,
+ uint8_t optionMask, uint8_t optionOverride);
/**
* @brief
* Encode an MoveToLevelWithOnOff command for Level Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterMoveToLevelWithOnOffCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeLevelControlClusterMoveToLevelWithOnOffCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
uint8_t level, uint16_t transitionTime);
/**
* @brief
* Encode an MoveWithOnOff command for Level Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterMoveWithOnOffCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeLevelControlClusterMoveWithOnOffCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
uint8_t moveMode, uint8_t rate);
/**
* @brief
* Encode an Step command for Level Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterStepCommand(chip::EndpointId destinationEndpoint, uint8_t stepMode,
- uint8_t stepSize, uint16_t transitionTime, uint8_t optionMask,
- uint8_t optionOverride);
+chip::System::PacketBufferHandle encodeLevelControlClusterStepCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime,
+ uint8_t optionMask, uint8_t optionOverride);
/**
* @brief
* Encode an StepWithOnOff command for Level Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterStepWithOnOffCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeLevelControlClusterStepWithOnOffCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
uint8_t stepMode, uint8_t stepSize,
uint16_t transitionTime);
@@ -1310,40 +1411,44 @@
* @brief
* Encode an Stop command for Level Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterStopCommand(chip::EndpointId destinationEndpoint, uint8_t optionMask,
- uint8_t optionOverride);
+chip::System::PacketBufferHandle encodeLevelControlClusterStopCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint8_t optionMask, uint8_t optionOverride);
/**
* @brief
* Encode an StopWithOnOff command for Level Control server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterStopWithOnOffCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeLevelControlClusterStopWithOnOffCommand(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Level Control server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeLevelControlClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Level Control server read command for the current level attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterReadCurrentLevelAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeLevelControlClusterReadCurrentLevelAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
- * Encode a Level Control server report command for the current level attribute into buffer including the APS frame
+ * Encode a Level Control server configure report command for the current level attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterReportCurrentLevelAttribute(chip::EndpointId destinationEndpoint,
- uint16_t minInterval, uint16_t maxInterval,
- uint8_t change);
+chip::System::PacketBufferHandle encodeLevelControlClusterConfigureCurrentLevelAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval,
+ uint8_t change);
/**
* @brief
* Encode a Level Control server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeLevelControlClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeLevelControlClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster OnOff | 0x0006 |
@@ -1362,44 +1467,45 @@
* @brief
* Encode an Off command for On/off server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeOnOffClusterOffCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeOnOffClusterOffCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode an On command for On/off server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeOnOffClusterOnCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeOnOffClusterOnCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode an Toggle command for On/off server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeOnOffClusterToggleCommand(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeOnOffClusterToggleCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a On/off server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeOnOffClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeOnOffClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a On/off server read command for the on/off attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeOnOffClusterReadOnOffAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeOnOffClusterReadOnOffAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
- * Encode a On/off server report command for the on/off attribute into buffer including the APS frame
+ * Encode a On/off server configure report command for the on/off attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeOnOffClusterReportOnOffAttribute(chip::EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval);
+chip::System::PacketBufferHandle encodeOnOffClusterConfigureOnOffAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval);
/**
* @brief
* Encode a On/off server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeOnOffClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeOnOffClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster Scenes | 0x0005 |
@@ -1426,92 +1532,95 @@
* @brief
* Encode an AddScene command for Scenes server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterAddSceneCommand(chip::EndpointId destinationEndpoint, uint16_t groupId,
- uint8_t sceneId, uint16_t transitionTime, char * sceneName,
- chip::ClusterId clusterId, uint8_t length, uint8_t value);
+chip::System::PacketBufferHandle encodeScenesClusterAddSceneCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
+ char * sceneName, chip::ClusterId clusterId, uint8_t length,
+ uint8_t value);
/**
* @brief
* Encode an GetSceneMembership command for Scenes server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterGetSceneMembershipCommand(chip::EndpointId destinationEndpoint,
+chip::System::PacketBufferHandle encodeScenesClusterGetSceneMembershipCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
uint16_t groupId);
/**
* @brief
* Encode an RecallScene command for Scenes server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterRecallSceneCommand(chip::EndpointId destinationEndpoint, uint16_t groupId,
- uint8_t sceneId, uint16_t transitionTime);
+chip::System::PacketBufferHandle encodeScenesClusterRecallSceneCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t groupId, uint8_t sceneId, uint16_t transitionTime);
/**
* @brief
* Encode an RemoveAllScenes command for Scenes server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterRemoveAllScenesCommand(chip::EndpointId destinationEndpoint, uint16_t groupId);
+chip::System::PacketBufferHandle encodeScenesClusterRemoveAllScenesCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t groupId);
/**
* @brief
* Encode an RemoveScene command for Scenes server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterRemoveSceneCommand(chip::EndpointId destinationEndpoint, uint16_t groupId,
- uint8_t sceneId);
+chip::System::PacketBufferHandle encodeScenesClusterRemoveSceneCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t groupId, uint8_t sceneId);
/**
* @brief
* Encode an StoreScene command for Scenes server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterStoreSceneCommand(chip::EndpointId destinationEndpoint, uint16_t groupId,
- uint8_t sceneId);
+chip::System::PacketBufferHandle encodeScenesClusterStoreSceneCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t groupId, uint8_t sceneId);
/**
* @brief
* Encode an ViewScene command for Scenes server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterViewSceneCommand(chip::EndpointId destinationEndpoint, uint16_t groupId,
- uint8_t sceneId);
+chip::System::PacketBufferHandle encodeScenesClusterViewSceneCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t groupId, uint8_t sceneId);
/**
* @brief
* Encode a Scenes server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeScenesClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Scenes server read command for the scene count attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterReadSceneCountAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeScenesClusterReadSceneCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Scenes server read command for the current scene attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterReadCurrentSceneAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeScenesClusterReadCurrentSceneAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Scenes server read command for the current group attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterReadCurrentGroupAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeScenesClusterReadCurrentGroupAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Scenes server read command for the scene valid attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterReadSceneValidAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeScenesClusterReadSceneValidAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Scenes server read command for the name support attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterReadNameSupportAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeScenesClusterReadNameSupportAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Scenes server read command for the cluster revision attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeScenesClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeScenesClusterReadClusterRevisionAttribute(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/*----------------------------------------------------------------------------*\
| Cluster TemperatureMeasurement | 0x0402 |
@@ -1529,40 +1638,42 @@
* @brief
* Encode a Temperature Measurement server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encodeTemperatureMeasurementClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encodeTemperatureMeasurementClusterDiscoverAttributes(uint8_t seqNum,
+ chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Temperature Measurement server read command for the measured value attribute into buffer including the APS frame
*/
chip::System::PacketBufferHandle
-encodeTemperatureMeasurementClusterReadMeasuredValueAttribute(chip::EndpointId destinationEndpoint);
+encodeTemperatureMeasurementClusterReadMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
- * Encode a Temperature Measurement server report command for the measured value attribute into buffer including the APS frame
+ * Encode a Temperature Measurement server configure report command for the measured value attribute into buffer including the
+ * APS frame
*/
chip::System::PacketBufferHandle
-encodeTemperatureMeasurementClusterReportMeasuredValueAttribute(chip::EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval, int16_t change);
+encodeTemperatureMeasurementClusterConfigureMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval, int16_t change);
/**
* @brief
* Encode a Temperature Measurement server read command for the min measured value attribute into buffer including the APS frame
*/
chip::System::PacketBufferHandle
-encodeTemperatureMeasurementClusterReadMinMeasuredValueAttribute(chip::EndpointId destinationEndpoint);
+encodeTemperatureMeasurementClusterReadMinMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Temperature Measurement server read command for the max measured value attribute into buffer including the APS frame
*/
chip::System::PacketBufferHandle
-encodeTemperatureMeasurementClusterReadMaxMeasuredValueAttribute(chip::EndpointId destinationEndpoint);
+encodeTemperatureMeasurementClusterReadMaxMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
/**
* @brief
* Encode a Temperature Measurement server read command for the cluster revision attribute into buffer including the APS frame
*/
chip::System::PacketBufferHandle
-encodeTemperatureMeasurementClusterReadClusterRevisionAttribute(chip::EndpointId destinationEndpoint);
+encodeTemperatureMeasurementClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
diff --git a/src/app/encoder.cpp b/src/app/encoder.cpp
index c11aa1d..3f87205 100644
--- a/src/app/encoder.cpp
+++ b/src/app/encoder.cpp
@@ -247,9 +247,6 @@
// Pick source endpoint as 1 for now
constexpr EndpointId kSourceEndpoint = 1;
-// Transaction sequence number. Just pick something for now.
-constexpr uint8_t kSeqNum = 1;
-
/*----------------------------------------------------------------------------*\
| Cluster BarrierControl | 0x0103 |
|------------------------------------------------------------------------------|
@@ -268,80 +265,78 @@
/*
* Command BarrierControlGoToPercent
*/
-PacketBufferHandle encodeBarrierControlClusterBarrierControlGoToPercentCommand(EndpointId destinationEndpoint, uint8_t percentOpen)
+PacketBufferHandle encodeBarrierControlClusterBarrierControlGoToPercentCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t percentOpen)
{
COMMAND_HEADER("BarrierControlGoToPercent", BARRIER_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
- .Put8(ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID)
- .Put8(percentOpen);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID).Put8(percentOpen);
COMMAND_FOOTER();
}
/*
* Command BarrierControlStop
*/
-PacketBufferHandle encodeBarrierControlClusterBarrierControlStopCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBarrierControlClusterBarrierControlStopCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("BarrierControlStop", BARRIER_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_BARRIER_CONTROL_STOP_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_BARRIER_CONTROL_STOP_COMMAND_ID);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeBarrierControlClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBarrierControlClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverBarrierControlAttributes", BARRIER_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute BarrierMovingState
*/
-PacketBufferHandle encodeBarrierControlClusterReadBarrierMovingStateAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBarrierControlClusterReadBarrierMovingStateAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadBarrierControlBarrierMovingState", BARRIER_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
COMMAND_FOOTER();
}
/*
* Attribute BarrierSafetyStatus
*/
-PacketBufferHandle encodeBarrierControlClusterReadBarrierSafetyStatusAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBarrierControlClusterReadBarrierSafetyStatusAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadBarrierControlBarrierSafetyStatus", BARRIER_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
COMMAND_FOOTER();
}
/*
* Attribute BarrierCapabilities
*/
-PacketBufferHandle encodeBarrierControlClusterReadBarrierCapabilitiesAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBarrierControlClusterReadBarrierCapabilitiesAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadBarrierControlBarrierCapabilities", BARRIER_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0003);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0003);
COMMAND_FOOTER();
}
/*
* Attribute BarrierPosition
*/
-PacketBufferHandle encodeBarrierControlClusterReadBarrierPositionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBarrierControlClusterReadBarrierPositionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadBarrierControlBarrierPosition", BARRIER_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x000A);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x000A);
COMMAND_FOOTER();
}
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeBarrierControlClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBarrierControlClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadBarrierControlClusterRevision", BARRIER_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -361,57 +356,57 @@
/*
* Command MfgSpecificPing
*/
-PacketBufferHandle encodeBasicClusterMfgSpecificPingCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBasicClusterMfgSpecificPingCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("MfgSpecificPing", BASIC_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand | (1u << 2)).Put16(0x1002).Put8(kSeqNum).Put8(ZCL_MFG_SPECIFIC_PING_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand | (1u << 2)).Put16(0x1002).Put8(seqNum).Put8(ZCL_MFG_SPECIFIC_PING_COMMAND_ID);
COMMAND_FOOTER();
}
/*
* Command ResetToFactoryDefaults
*/
-PacketBufferHandle encodeBasicClusterResetToFactoryDefaultsCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBasicClusterResetToFactoryDefaultsCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ResetToFactoryDefaults", BASIC_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_RESET_TO_FACTORY_DEFAULTS_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_RESET_TO_FACTORY_DEFAULTS_COMMAND_ID);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeBasicClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBasicClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverBasicAttributes", BASIC_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute ZclVersion
*/
-PacketBufferHandle encodeBasicClusterReadZclVersionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBasicClusterReadZclVersionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadBasicZclVersion", BASIC_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
/*
* Attribute PowerSource
*/
-PacketBufferHandle encodeBasicClusterReadPowerSourceAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBasicClusterReadPowerSourceAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadBasicPowerSource", BASIC_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0007);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0007);
COMMAND_FOOTER();
}
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeBasicClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBasicClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadBasicClusterRevision", BASIC_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -429,12 +424,12 @@
/*
* Command Bind
*/
-PacketBufferHandle encodeBindingClusterBindCommand(EndpointId destinationEndpoint, chip::NodeId nodeId, chip::GroupId groupId,
- chip::EndpointId endpointId, chip::ClusterId clusterId)
+PacketBufferHandle encodeBindingClusterBindCommand(uint8_t seqNum, EndpointId destinationEndpoint, chip::NodeId nodeId,
+ chip::GroupId groupId, chip::EndpointId endpointId, chip::ClusterId clusterId)
{
COMMAND_HEADER("Bind", BINDING_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_BIND_COMMAND_ID)
.Put64(nodeId)
.Put16(groupId)
@@ -446,12 +441,12 @@
/*
* Command Unbind
*/
-PacketBufferHandle encodeBindingClusterUnbindCommand(EndpointId destinationEndpoint, chip::NodeId nodeId, chip::GroupId groupId,
- chip::EndpointId endpointId, chip::ClusterId clusterId)
+PacketBufferHandle encodeBindingClusterUnbindCommand(uint8_t seqNum, EndpointId destinationEndpoint, chip::NodeId nodeId,
+ chip::GroupId groupId, chip::EndpointId endpointId, chip::ClusterId clusterId)
{
COMMAND_HEADER("Unbind", BINDING_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_UNBIND_COMMAND_ID)
.Put64(nodeId)
.Put16(groupId)
@@ -460,20 +455,20 @@
COMMAND_FOOTER();
}
-PacketBufferHandle encodeBindingClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBindingClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverBindingAttributes", BINDING_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeBindingClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeBindingClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadBindingClusterRevision", BINDING_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -553,12 +548,12 @@
/*
* Command MoveColor
*/
-PacketBufferHandle encodeColorControlClusterMoveColorCommand(EndpointId destinationEndpoint, int16_t rateX, int16_t rateY,
- uint8_t optionsMask, uint8_t optionsOverride)
+PacketBufferHandle encodeColorControlClusterMoveColorCommand(uint8_t seqNum, EndpointId destinationEndpoint, int16_t rateX,
+ int16_t rateY, uint8_t optionsMask, uint8_t optionsOverride)
{
COMMAND_HEADER("MoveColor", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_COLOR_COMMAND_ID)
.Put16(static_cast<uint16_t>(rateX))
.Put16(static_cast<uint16_t>(rateY))
@@ -570,14 +565,15 @@
/*
* Command MoveColorTemperature
*/
-PacketBufferHandle encodeColorControlClusterMoveColorTemperatureCommand(EndpointId destinationEndpoint, uint8_t moveMode,
- uint16_t rate, uint16_t colorTemperatureMinimum,
+PacketBufferHandle encodeColorControlClusterMoveColorTemperatureCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t moveMode, uint16_t rate,
+ uint16_t colorTemperatureMinimum,
uint16_t colorTemperatureMaximum, uint8_t optionsMask,
uint8_t optionsOverride)
{
COMMAND_HEADER("MoveColorTemperature", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID)
.Put8(moveMode)
.Put16(rate)
@@ -591,12 +587,12 @@
/*
* Command MoveHue
*/
-PacketBufferHandle encodeColorControlClusterMoveHueCommand(EndpointId destinationEndpoint, uint8_t moveMode, uint8_t rate,
- uint8_t optionsMask, uint8_t optionsOverride)
+PacketBufferHandle encodeColorControlClusterMoveHueCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t moveMode,
+ uint8_t rate, uint8_t optionsMask, uint8_t optionsOverride)
{
COMMAND_HEADER("MoveHue", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_HUE_COMMAND_ID)
.Put8(moveMode)
.Put8(rate)
@@ -608,12 +604,12 @@
/*
* Command MoveSaturation
*/
-PacketBufferHandle encodeColorControlClusterMoveSaturationCommand(EndpointId destinationEndpoint, uint8_t moveMode, uint8_t rate,
- uint8_t optionsMask, uint8_t optionsOverride)
+PacketBufferHandle encodeColorControlClusterMoveSaturationCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t moveMode,
+ uint8_t rate, uint8_t optionsMask, uint8_t optionsOverride)
{
COMMAND_HEADER("MoveSaturation", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_SATURATION_COMMAND_ID)
.Put8(moveMode)
.Put8(rate)
@@ -625,13 +621,13 @@
/*
* Command MoveToColor
*/
-PacketBufferHandle encodeColorControlClusterMoveToColorCommand(EndpointId destinationEndpoint, uint16_t colorX, uint16_t colorY,
- uint16_t transitionTime, uint8_t optionsMask,
+PacketBufferHandle encodeColorControlClusterMoveToColorCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t colorX,
+ uint16_t colorY, uint16_t transitionTime, uint8_t optionsMask,
uint8_t optionsOverride)
{
COMMAND_HEADER("MoveToColor", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_TO_COLOR_COMMAND_ID)
.Put16(colorX)
.Put16(colorY)
@@ -644,13 +640,13 @@
/*
* Command MoveToColorTemperature
*/
-PacketBufferHandle encodeColorControlClusterMoveToColorTemperatureCommand(EndpointId destinationEndpoint, uint16_t colorTemperature,
- uint16_t transitionTime, uint8_t optionsMask,
- uint8_t optionsOverride)
+PacketBufferHandle encodeColorControlClusterMoveToColorTemperatureCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t colorTemperature, uint16_t transitionTime,
+ uint8_t optionsMask, uint8_t optionsOverride)
{
COMMAND_HEADER("MoveToColorTemperature", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID)
.Put16(colorTemperature)
.Put16(transitionTime)
@@ -662,12 +658,13 @@
/*
* Command MoveToHue
*/
-PacketBufferHandle encodeColorControlClusterMoveToHueCommand(EndpointId destinationEndpoint, uint8_t hue, uint8_t direction,
- uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
+PacketBufferHandle encodeColorControlClusterMoveToHueCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t hue,
+ uint8_t direction, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride)
{
COMMAND_HEADER("MoveToHue", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_TO_HUE_COMMAND_ID)
.Put8(hue)
.Put8(direction)
@@ -680,13 +677,13 @@
/*
* Command MoveToHueAndSaturation
*/
-PacketBufferHandle encodeColorControlClusterMoveToHueAndSaturationCommand(EndpointId destinationEndpoint, uint8_t hue,
- uint8_t saturation, uint16_t transitionTime,
+PacketBufferHandle encodeColorControlClusterMoveToHueAndSaturationCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t hue, uint8_t saturation, uint16_t transitionTime,
uint8_t optionsMask, uint8_t optionsOverride)
{
COMMAND_HEADER("MoveToHueAndSaturation", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID)
.Put8(hue)
.Put8(saturation)
@@ -699,13 +696,13 @@
/*
* Command MoveToSaturation
*/
-PacketBufferHandle encodeColorControlClusterMoveToSaturationCommand(EndpointId destinationEndpoint, uint8_t saturation,
- uint16_t transitionTime, uint8_t optionsMask,
- uint8_t optionsOverride)
+PacketBufferHandle encodeColorControlClusterMoveToSaturationCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t saturation, uint16_t transitionTime,
+ uint8_t optionsMask, uint8_t optionsOverride)
{
COMMAND_HEADER("MoveToSaturation", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_TO_SATURATION_COMMAND_ID)
.Put8(saturation)
.Put16(transitionTime)
@@ -717,12 +714,13 @@
/*
* Command StepColor
*/
-PacketBufferHandle encodeColorControlClusterStepColorCommand(EndpointId destinationEndpoint, int16_t stepX, int16_t stepY,
- uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
+PacketBufferHandle encodeColorControlClusterStepColorCommand(uint8_t seqNum, EndpointId destinationEndpoint, int16_t stepX,
+ int16_t stepY, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride)
{
COMMAND_HEADER("StepColor", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_STEP_COLOR_COMMAND_ID)
.Put16(static_cast<uint16_t>(stepX))
.Put16(static_cast<uint16_t>(stepY))
@@ -735,15 +733,15 @@
/*
* Command StepColorTemperature
*/
-PacketBufferHandle encodeColorControlClusterStepColorTemperatureCommand(EndpointId destinationEndpoint, uint8_t stepMode,
- uint16_t stepSize, uint16_t transitionTime,
- uint16_t colorTemperatureMinimum,
+PacketBufferHandle encodeColorControlClusterStepColorTemperatureCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t stepMode, uint16_t stepSize,
+ uint16_t transitionTime, uint16_t colorTemperatureMinimum,
uint16_t colorTemperatureMaximum, uint8_t optionsMask,
uint8_t optionsOverride)
{
COMMAND_HEADER("StepColorTemperature", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID)
.Put8(stepMode)
.Put16(stepSize)
@@ -758,12 +756,13 @@
/*
* Command StepHue
*/
-PacketBufferHandle encodeColorControlClusterStepHueCommand(EndpointId destinationEndpoint, uint8_t stepMode, uint8_t stepSize,
- uint8_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
+PacketBufferHandle encodeColorControlClusterStepHueCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t stepMode,
+ uint8_t stepSize, uint8_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride)
{
COMMAND_HEADER("StepHue", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_STEP_HUE_COMMAND_ID)
.Put8(stepMode)
.Put8(stepSize)
@@ -776,13 +775,13 @@
/*
* Command StepSaturation
*/
-PacketBufferHandle encodeColorControlClusterStepSaturationCommand(EndpointId destinationEndpoint, uint8_t stepMode,
+PacketBufferHandle encodeColorControlClusterStepSaturationCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t stepMode,
uint8_t stepSize, uint8_t transitionTime, uint8_t optionsMask,
uint8_t optionsOverride)
{
COMMAND_HEADER("StepSaturation", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_STEP_SATURATION_COMMAND_ID)
.Put8(stepMode)
.Put8(stepSize)
@@ -795,41 +794,41 @@
/*
* Command StopMoveStep
*/
-PacketBufferHandle encodeColorControlClusterStopMoveStepCommand(EndpointId destinationEndpoint, uint8_t optionsMask,
+PacketBufferHandle encodeColorControlClusterStopMoveStepCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t optionsMask,
uint8_t optionsOverride)
{
COMMAND_HEADER("StopMoveStep", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_STOP_MOVE_STEP_COMMAND_ID)
.Put8(optionsMask)
.Put8(optionsOverride);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverColorControlAttributes", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute CurrentHue
*/
-PacketBufferHandle encodeColorControlClusterReadCurrentHueAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadCurrentHueAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlCurrentHue", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterReportCurrentHueAttribute(EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval, uint8_t change)
+PacketBufferHandle encodeColorControlClusterConfigureCurrentHueAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval, uint8_t change)
{
COMMAND_HEADER("ReportColorControlCurrentHue", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16(0x0000)
@@ -843,19 +842,20 @@
/*
* Attribute CurrentSaturation
*/
-PacketBufferHandle encodeColorControlClusterReadCurrentSaturationAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadCurrentSaturationAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlCurrentSaturation", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterReportCurrentSaturationAttribute(EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval, uint8_t change)
+PacketBufferHandle encodeColorControlClusterConfigureCurrentSaturationAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval,
+ uint8_t change)
{
COMMAND_HEADER("ReportColorControlCurrentSaturation", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16(0x0001)
@@ -869,29 +869,29 @@
/*
* Attribute RemainingTime
*/
-PacketBufferHandle encodeColorControlClusterReadRemainingTimeAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadRemainingTimeAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlRemainingTime", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
COMMAND_FOOTER();
}
/*
* Attribute CurrentX
*/
-PacketBufferHandle encodeColorControlClusterReadCurrentXAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadCurrentXAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlCurrentX", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0003);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0003);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterReportCurrentXAttribute(EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval, uint16_t change)
+PacketBufferHandle encodeColorControlClusterConfigureCurrentXAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval, uint16_t change)
{
COMMAND_HEADER("ReportColorControlCurrentX", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16(0x0003)
@@ -905,19 +905,19 @@
/*
* Attribute CurrentY
*/
-PacketBufferHandle encodeColorControlClusterReadCurrentYAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadCurrentYAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlCurrentY", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0004);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0004);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterReportCurrentYAttribute(EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval, uint16_t change)
+PacketBufferHandle encodeColorControlClusterConfigureCurrentYAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval, uint16_t change)
{
COMMAND_HEADER("ReportColorControlCurrentY", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16(0x0004)
@@ -931,39 +931,40 @@
/*
* Attribute DriftCompensation
*/
-PacketBufferHandle encodeColorControlClusterReadDriftCompensationAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadDriftCompensationAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlDriftCompensation", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0005);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0005);
COMMAND_FOOTER();
}
/*
* Attribute CompensationText
*/
-PacketBufferHandle encodeColorControlClusterReadCompensationTextAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadCompensationTextAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlCompensationText", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0006);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0006);
COMMAND_FOOTER();
}
/*
* Attribute ColorTemperature
*/
-PacketBufferHandle encodeColorControlClusterReadColorTemperatureAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorTemperatureAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorTemperature", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0007);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0007);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterReportColorTemperatureAttribute(EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval, uint16_t change)
+PacketBufferHandle encodeColorControlClusterConfigureColorTemperatureAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval,
+ uint16_t change)
{
COMMAND_HEADER("ReportColorControlColorTemperature", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16(0x0007)
@@ -977,29 +978,29 @@
/*
* Attribute ColorMode
*/
-PacketBufferHandle encodeColorControlClusterReadColorModeAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorModeAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorMode", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0008);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0008);
COMMAND_FOOTER();
}
/*
* Attribute ColorControlOptions
*/
-PacketBufferHandle encodeColorControlClusterReadColorControlOptionsAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorControlOptionsAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorControlOptions", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x000F);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x000F);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorControlOptionsAttribute(EndpointId destinationEndpoint,
+PacketBufferHandle encodeColorControlClusterWriteColorControlOptionsAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
uint8_t colorControlOptions)
{
COMMAND_HEADER("WriteColorControlColorControlOptions", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x000F)
.Put8(24)
@@ -1010,208 +1011,209 @@
/*
* Attribute NumberOfPrimaries
*/
-PacketBufferHandle encodeColorControlClusterReadNumberOfPrimariesAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadNumberOfPrimariesAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlNumberOfPrimaries", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0010);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0010);
COMMAND_FOOTER();
}
/*
* Attribute Primary1X
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary1XAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary1XAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary1X", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0011);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0011);
COMMAND_FOOTER();
}
/*
* Attribute Primary1Y
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary1YAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary1YAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary1Y", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0012);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0012);
COMMAND_FOOTER();
}
/*
* Attribute Primary1Intensity
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary1IntensityAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary1IntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary1Intensity", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0013);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0013);
COMMAND_FOOTER();
}
/*
* Attribute Primary2X
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary2XAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary2XAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary2X", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0015);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0015);
COMMAND_FOOTER();
}
/*
* Attribute Primary2Y
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary2YAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary2YAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary2Y", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0016);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0016);
COMMAND_FOOTER();
}
/*
* Attribute Primary2Intensity
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary2IntensityAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary2IntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary2Intensity", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0017);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0017);
COMMAND_FOOTER();
}
/*
* Attribute Primary3X
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary3XAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary3XAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary3X", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0019);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0019);
COMMAND_FOOTER();
}
/*
* Attribute Primary3Y
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary3YAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary3YAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary3Y", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x001A);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x001A);
COMMAND_FOOTER();
}
/*
* Attribute Primary3Intensity
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary3IntensityAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary3IntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary3Intensity", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x001B);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x001B);
COMMAND_FOOTER();
}
/*
* Attribute Primary4X
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary4XAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary4XAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary4X", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0020);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0020);
COMMAND_FOOTER();
}
/*
* Attribute Primary4Y
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary4YAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary4YAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary4Y", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0021);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0021);
COMMAND_FOOTER();
}
/*
* Attribute Primary4Intensity
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary4IntensityAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary4IntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary4Intensity", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0022);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0022);
COMMAND_FOOTER();
}
/*
* Attribute Primary5X
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary5XAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary5XAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary5X", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0024);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0024);
COMMAND_FOOTER();
}
/*
* Attribute Primary5Y
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary5YAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary5YAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary5Y", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0025);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0025);
COMMAND_FOOTER();
}
/*
* Attribute Primary5Intensity
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary5IntensityAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary5IntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary5Intensity", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0026);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0026);
COMMAND_FOOTER();
}
/*
* Attribute Primary6X
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary6XAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary6XAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary6X", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0028);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0028);
COMMAND_FOOTER();
}
/*
* Attribute Primary6Y
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary6YAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary6YAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary6Y", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0029);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0029);
COMMAND_FOOTER();
}
/*
* Attribute Primary6Intensity
*/
-PacketBufferHandle encodeColorControlClusterReadPrimary6IntensityAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadPrimary6IntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlPrimary6Intensity", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x002A);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x002A);
COMMAND_FOOTER();
}
/*
* Attribute WhitePointX
*/
-PacketBufferHandle encodeColorControlClusterReadWhitePointXAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadWhitePointXAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlWhitePointX", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0030);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0030);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteWhitePointXAttribute(EndpointId destinationEndpoint, uint16_t whitePointX)
+PacketBufferHandle encodeColorControlClusterWriteWhitePointXAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t whitePointX)
{
COMMAND_HEADER("WriteColorControlWhitePointX", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0030)
.Put8(33)
@@ -1222,18 +1224,19 @@
/*
* Attribute WhitePointY
*/
-PacketBufferHandle encodeColorControlClusterReadWhitePointYAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadWhitePointYAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlWhitePointY", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0031);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0031);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteWhitePointYAttribute(EndpointId destinationEndpoint, uint16_t whitePointY)
+PacketBufferHandle encodeColorControlClusterWriteWhitePointYAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t whitePointY)
{
COMMAND_HEADER("WriteColorControlWhitePointY", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0031)
.Put8(33)
@@ -1244,18 +1247,19 @@
/*
* Attribute ColorPointRX
*/
-PacketBufferHandle encodeColorControlClusterReadColorPointRXAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorPointRXAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorPointRX", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0032);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0032);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorPointRXAttribute(EndpointId destinationEndpoint, uint16_t colorPointRX)
+PacketBufferHandle encodeColorControlClusterWriteColorPointRXAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t colorPointRX)
{
COMMAND_HEADER("WriteColorControlColorPointRX", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0032)
.Put8(33)
@@ -1266,18 +1270,19 @@
/*
* Attribute ColorPointRY
*/
-PacketBufferHandle encodeColorControlClusterReadColorPointRYAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorPointRYAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorPointRY", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0033);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0033);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorPointRYAttribute(EndpointId destinationEndpoint, uint16_t colorPointRY)
+PacketBufferHandle encodeColorControlClusterWriteColorPointRYAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t colorPointRY)
{
COMMAND_HEADER("WriteColorControlColorPointRY", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0033)
.Put8(33)
@@ -1288,19 +1293,19 @@
/*
* Attribute ColorPointRIntensity
*/
-PacketBufferHandle encodeColorControlClusterReadColorPointRIntensityAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorPointRIntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorPointRIntensity", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0034);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0034);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorPointRIntensityAttribute(EndpointId destinationEndpoint,
+PacketBufferHandle encodeColorControlClusterWriteColorPointRIntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
uint8_t colorPointRIntensity)
{
COMMAND_HEADER("WriteColorControlColorPointRIntensity", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0034)
.Put8(32)
@@ -1311,18 +1316,19 @@
/*
* Attribute ColorPointGX
*/
-PacketBufferHandle encodeColorControlClusterReadColorPointGXAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorPointGXAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorPointGX", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0036);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0036);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorPointGXAttribute(EndpointId destinationEndpoint, uint16_t colorPointGX)
+PacketBufferHandle encodeColorControlClusterWriteColorPointGXAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t colorPointGX)
{
COMMAND_HEADER("WriteColorControlColorPointGX", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0036)
.Put8(33)
@@ -1333,18 +1339,19 @@
/*
* Attribute ColorPointGY
*/
-PacketBufferHandle encodeColorControlClusterReadColorPointGYAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorPointGYAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorPointGY", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0037);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0037);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorPointGYAttribute(EndpointId destinationEndpoint, uint16_t colorPointGY)
+PacketBufferHandle encodeColorControlClusterWriteColorPointGYAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t colorPointGY)
{
COMMAND_HEADER("WriteColorControlColorPointGY", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0037)
.Put8(33)
@@ -1355,19 +1362,19 @@
/*
* Attribute ColorPointGIntensity
*/
-PacketBufferHandle encodeColorControlClusterReadColorPointGIntensityAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorPointGIntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorPointGIntensity", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0038);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0038);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorPointGIntensityAttribute(EndpointId destinationEndpoint,
+PacketBufferHandle encodeColorControlClusterWriteColorPointGIntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
uint8_t colorPointGIntensity)
{
COMMAND_HEADER("WriteColorControlColorPointGIntensity", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0038)
.Put8(32)
@@ -1378,18 +1385,19 @@
/*
* Attribute ColorPointBX
*/
-PacketBufferHandle encodeColorControlClusterReadColorPointBXAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorPointBXAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorPointBX", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x003A);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x003A);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorPointBXAttribute(EndpointId destinationEndpoint, uint16_t colorPointBX)
+PacketBufferHandle encodeColorControlClusterWriteColorPointBXAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t colorPointBX)
{
COMMAND_HEADER("WriteColorControlColorPointBX", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x003A)
.Put8(33)
@@ -1400,18 +1408,19 @@
/*
* Attribute ColorPointBY
*/
-PacketBufferHandle encodeColorControlClusterReadColorPointBYAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorPointBYAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorPointBY", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x003B);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x003B);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorPointBYAttribute(EndpointId destinationEndpoint, uint16_t colorPointBY)
+PacketBufferHandle encodeColorControlClusterWriteColorPointBYAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t colorPointBY)
{
COMMAND_HEADER("WriteColorControlColorPointBY", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x003B)
.Put8(33)
@@ -1422,19 +1431,19 @@
/*
* Attribute ColorPointBIntensity
*/
-PacketBufferHandle encodeColorControlClusterReadColorPointBIntensityAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorPointBIntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorPointBIntensity", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x003C);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x003C);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteColorPointBIntensityAttribute(EndpointId destinationEndpoint,
+PacketBufferHandle encodeColorControlClusterWriteColorPointBIntensityAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
uint8_t colorPointBIntensity)
{
COMMAND_HEADER("WriteColorControlColorPointBIntensity", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x003C)
.Put8(32)
@@ -1445,109 +1454,112 @@
/*
* Attribute EnhancedCurrentHue
*/
-PacketBufferHandle encodeColorControlClusterReadEnhancedCurrentHueAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadEnhancedCurrentHueAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlEnhancedCurrentHue", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4000);
COMMAND_FOOTER();
}
/*
* Attribute EnhancedColorMode
*/
-PacketBufferHandle encodeColorControlClusterReadEnhancedColorModeAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadEnhancedColorModeAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlEnhancedColorMode", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4001);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4001);
COMMAND_FOOTER();
}
/*
* Attribute ColorLoopActive
*/
-PacketBufferHandle encodeColorControlClusterReadColorLoopActiveAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorLoopActiveAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorLoopActive", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4002);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4002);
COMMAND_FOOTER();
}
/*
* Attribute ColorLoopDirection
*/
-PacketBufferHandle encodeColorControlClusterReadColorLoopDirectionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorLoopDirectionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorLoopDirection", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4003);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4003);
COMMAND_FOOTER();
}
/*
* Attribute ColorLoopTime
*/
-PacketBufferHandle encodeColorControlClusterReadColorLoopTimeAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorLoopTimeAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorLoopTime", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4004);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4004);
COMMAND_FOOTER();
}
/*
* Attribute ColorCapabilities
*/
-PacketBufferHandle encodeColorControlClusterReadColorCapabilitiesAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorCapabilitiesAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorCapabilities", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x400A);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x400A);
COMMAND_FOOTER();
}
/*
* Attribute ColorTempPhysicalMin
*/
-PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMinAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMinAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorTempPhysicalMin", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x400B);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x400B);
COMMAND_FOOTER();
}
/*
* Attribute ColorTempPhysicalMax
*/
-PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMaxAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMaxAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlColorTempPhysicalMax", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x400C);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x400C);
COMMAND_FOOTER();
}
/*
* Attribute CoupleColorTempToLevelMinMireds
*/
-PacketBufferHandle encodeColorControlClusterReadCoupleColorTempToLevelMinMiredsAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadCoupleColorTempToLevelMinMiredsAttribute(uint8_t seqNum,
+ EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlCoupleColorTempToLevelMinMireds", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x400D);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x400D);
COMMAND_FOOTER();
}
/*
* Attribute StartUpColorTemperatureMireds
*/
-PacketBufferHandle encodeColorControlClusterReadStartUpColorTemperatureMiredsAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadStartUpColorTemperatureMiredsAttribute(uint8_t seqNum,
+ EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlStartUpColorTemperatureMireds", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4010);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x4010);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeColorControlClusterWriteStartUpColorTemperatureMiredsAttribute(EndpointId destinationEndpoint,
+PacketBufferHandle encodeColorControlClusterWriteStartUpColorTemperatureMiredsAttribute(uint8_t seqNum,
+ EndpointId destinationEndpoint,
uint16_t startUpColorTemperatureMireds)
{
COMMAND_HEADER("WriteColorControlStartUpColorTemperatureMireds", COLOR_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x4010)
.Put8(33)
@@ -1558,10 +1570,10 @@
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeColorControlClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeColorControlClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadColorControlClusterRevision", COLOR_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -1603,62 +1615,63 @@
/*
* Command ClearAllPins
*/
-PacketBufferHandle encodeDoorLockClusterClearAllPinsCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeDoorLockClusterClearAllPinsCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ClearAllPins", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_CLEAR_ALL_PINS_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_CLEAR_ALL_PINS_COMMAND_ID);
COMMAND_FOOTER();
}
/*
* Command ClearAllRfids
*/
-PacketBufferHandle encodeDoorLockClusterClearAllRfidsCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeDoorLockClusterClearAllRfidsCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ClearAllRfids", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_CLEAR_ALL_RFIDS_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_CLEAR_ALL_RFIDS_COMMAND_ID);
COMMAND_FOOTER();
}
/*
* Command ClearHolidaySchedule
*/
-PacketBufferHandle encodeDoorLockClusterClearHolidayScheduleCommand(EndpointId destinationEndpoint, uint8_t scheduleId)
+PacketBufferHandle encodeDoorLockClusterClearHolidayScheduleCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t scheduleId)
{
COMMAND_HEADER("ClearHolidaySchedule", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID).Put8(scheduleId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID).Put8(scheduleId);
COMMAND_FOOTER();
}
/*
* Command ClearPin
*/
-PacketBufferHandle encodeDoorLockClusterClearPinCommand(EndpointId destinationEndpoint, uint16_t userId)
+PacketBufferHandle encodeDoorLockClusterClearPinCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t userId)
{
COMMAND_HEADER("ClearPin", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_CLEAR_PIN_COMMAND_ID).Put16(userId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_CLEAR_PIN_COMMAND_ID).Put16(userId);
COMMAND_FOOTER();
}
/*
* Command ClearRfid
*/
-PacketBufferHandle encodeDoorLockClusterClearRfidCommand(EndpointId destinationEndpoint, uint16_t userId)
+PacketBufferHandle encodeDoorLockClusterClearRfidCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t userId)
{
COMMAND_HEADER("ClearRfid", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_CLEAR_RFID_COMMAND_ID).Put16(userId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_CLEAR_RFID_COMMAND_ID).Put16(userId);
COMMAND_FOOTER();
}
/*
* Command ClearWeekdaySchedule
*/
-PacketBufferHandle encodeDoorLockClusterClearWeekdayScheduleCommand(EndpointId destinationEndpoint, uint8_t scheduleId,
- uint16_t userId)
+PacketBufferHandle encodeDoorLockClusterClearWeekdayScheduleCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t scheduleId, uint16_t userId)
{
COMMAND_HEADER("ClearWeekdaySchedule", DOOR_LOCK_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CLEAR_WEEKDAY_SCHEDULE_COMMAND_ID)
.Put8(scheduleId)
.Put16(userId);
@@ -1668,12 +1681,12 @@
/*
* Command ClearYeardaySchedule
*/
-PacketBufferHandle encodeDoorLockClusterClearYeardayScheduleCommand(EndpointId destinationEndpoint, uint8_t scheduleId,
- uint16_t userId)
+PacketBufferHandle encodeDoorLockClusterClearYeardayScheduleCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t scheduleId, uint16_t userId)
{
COMMAND_HEADER("ClearYeardaySchedule", DOOR_LOCK_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CLEAR_YEARDAY_SCHEDULE_COMMAND_ID)
.Put8(scheduleId)
.Put16(userId);
@@ -1683,62 +1696,63 @@
/*
* Command GetHolidaySchedule
*/
-PacketBufferHandle encodeDoorLockClusterGetHolidayScheduleCommand(EndpointId destinationEndpoint, uint8_t scheduleId)
+PacketBufferHandle encodeDoorLockClusterGetHolidayScheduleCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t scheduleId)
{
COMMAND_HEADER("GetHolidaySchedule", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_GET_HOLIDAY_SCHEDULE_COMMAND_ID).Put8(scheduleId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_GET_HOLIDAY_SCHEDULE_COMMAND_ID).Put8(scheduleId);
COMMAND_FOOTER();
}
/*
* Command GetLogRecord
*/
-PacketBufferHandle encodeDoorLockClusterGetLogRecordCommand(EndpointId destinationEndpoint, uint16_t logIndex)
+PacketBufferHandle encodeDoorLockClusterGetLogRecordCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t logIndex)
{
COMMAND_HEADER("GetLogRecord", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_GET_LOG_RECORD_COMMAND_ID).Put16(logIndex);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_GET_LOG_RECORD_COMMAND_ID).Put16(logIndex);
COMMAND_FOOTER();
}
/*
* Command GetPin
*/
-PacketBufferHandle encodeDoorLockClusterGetPinCommand(EndpointId destinationEndpoint, uint16_t userId)
+PacketBufferHandle encodeDoorLockClusterGetPinCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t userId)
{
COMMAND_HEADER("GetPin", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_GET_PIN_COMMAND_ID).Put16(userId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_GET_PIN_COMMAND_ID).Put16(userId);
COMMAND_FOOTER();
}
/*
* Command GetRfid
*/
-PacketBufferHandle encodeDoorLockClusterGetRfidCommand(EndpointId destinationEndpoint, uint16_t userId)
+PacketBufferHandle encodeDoorLockClusterGetRfidCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t userId)
{
COMMAND_HEADER("GetRfid", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_GET_RFID_COMMAND_ID).Put16(userId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_GET_RFID_COMMAND_ID).Put16(userId);
COMMAND_FOOTER();
}
/*
* Command GetUserType
*/
-PacketBufferHandle encodeDoorLockClusterGetUserTypeCommand(EndpointId destinationEndpoint, uint16_t userId)
+PacketBufferHandle encodeDoorLockClusterGetUserTypeCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t userId)
{
COMMAND_HEADER("GetUserType", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_GET_USER_TYPE_COMMAND_ID).Put16(userId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_GET_USER_TYPE_COMMAND_ID).Put16(userId);
COMMAND_FOOTER();
}
/*
* Command GetWeekdaySchedule
*/
-PacketBufferHandle encodeDoorLockClusterGetWeekdayScheduleCommand(EndpointId destinationEndpoint, uint8_t scheduleId,
- uint16_t userId)
+PacketBufferHandle encodeDoorLockClusterGetWeekdayScheduleCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t scheduleId, uint16_t userId)
{
COMMAND_HEADER("GetWeekdaySchedule", DOOR_LOCK_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_GET_WEEKDAY_SCHEDULE_COMMAND_ID)
.Put8(scheduleId)
.Put16(userId);
@@ -1748,12 +1762,12 @@
/*
* Command GetYeardaySchedule
*/
-PacketBufferHandle encodeDoorLockClusterGetYeardayScheduleCommand(EndpointId destinationEndpoint, uint8_t scheduleId,
- uint16_t userId)
+PacketBufferHandle encodeDoorLockClusterGetYeardayScheduleCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t scheduleId, uint16_t userId)
{
COMMAND_HEADER("GetYeardaySchedule", DOOR_LOCK_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_GET_YEARDAY_SCHEDULE_COMMAND_ID)
.Put8(scheduleId)
.Put16(userId);
@@ -1763,7 +1777,7 @@
/*
* Command LockDoor
*/
-PacketBufferHandle encodeDoorLockClusterLockDoorCommand(EndpointId destinationEndpoint, char * pin)
+PacketBufferHandle encodeDoorLockClusterLockDoorCommand(uint8_t seqNum, EndpointId destinationEndpoint, char * pin)
{
COMMAND_HEADER("LockDoor", DOOR_LOCK_CLUSTER_ID);
size_t pinStrLen = strlen(pin);
@@ -1773,7 +1787,7 @@
return PacketBufferHandle();
}
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_LOCK_DOOR_COMMAND_ID)
.Put(static_cast<uint8_t>(pinStrLen))
.Put(pin);
@@ -1783,13 +1797,13 @@
/*
* Command SetHolidaySchedule
*/
-PacketBufferHandle encodeDoorLockClusterSetHolidayScheduleCommand(EndpointId destinationEndpoint, uint8_t scheduleId,
- uint32_t localStartTime, uint32_t localEndTime,
- uint8_t operatingModeDuringHoliday)
+PacketBufferHandle encodeDoorLockClusterSetHolidayScheduleCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t scheduleId, uint32_t localStartTime,
+ uint32_t localEndTime, uint8_t operatingModeDuringHoliday)
{
COMMAND_HEADER("SetHolidaySchedule", DOOR_LOCK_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_SET_HOLIDAY_SCHEDULE_COMMAND_ID)
.Put8(scheduleId)
.Put32(localStartTime)
@@ -1801,8 +1815,8 @@
/*
* Command SetPin
*/
-PacketBufferHandle encodeDoorLockClusterSetPinCommand(EndpointId destinationEndpoint, uint16_t userId, uint8_t userStatus,
- uint8_t userType, char * pin)
+PacketBufferHandle encodeDoorLockClusterSetPinCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t userId,
+ uint8_t userStatus, uint8_t userType, char * pin)
{
COMMAND_HEADER("SetPin", DOOR_LOCK_CLUSTER_ID);
size_t pinStrLen = strlen(pin);
@@ -1812,7 +1826,7 @@
return PacketBufferHandle();
}
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_SET_PIN_COMMAND_ID)
.Put16(userId)
.Put8(userStatus)
@@ -1825,8 +1839,8 @@
/*
* Command SetRfid
*/
-PacketBufferHandle encodeDoorLockClusterSetRfidCommand(EndpointId destinationEndpoint, uint16_t userId, uint8_t userStatus,
- uint8_t userType, char * id)
+PacketBufferHandle encodeDoorLockClusterSetRfidCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t userId,
+ uint8_t userStatus, uint8_t userType, char * id)
{
COMMAND_HEADER("SetRfid", DOOR_LOCK_CLUSTER_ID);
size_t idStrLen = strlen(id);
@@ -1836,7 +1850,7 @@
return PacketBufferHandle();
}
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_SET_RFID_COMMAND_ID)
.Put16(userId)
.Put8(userStatus)
@@ -1849,23 +1863,25 @@
/*
* Command SetUserType
*/
-PacketBufferHandle encodeDoorLockClusterSetUserTypeCommand(EndpointId destinationEndpoint, uint16_t userId, uint8_t userType)
+PacketBufferHandle encodeDoorLockClusterSetUserTypeCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t userId,
+ uint8_t userType)
{
COMMAND_HEADER("SetUserType", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_SET_USER_TYPE_COMMAND_ID).Put16(userId).Put8(userType);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_SET_USER_TYPE_COMMAND_ID).Put16(userId).Put8(userType);
COMMAND_FOOTER();
}
/*
* Command SetWeekdaySchedule
*/
-PacketBufferHandle encodeDoorLockClusterSetWeekdayScheduleCommand(EndpointId destinationEndpoint, uint8_t scheduleId,
- uint16_t userId, uint8_t daysMask, uint8_t startHour,
- uint8_t startMinute, uint8_t endHour, uint8_t endMinute)
+PacketBufferHandle encodeDoorLockClusterSetWeekdayScheduleCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t scheduleId, uint16_t userId, uint8_t daysMask,
+ uint8_t startHour, uint8_t startMinute, uint8_t endHour,
+ uint8_t endMinute)
{
COMMAND_HEADER("SetWeekdaySchedule", DOOR_LOCK_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_SET_WEEKDAY_SCHEDULE_COMMAND_ID)
.Put8(scheduleId)
.Put16(userId)
@@ -1880,12 +1896,13 @@
/*
* Command SetYeardaySchedule
*/
-PacketBufferHandle encodeDoorLockClusterSetYeardayScheduleCommand(EndpointId destinationEndpoint, uint8_t scheduleId,
- uint16_t userId, uint32_t localStartTime, uint32_t localEndTime)
+PacketBufferHandle encodeDoorLockClusterSetYeardayScheduleCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t scheduleId, uint16_t userId, uint32_t localStartTime,
+ uint32_t localEndTime)
{
COMMAND_HEADER("SetYeardaySchedule", DOOR_LOCK_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_SET_YEARDAY_SCHEDULE_COMMAND_ID)
.Put8(scheduleId)
.Put16(userId)
@@ -1897,7 +1914,7 @@
/*
* Command UnlockDoor
*/
-PacketBufferHandle encodeDoorLockClusterUnlockDoorCommand(EndpointId destinationEndpoint, char * pin)
+PacketBufferHandle encodeDoorLockClusterUnlockDoorCommand(uint8_t seqNum, EndpointId destinationEndpoint, char * pin)
{
COMMAND_HEADER("UnlockDoor", DOOR_LOCK_CLUSTER_ID);
size_t pinStrLen = strlen(pin);
@@ -1907,7 +1924,7 @@
return PacketBufferHandle();
}
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_UNLOCK_DOOR_COMMAND_ID)
.Put(static_cast<uint8_t>(pinStrLen))
.Put(pin);
@@ -1917,8 +1934,8 @@
/*
* Command UnlockWithTimeout
*/
-PacketBufferHandle encodeDoorLockClusterUnlockWithTimeoutCommand(EndpointId destinationEndpoint, uint16_t timeoutInSeconds,
- char * pin)
+PacketBufferHandle encodeDoorLockClusterUnlockWithTimeoutCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t timeoutInSeconds, char * pin)
{
COMMAND_HEADER("UnlockWithTimeout", DOOR_LOCK_CLUSTER_ID);
size_t pinStrLen = strlen(pin);
@@ -1928,7 +1945,7 @@
return PacketBufferHandle();
}
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID)
.Put16(timeoutInSeconds)
.Put(static_cast<uint8_t>(pinStrLen))
@@ -1936,29 +1953,29 @@
COMMAND_FOOTER();
}
-PacketBufferHandle encodeDoorLockClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeDoorLockClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverDoorLockAttributes", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute LockState
*/
-PacketBufferHandle encodeDoorLockClusterReadLockStateAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeDoorLockClusterReadLockStateAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadDoorLockLockState", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeDoorLockClusterReportLockStateAttribute(EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval)
+PacketBufferHandle encodeDoorLockClusterConfigureLockStateAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval)
{
COMMAND_HEADER("ReportDoorLockLockState", DOOR_LOCK_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16(0x0000)
@@ -1971,30 +1988,30 @@
/*
* Attribute LockType
*/
-PacketBufferHandle encodeDoorLockClusterReadLockTypeAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeDoorLockClusterReadLockTypeAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadDoorLockLockType", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
COMMAND_FOOTER();
}
/*
* Attribute ActuatorEnabled
*/
-PacketBufferHandle encodeDoorLockClusterReadActuatorEnabledAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeDoorLockClusterReadActuatorEnabledAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadDoorLockActuatorEnabled", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
COMMAND_FOOTER();
}
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeDoorLockClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeDoorLockClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadDoorLockClusterRevision", DOOR_LOCK_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -2017,7 +2034,8 @@
/*
* Command AddGroup
*/
-PacketBufferHandle encodeGroupsClusterAddGroupCommand(EndpointId destinationEndpoint, uint16_t groupId, char * groupName)
+PacketBufferHandle encodeGroupsClusterAddGroupCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId,
+ char * groupName)
{
COMMAND_HEADER("AddGroup", GROUPS_CLUSTER_ID);
size_t groupNameStrLen = strlen(groupName);
@@ -2027,7 +2045,7 @@
return PacketBufferHandle();
}
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_ADD_GROUP_COMMAND_ID)
.Put16(groupId)
.Put(static_cast<uint8_t>(groupNameStrLen))
@@ -2038,7 +2056,7 @@
/*
* Command AddGroupIfIdentifying
*/
-PacketBufferHandle encodeGroupsClusterAddGroupIfIdentifyingCommand(EndpointId destinationEndpoint, uint16_t groupId,
+PacketBufferHandle encodeGroupsClusterAddGroupIfIdentifyingCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId,
char * groupName)
{
COMMAND_HEADER("AddGroupIfIdentifying", GROUPS_CLUSTER_ID);
@@ -2049,7 +2067,7 @@
return PacketBufferHandle();
}
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID)
.Put16(groupId)
.Put(static_cast<uint8_t>(groupNameStrLen))
@@ -2060,12 +2078,12 @@
/*
* Command GetGroupMembership
*/
-PacketBufferHandle encodeGroupsClusterGetGroupMembershipCommand(EndpointId destinationEndpoint, uint8_t groupCount,
+PacketBufferHandle encodeGroupsClusterGetGroupMembershipCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t groupCount,
uint16_t groupList)
{
COMMAND_HEADER("GetGroupMembership", GROUPS_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID)
.Put8(groupCount)
.Put16(groupList);
@@ -2075,57 +2093,57 @@
/*
* Command RemoveAllGroups
*/
-PacketBufferHandle encodeGroupsClusterRemoveAllGroupsCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeGroupsClusterRemoveAllGroupsCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("RemoveAllGroups", GROUPS_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_REMOVE_ALL_GROUPS_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_REMOVE_ALL_GROUPS_COMMAND_ID);
COMMAND_FOOTER();
}
/*
* Command RemoveGroup
*/
-PacketBufferHandle encodeGroupsClusterRemoveGroupCommand(EndpointId destinationEndpoint, uint16_t groupId)
+PacketBufferHandle encodeGroupsClusterRemoveGroupCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId)
{
COMMAND_HEADER("RemoveGroup", GROUPS_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_REMOVE_GROUP_COMMAND_ID).Put16(groupId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_REMOVE_GROUP_COMMAND_ID).Put16(groupId);
COMMAND_FOOTER();
}
/*
* Command ViewGroup
*/
-PacketBufferHandle encodeGroupsClusterViewGroupCommand(EndpointId destinationEndpoint, uint16_t groupId)
+PacketBufferHandle encodeGroupsClusterViewGroupCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId)
{
COMMAND_HEADER("ViewGroup", GROUPS_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_VIEW_GROUP_COMMAND_ID).Put16(groupId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_VIEW_GROUP_COMMAND_ID).Put16(groupId);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeGroupsClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeGroupsClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverGroupsAttributes", GROUPS_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute NameSupport
*/
-PacketBufferHandle encodeGroupsClusterReadNameSupportAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeGroupsClusterReadNameSupportAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadGroupsNameSupport", GROUPS_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeGroupsClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeGroupsClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadGroupsClusterRevision", GROUPS_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -2143,58 +2161,59 @@
| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
-PacketBufferHandle encodeIasZoneClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIasZoneClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverIasZoneAttributes", IAS_ZONE_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute ZoneState
*/
-PacketBufferHandle encodeIasZoneClusterReadZoneStateAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIasZoneClusterReadZoneStateAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadIasZoneZoneState", IAS_ZONE_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
/*
* Attribute ZoneType
*/
-PacketBufferHandle encodeIasZoneClusterReadZoneTypeAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIasZoneClusterReadZoneTypeAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadIasZoneZoneType", IAS_ZONE_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
COMMAND_FOOTER();
}
/*
* Attribute ZoneStatus
*/
-PacketBufferHandle encodeIasZoneClusterReadZoneStatusAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIasZoneClusterReadZoneStatusAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadIasZoneZoneStatus", IAS_ZONE_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
COMMAND_FOOTER();
}
/*
* Attribute IasCieAddress
*/
-PacketBufferHandle encodeIasZoneClusterReadIasCieAddressAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIasZoneClusterReadIasCieAddressAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadIasZoneIasCieAddress", IAS_ZONE_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0010);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0010);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeIasZoneClusterWriteIasCieAddressAttribute(EndpointId destinationEndpoint, uint64_t iasCieAddress)
+PacketBufferHandle encodeIasZoneClusterWriteIasCieAddressAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint64_t iasCieAddress)
{
COMMAND_HEADER("WriteIasZoneIasCieAddress", IAS_ZONE_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0010)
.Put8(240)
@@ -2205,20 +2224,20 @@
/*
* Attribute ZoneId
*/
-PacketBufferHandle encodeIasZoneClusterReadZoneIdAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIasZoneClusterReadZoneIdAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadIasZoneZoneId", IAS_ZONE_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0011);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0011);
COMMAND_FOOTER();
}
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeIasZoneClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIasZoneClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadIasZoneClusterRevision", IAS_ZONE_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -2237,45 +2256,46 @@
/*
* Command Identify
*/
-PacketBufferHandle encodeIdentifyClusterIdentifyCommand(EndpointId destinationEndpoint, uint16_t identifyTime)
+PacketBufferHandle encodeIdentifyClusterIdentifyCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t identifyTime)
{
COMMAND_HEADER("Identify", IDENTIFY_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_IDENTIFY_COMMAND_ID).Put16(identifyTime);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_IDENTIFY_COMMAND_ID).Put16(identifyTime);
COMMAND_FOOTER();
}
/*
* Command IdentifyQuery
*/
-PacketBufferHandle encodeIdentifyClusterIdentifyQueryCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIdentifyClusterIdentifyQueryCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("IdentifyQuery", IDENTIFY_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_IDENTIFY_QUERY_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_IDENTIFY_QUERY_COMMAND_ID);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeIdentifyClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIdentifyClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverIdentifyAttributes", IDENTIFY_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute IdentifyTime
*/
-PacketBufferHandle encodeIdentifyClusterReadIdentifyTimeAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIdentifyClusterReadIdentifyTimeAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadIdentifyIdentifyTime", IDENTIFY_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeIdentifyClusterWriteIdentifyTimeAttribute(EndpointId destinationEndpoint, uint16_t identifyTime)
+PacketBufferHandle encodeIdentifyClusterWriteIdentifyTimeAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t identifyTime)
{
COMMAND_HEADER("WriteIdentifyIdentifyTime", IDENTIFY_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16(0x0000)
.Put8(33)
@@ -2286,10 +2306,10 @@
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeIdentifyClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeIdentifyClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadIdentifyClusterRevision", IDENTIFY_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -2314,12 +2334,12 @@
/*
* Command Move
*/
-PacketBufferHandle encodeLevelControlClusterMoveCommand(EndpointId destinationEndpoint, uint8_t moveMode, uint8_t rate,
- uint8_t optionMask, uint8_t optionOverride)
+PacketBufferHandle encodeLevelControlClusterMoveCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t moveMode,
+ uint8_t rate, uint8_t optionMask, uint8_t optionOverride)
{
COMMAND_HEADER("Move", LEVEL_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_COMMAND_ID)
.Put8(moveMode)
.Put8(rate)
@@ -2331,12 +2351,12 @@
/*
* Command MoveToLevel
*/
-PacketBufferHandle encodeLevelControlClusterMoveToLevelCommand(EndpointId destinationEndpoint, uint8_t level,
+PacketBufferHandle encodeLevelControlClusterMoveToLevelCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t level,
uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride)
{
COMMAND_HEADER("MoveToLevel", LEVEL_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_TO_LEVEL_COMMAND_ID)
.Put8(level)
.Put16(transitionTime)
@@ -2348,12 +2368,12 @@
/*
* Command MoveToLevelWithOnOff
*/
-PacketBufferHandle encodeLevelControlClusterMoveToLevelWithOnOffCommand(EndpointId destinationEndpoint, uint8_t level,
- uint16_t transitionTime)
+PacketBufferHandle encodeLevelControlClusterMoveToLevelWithOnOffCommand(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint8_t level, uint16_t transitionTime)
{
COMMAND_HEADER("MoveToLevelWithOnOff", LEVEL_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID)
.Put8(level)
.Put16(transitionTime);
@@ -2363,22 +2383,24 @@
/*
* Command MoveWithOnOff
*/
-PacketBufferHandle encodeLevelControlClusterMoveWithOnOffCommand(EndpointId destinationEndpoint, uint8_t moveMode, uint8_t rate)
+PacketBufferHandle encodeLevelControlClusterMoveWithOnOffCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t moveMode,
+ uint8_t rate)
{
COMMAND_HEADER("MoveWithOnOff", LEVEL_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_MOVE_WITH_ON_OFF_COMMAND_ID).Put8(moveMode).Put8(rate);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MOVE_WITH_ON_OFF_COMMAND_ID).Put8(moveMode).Put8(rate);
COMMAND_FOOTER();
}
/*
* Command Step
*/
-PacketBufferHandle encodeLevelControlClusterStepCommand(EndpointId destinationEndpoint, uint8_t stepMode, uint8_t stepSize,
- uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride)
+PacketBufferHandle encodeLevelControlClusterStepCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t stepMode,
+ uint8_t stepSize, uint16_t transitionTime, uint8_t optionMask,
+ uint8_t optionOverride)
{
COMMAND_HEADER("Step", LEVEL_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_STEP_COMMAND_ID)
.Put8(stepMode)
.Put8(stepSize)
@@ -2391,12 +2413,12 @@
/*
* Command StepWithOnOff
*/
-PacketBufferHandle encodeLevelControlClusterStepWithOnOffCommand(EndpointId destinationEndpoint, uint8_t stepMode, uint8_t stepSize,
- uint16_t transitionTime)
+PacketBufferHandle encodeLevelControlClusterStepWithOnOffCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t stepMode,
+ uint8_t stepSize, uint16_t transitionTime)
{
COMMAND_HEADER("StepWithOnOff", LEVEL_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_STEP_WITH_ON_OFF_COMMAND_ID)
.Put8(stepMode)
.Put8(stepSize)
@@ -2407,46 +2429,48 @@
/*
* Command Stop
*/
-PacketBufferHandle encodeLevelControlClusterStopCommand(EndpointId destinationEndpoint, uint8_t optionMask, uint8_t optionOverride)
+PacketBufferHandle encodeLevelControlClusterStopCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t optionMask,
+ uint8_t optionOverride)
{
COMMAND_HEADER("Stop", LEVEL_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_STOP_COMMAND_ID).Put8(optionMask).Put8(optionOverride);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_STOP_COMMAND_ID).Put8(optionMask).Put8(optionOverride);
COMMAND_FOOTER();
}
/*
* Command StopWithOnOff
*/
-PacketBufferHandle encodeLevelControlClusterStopWithOnOffCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeLevelControlClusterStopWithOnOffCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("StopWithOnOff", LEVEL_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_STOP_WITH_ON_OFF_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_STOP_WITH_ON_OFF_COMMAND_ID);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeLevelControlClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeLevelControlClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverLevelControlAttributes", LEVEL_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute CurrentLevel
*/
-PacketBufferHandle encodeLevelControlClusterReadCurrentLevelAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeLevelControlClusterReadCurrentLevelAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadLevelControlCurrentLevel", LEVEL_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeLevelControlClusterReportCurrentLevelAttribute(EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval, uint8_t change)
+PacketBufferHandle encodeLevelControlClusterConfigureCurrentLevelAttribute(uint8_t seqNum, EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval,
+ uint8_t change)
{
COMMAND_HEADER("ReportLevelControlCurrentLevel", LEVEL_CONTROL_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16(0x0000)
@@ -2460,10 +2484,10 @@
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeLevelControlClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeLevelControlClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadLevelControlClusterRevision", LEVEL_CONTROL_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -2483,56 +2507,56 @@
/*
* Command Off
*/
-PacketBufferHandle encodeOnOffClusterOffCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeOnOffClusterOffCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("Off", ON_OFF_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_OFF_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_OFF_COMMAND_ID);
COMMAND_FOOTER();
}
/*
* Command On
*/
-PacketBufferHandle encodeOnOffClusterOnCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeOnOffClusterOnCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("On", ON_OFF_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_ON_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_ON_COMMAND_ID);
COMMAND_FOOTER();
}
/*
* Command Toggle
*/
-PacketBufferHandle encodeOnOffClusterToggleCommand(EndpointId destinationEndpoint)
+PacketBufferHandle encodeOnOffClusterToggleCommand(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("Toggle", ON_OFF_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_TOGGLE_COMMAND_ID);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_TOGGLE_COMMAND_ID);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeOnOffClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeOnOffClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverOnOffAttributes", ON_OFF_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute OnOff
*/
-PacketBufferHandle encodeOnOffClusterReadOnOffAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeOnOffClusterReadOnOffAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadOnOffOnOff", ON_OFF_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeOnOffClusterReportOnOffAttribute(EndpointId destinationEndpoint, uint16_t minInterval,
- uint16_t maxInterval)
+PacketBufferHandle encodeOnOffClusterConfigureOnOffAttribute(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t minInterval,
+ uint16_t maxInterval)
{
COMMAND_HEADER("ReportOnOffOnOff", ON_OFF_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16(0x0000)
@@ -2545,10 +2569,10 @@
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeOnOffClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeOnOffClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadOnOffClusterRevision", ON_OFF_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -2576,9 +2600,9 @@
/*
* Command AddScene
*/
-PacketBufferHandle encodeScenesClusterAddSceneCommand(EndpointId destinationEndpoint, uint16_t groupId, uint8_t sceneId,
- uint16_t transitionTime, char * sceneName, chip::ClusterId clusterId,
- uint8_t length, uint8_t value)
+PacketBufferHandle encodeScenesClusterAddSceneCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId,
+ uint8_t sceneId, uint16_t transitionTime, char * sceneName,
+ chip::ClusterId clusterId, uint8_t length, uint8_t value)
{
COMMAND_HEADER("AddScene", SCENES_CLUSTER_ID);
size_t sceneNameStrLen = strlen(sceneName);
@@ -2588,7 +2612,7 @@
return PacketBufferHandle();
}
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_ADD_SCENE_COMMAND_ID)
.Put16(groupId)
.Put8(sceneId)
@@ -2604,22 +2628,22 @@
/*
* Command GetSceneMembership
*/
-PacketBufferHandle encodeScenesClusterGetSceneMembershipCommand(EndpointId destinationEndpoint, uint16_t groupId)
+PacketBufferHandle encodeScenesClusterGetSceneMembershipCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId)
{
COMMAND_HEADER("GetSceneMembership", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID).Put16(groupId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID).Put16(groupId);
COMMAND_FOOTER();
}
/*
* Command RecallScene
*/
-PacketBufferHandle encodeScenesClusterRecallSceneCommand(EndpointId destinationEndpoint, uint16_t groupId, uint8_t sceneId,
- uint16_t transitionTime)
+PacketBufferHandle encodeScenesClusterRecallSceneCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId,
+ uint8_t sceneId, uint16_t transitionTime)
{
COMMAND_HEADER("RecallScene", SCENES_CLUSTER_ID);
buf.Put8(kFrameControlClusterSpecificCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_RECALL_SCENE_COMMAND_ID)
.Put16(groupId)
.Put8(sceneId)
@@ -2630,107 +2654,110 @@
/*
* Command RemoveAllScenes
*/
-PacketBufferHandle encodeScenesClusterRemoveAllScenesCommand(EndpointId destinationEndpoint, uint16_t groupId)
+PacketBufferHandle encodeScenesClusterRemoveAllScenesCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId)
{
COMMAND_HEADER("RemoveAllScenes", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_REMOVE_ALL_SCENES_COMMAND_ID).Put16(groupId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_REMOVE_ALL_SCENES_COMMAND_ID).Put16(groupId);
COMMAND_FOOTER();
}
/*
* Command RemoveScene
*/
-PacketBufferHandle encodeScenesClusterRemoveSceneCommand(EndpointId destinationEndpoint, uint16_t groupId, uint8_t sceneId)
+PacketBufferHandle encodeScenesClusterRemoveSceneCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId,
+ uint8_t sceneId)
{
COMMAND_HEADER("RemoveScene", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_REMOVE_SCENE_COMMAND_ID).Put16(groupId).Put8(sceneId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_REMOVE_SCENE_COMMAND_ID).Put16(groupId).Put8(sceneId);
COMMAND_FOOTER();
}
/*
* Command StoreScene
*/
-PacketBufferHandle encodeScenesClusterStoreSceneCommand(EndpointId destinationEndpoint, uint16_t groupId, uint8_t sceneId)
+PacketBufferHandle encodeScenesClusterStoreSceneCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId,
+ uint8_t sceneId)
{
COMMAND_HEADER("StoreScene", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_STORE_SCENE_COMMAND_ID).Put16(groupId).Put8(sceneId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_STORE_SCENE_COMMAND_ID).Put16(groupId).Put8(sceneId);
COMMAND_FOOTER();
}
/*
* Command ViewScene
*/
-PacketBufferHandle encodeScenesClusterViewSceneCommand(EndpointId destinationEndpoint, uint16_t groupId, uint8_t sceneId)
+PacketBufferHandle encodeScenesClusterViewSceneCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t groupId,
+ uint8_t sceneId)
{
COMMAND_HEADER("ViewScene", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlClusterSpecificCommand).Put8(kSeqNum).Put8(ZCL_VIEW_SCENE_COMMAND_ID).Put16(groupId).Put8(sceneId);
+ buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_VIEW_SCENE_COMMAND_ID).Put16(groupId).Put8(sceneId);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeScenesClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeScenesClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverScenesAttributes", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute SceneCount
*/
-PacketBufferHandle encodeScenesClusterReadSceneCountAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeScenesClusterReadSceneCountAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadScenesSceneCount", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
/*
* Attribute CurrentScene
*/
-PacketBufferHandle encodeScenesClusterReadCurrentSceneAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeScenesClusterReadCurrentSceneAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadScenesCurrentScene", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
COMMAND_FOOTER();
}
/*
* Attribute CurrentGroup
*/
-PacketBufferHandle encodeScenesClusterReadCurrentGroupAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeScenesClusterReadCurrentGroupAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadScenesCurrentGroup", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
COMMAND_FOOTER();
}
/*
* Attribute SceneValid
*/
-PacketBufferHandle encodeScenesClusterReadSceneValidAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeScenesClusterReadSceneValidAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadScenesSceneValid", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0003);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0003);
COMMAND_FOOTER();
}
/*
* Attribute NameSupport
*/
-PacketBufferHandle encodeScenesClusterReadNameSupportAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeScenesClusterReadNameSupportAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadScenesNameSupport", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0004);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0004);
COMMAND_FOOTER();
}
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeScenesClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeScenesClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadScenesClusterRevision", SCENES_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
@@ -2746,30 +2773,31 @@
| * ClusterRevision | 0xFFFD |
\*----------------------------------------------------------------------------*/
-PacketBufferHandle encodeTemperatureMeasurementClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encodeTemperatureMeasurementClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("DiscoverTemperatureMeasurementAttributes", TEMP_MEASUREMENT_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF);
COMMAND_FOOTER();
}
/*
* Attribute MeasuredValue
*/
-PacketBufferHandle encodeTemperatureMeasurementClusterReadMeasuredValueAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeTemperatureMeasurementClusterReadMeasuredValueAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadTemperatureMeasurementMeasuredValue", TEMP_MEASUREMENT_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000);
COMMAND_FOOTER();
}
-PacketBufferHandle encodeTemperatureMeasurementClusterReportMeasuredValueAttribute(EndpointId destinationEndpoint,
- uint16_t minInterval, uint16_t maxInterval,
- int16_t change)
+PacketBufferHandle encodeTemperatureMeasurementClusterConfigureMeasuredValueAttribute(uint8_t seqNum,
+ EndpointId destinationEndpoint,
+ uint16_t minInterval, uint16_t maxInterval,
+ int16_t change)
{
COMMAND_HEADER("ReportTemperatureMeasurementMeasuredValue", TEMP_MEASUREMENT_CLUSTER_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16(0x0000)
@@ -2783,29 +2811,29 @@
/*
* Attribute MinMeasuredValue
*/
-PacketBufferHandle encodeTemperatureMeasurementClusterReadMinMeasuredValueAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeTemperatureMeasurementClusterReadMinMeasuredValueAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadTemperatureMeasurementMinMeasuredValue", TEMP_MEASUREMENT_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001);
COMMAND_FOOTER();
}
/*
* Attribute MaxMeasuredValue
*/
-PacketBufferHandle encodeTemperatureMeasurementClusterReadMaxMeasuredValueAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeTemperatureMeasurementClusterReadMaxMeasuredValueAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadTemperatureMeasurementMaxMeasuredValue", TEMP_MEASUREMENT_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002);
COMMAND_FOOTER();
}
/*
* Attribute ClusterRevision
*/
-PacketBufferHandle encodeTemperatureMeasurementClusterReadClusterRevisionAttribute(EndpointId destinationEndpoint)
+PacketBufferHandle encodeTemperatureMeasurementClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("ReadTemperatureMeasurementClusterRevision", TEMP_MEASUREMENT_CLUSTER_ID);
- buf.Put8(kFrameControlGlobalCommand).Put8(kSeqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
+ buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD);
COMMAND_FOOTER();
}
diff --git a/src/app/server/DataModelHandler.cpp b/src/app/server/DataModelHandler.cpp
index 9aa9732..b3b60f8 100644
--- a/src/app/server/DataModelHandler.cpp
+++ b/src/app/server/DataModelHandler.cpp
@@ -22,8 +22,11 @@
#include <app/server/DataModelHandler.h>
+#if __has_include("gen/endpoint_config.h")
+#define USE_ZAP_CONFIG 1
#include <app/util/attribute-storage.h>
#include <app/util/util.h>
+#endif
#include <support/logging/CHIPLogging.h>
#ifdef EMBER_AF_PLUGIN_REPORTING_SERVER
@@ -40,6 +43,8 @@
void InitDataModelHandler()
{
+#ifdef USE_ZAP_CONFIG
+ ChipLogProgress(Zcl, "Using ZAP configuration...");
emberAfEndpointConfigure();
emberAfInit();
@@ -57,10 +62,12 @@
#ifdef EMBER_AF_PLUGIN_IAS_ZONE_SERVER
emberAfPluginIasZoneServerStackStatusCallback(status);
#endif
+#endif
}
void HandleDataModelMessage(NodeId nodeId, System::PacketBufferHandle buffer)
{
+#ifdef USE_ZAP_CONFIG
EmberApsFrame frame;
bool ok = extractApsFrame(buffer->Start(), buffer->DataLength(), &frame) > 0;
if (ok)
@@ -89,4 +96,5 @@
{
ChipLogDetail(Zcl, "Data model processing failure!");
}
+#endif
}
diff --git a/src/app/util/CHIPDeviceCallbacksMgr.cpp b/src/app/util/CHIPDeviceCallbacksMgr.cpp
new file mode 100644
index 0000000..9c1bc2b
--- /dev/null
+++ b/src/app/util/CHIPDeviceCallbacksMgr.cpp
@@ -0,0 +1,122 @@
+/*
+ *
+ * Copyright (c) 2020 Project CHIP Authors
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * This file contains implementations for the CallbacksMgr class. The object of this
+ * class will be used by Controller applications to interact with ZCL messages.
+ * This class provide mechanism to store callbacks for global message dispatching
+ * across the ZCL stack.
+ */
+
+#include "CHIPDeviceCallbacksMgr.h"
+
+#include <core/CHIPCore.h>
+#include <inttypes.h>
+#include <support/ReturnMacros.h>
+
+namespace {
+struct ResponseCallbackInfo
+{
+ chip::NodeId nodeId;
+ uint8_t sequenceNumber;
+
+ bool operator==(ResponseCallbackInfo const & other) { return nodeId == other.nodeId && sequenceNumber == other.sequenceNumber; }
+};
+
+struct ReportCallbackInfo
+{
+ chip::NodeId nodeId;
+ chip::EndpointId endpointId;
+ chip::ClusterId clusterId;
+ chip::AttributeId attributeId;
+
+ bool operator==(ReportCallbackInfo const & other)
+ {
+ return nodeId == other.nodeId && endpointId == other.endpointId && clusterId == other.clusterId &&
+ attributeId == other.attributeId;
+ }
+};
+} // namespace
+
+namespace chip {
+namespace app {
+
+CHIP_ERROR CHIPDeviceCallbacksMgr::AddResponseCallback(NodeId nodeId, uint8_t sequenceNumber,
+ Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ VerifyOrReturnError(onSuccessCallback != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
+ VerifyOrReturnError(onFailureCallback != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
+
+ ResponseCallbackInfo info = { nodeId, sequenceNumber };
+ memcpy(&onSuccessCallback->mInfoPtr, &info, sizeof(info));
+ memcpy(&onFailureCallback->mInfoPtr, &info, sizeof(info));
+
+ // If some callbacks have already been registered for the same ResponseCallbackInfo, it usually means that the response
+ // has not been received for a previous command with the same sequenceNumber. Cancel the previously registered callbacks.
+ CancelCallback(info, mResponsesSuccess);
+ CancelCallback(info, mResponsesFailure);
+
+ mResponsesSuccess.Enqueue(onSuccessCallback);
+ mResponsesFailure.Enqueue(onFailureCallback);
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR CHIPDeviceCallbacksMgr::GetResponseCallback(NodeId nodeId, uint8_t sequenceNumber,
+ Callback::Cancelable ** onSuccessCallback,
+ Callback::Cancelable ** onFailureCallback)
+{
+ ResponseCallbackInfo info = { nodeId, sequenceNumber };
+
+ ReturnErrorOnFailure(GetCallback(info, mResponsesSuccess, onSuccessCallback));
+ (*onSuccessCallback)->Cancel();
+
+ ReturnErrorOnFailure(GetCallback(info, mResponsesFailure, onFailureCallback));
+ (*onFailureCallback)->Cancel();
+
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR CHIPDeviceCallbacksMgr::AddReportCallback(NodeId nodeId, EndpointId endpointId, ClusterId clusterId,
+ AttributeId attributeId, Callback::Cancelable * onReportCallback)
+{
+ VerifyOrReturnError(onReportCallback != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
+
+ ReportCallbackInfo info = { nodeId, endpointId, clusterId, attributeId };
+ memmove(&onReportCallback->mInfoPtr, &info, sizeof(info));
+
+ // If a callback has already been registered for the same ReportCallbackInfo, let's cancel it.
+ CancelCallback(info, mReports);
+
+ mReports.Enqueue(onReportCallback);
+ return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR CHIPDeviceCallbacksMgr::GetReportCallback(NodeId nodeId, EndpointId endpointId, ClusterId clusterId,
+ AttributeId attributeId, Callback::Cancelable ** onReportCallback)
+{
+ ReportCallbackInfo info = { nodeId, endpointId, clusterId, attributeId };
+
+ ReturnErrorOnFailure(GetCallback(info, mReports, onReportCallback));
+
+ return CHIP_NO_ERROR;
+}
+
+} // namespace app
+} // namespace chip
diff --git a/src/app/util/CHIPDeviceCallbacksMgr.h b/src/app/util/CHIPDeviceCallbacksMgr.h
new file mode 100644
index 0000000..dfb9b67
--- /dev/null
+++ b/src/app/util/CHIPDeviceCallbacksMgr.h
@@ -0,0 +1,100 @@
+/*
+ *
+ * Copyright (c) 2020 Project CHIP Authors
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ * This file contains definitions for the CallbacksMgr class. The object of this
+ * class will be used by Controller applications to interact with ZCL messages.
+ * This class provide mechanism to store callbacks for global message dispatching
+ * across the ZCL stack.
+ */
+
+#pragma once
+
+#include "basic-types.h"
+#include <core/CHIPCallback.h>
+#include <core/CHIPError.h>
+#include <support/DLLUtil.h>
+
+namespace chip {
+namespace app {
+
+class DLL_EXPORT CHIPDeviceCallbacksMgr
+{
+public:
+ CHIPDeviceCallbacksMgr(const CHIPDeviceCallbacksMgr &) = delete;
+ CHIPDeviceCallbacksMgr(const CHIPDeviceCallbacksMgr &&) = delete;
+ CHIPDeviceCallbacksMgr & operator=(const CHIPDeviceCallbacksMgr &) = delete;
+
+ static CHIPDeviceCallbacksMgr & GetInstance()
+ {
+ static CHIPDeviceCallbacksMgr instance;
+ return instance;
+ }
+
+ CHIP_ERROR AddResponseCallback(NodeId nodeId, uint8_t sequenceNumber, Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR GetResponseCallback(NodeId nodeId, uint8_t sequenceNumber, Callback::Cancelable ** onSuccessCallback,
+ Callback::Cancelable ** onFailureCallback);
+
+ CHIP_ERROR AddReportCallback(NodeId nodeId, EndpointId endpointId, ClusterId clusterId, AttributeId attributeId,
+ Callback::Cancelable * onReportCallback);
+ CHIP_ERROR GetReportCallback(NodeId nodeId, EndpointId endpointId, ClusterId clusterId, AttributeId attributeId,
+ Callback::Cancelable ** onReportCallback);
+
+private:
+ CHIPDeviceCallbacksMgr() {}
+
+ template <typename T>
+ CHIP_ERROR CancelCallback(T & info, Callback::CallbackDeque & queue)
+ {
+ Callback::Cancelable * ca = nullptr;
+ CHIP_ERROR err = GetCallback(info, queue, &ca);
+ if (CHIP_NO_ERROR == err)
+ {
+ ca->Cancel();
+ }
+
+ return err;
+ }
+
+ template <typename T>
+ CHIP_ERROR GetCallback(T & info, Callback::CallbackDeque & queue, Callback::Cancelable ** callback)
+ {
+ Callback::Cancelable * ca = &queue;
+ while (ca != nullptr && ca->mNext != &queue)
+ {
+ if (*reinterpret_cast<T *>(&ca->mNext->mInfoPtr) == info)
+ {
+ *callback = ca->mNext;
+ return CHIP_NO_ERROR;
+ }
+
+ ca = ca->mNext;
+ }
+
+ return CHIP_ERROR_KEY_NOT_FOUND;
+ }
+
+ Callback::CallbackDeque mResponsesSuccess;
+ Callback::CallbackDeque mResponsesFailure;
+ Callback::CallbackDeque mReports;
+};
+
+} // namespace app
+} // namespace chip
diff --git a/src/app/zap-templates/app-templates.json b/src/app/zap-templates/app-templates.json
index ed6fe36..78f2924 100644
--- a/src/app/zap-templates/app-templates.json
+++ b/src/app/zap-templates/app-templates.json
@@ -1,7 +1,11 @@
{
"name": "CHIP Application templates",
"version": "chip-v1",
- "helpers": ["common/StringHelper.js", "templates/app/helper.js"],
+ "helpers": [
+ "common/StringHelper.js",
+ "templates/app/helper.js",
+ "templates/chip/helper.js"
+ ],
"override": "common/override.js",
"partials": [
{
@@ -9,6 +13,14 @@
"path": "partials/header.zapt"
},
{
+ "name": "clusters_header",
+ "path": "partials/clusters_header.zapt"
+ },
+ {
+ "name": "cluster_header",
+ "path": "partials/cluster_header.zapt"
+ },
+ {
"name": "command_handler_cluster_commands",
"path": "partials/command_handler_cluster_commands.zapt"
}
@@ -98,6 +110,26 @@
"path": "templates/app/print-cluster.zapt",
"name": "ZCL print-cluster header",
"output": "print-cluster.h"
+ },
+ {
+ "path": "templates/app/CHIPClientCallbacks.zapt",
+ "name": "CHIP Client Callbacks header",
+ "output": "CHIPClientCallbacks.h"
+ },
+ {
+ "path": "templates/app/CHIPClientCallbacks-src.zapt",
+ "name": "CHIP Client Callbacks",
+ "output": "CHIPClientCallbacks.cpp"
+ },
+ {
+ "path": "templates/chip/CHIPClustersObjc.zapt",
+ "name": "Objc ZCL API Header",
+ "output": "CHIPClustersObjc.h"
+ },
+ {
+ "path": "templates/chip/CHIPClustersObjc-src.zapt",
+ "name": "Objc ZCL API",
+ "output": "CHIPClustersObjc.mm"
}
]
}
diff --git a/src/app/zap-templates/chip-templates.json b/src/app/zap-templates/chip-templates.json
index bedcd28..812d1db 100644
--- a/src/app/zap-templates/chip-templates.json
+++ b/src/app/zap-templates/chip-templates.json
@@ -33,16 +33,6 @@
"output": "src/controller/CHIPClusters.cpp"
},
{
- "path": "templates/chip/CHIPClustersObjc.zapt",
- "name": "Objc ZCL API Header",
- "output": "/src/darwin/Framework/CHIP/CHIPClustersObjc.h"
- },
- {
- "path": "templates/chip/CHIPClustersObjc-src.zapt",
- "name": "Objc ZCL API",
- "output": "/src/darwin/Framework/CHIP/CHIPClustersObjc.mm"
- },
- {
"path": "templates/chip/chip-zcl-zpro-codec-api.zapt",
"name": "CHIP ZCL API Header",
"output": "src/app/chip-zcl-zpro-codec-api.h"
diff --git a/src/app/zap-templates/partials/clusters_header.zapt b/src/app/zap-templates/partials/clusters_header.zapt
index 3b56c38..0dfef70 100644
--- a/src/app/zap-templates/partials/clusters_header.zapt
+++ b/src/app/zap-templates/partials/clusters_header.zapt
@@ -1,7 +1,7 @@
{{pad '/*' 78 '-'}}*\
{{pad "| Cluster Name" 70 ' '}}{{pad "| ID" 9 ' '}}|
{{pad "|" 70 '-'}}{{pad "+" 9 '-'}}|
-{{#chip_server_clusters}}
+{{#chip_clusters}}
{{pad (concat "| " (asCamelCased name false)) 70 " "}}{{pad (concat "| " (asHex code 4)) 9 ' '}}|
-{{/chip_server_clusters}}
+{{/chip_clusters}}
{{pad '\*' 78 '-'}}*/
diff --git a/src/app/zap-templates/templates/app/CHIPClientCallbacks-src.zapt b/src/app/zap-templates/templates/app/CHIPClientCallbacks-src.zapt
new file mode 100644
index 0000000..d05e75a
--- /dev/null
+++ b/src/app/zap-templates/templates/app/CHIPClientCallbacks-src.zapt
@@ -0,0 +1,839 @@
+{{> header}}
+
+#include "gen/CHIPClientCallbacks.h"
+
+#include "gen/enums.h"
+#include <app/util/af.h>
+#include <app/util/af-enums.h>
+#include <app/util/basic-types.h>
+#include <app/util/CHIPDeviceCallbacksMgr.h>
+#include <core/CHIPEncoding.h>
+#include <support/SafeInt.h>
+#include <support/logging/CHIPLogging.h>
+
+using namespace ::chip;
+
+#define CHECK_MESSAGE_LENGTH(value) \
+ if (!chip::CanCastTo<uint16_t>(value)) \
+ { \
+ ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ if (messageLen < value) \
+ { \
+ ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
+
+#define GET_RESPONSE_CALLBACKS(name) \
+ Callback::Cancelable * onSuccessCallback = nullptr; \
+ Callback::Cancelable * onFailureCallback = nullptr; \
+ NodeId sourceId = emberAfCurrentCommand()->source; \
+ uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \
+ CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onSuccessCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing success callback", name); \
+ } \
+ \
+ if (onFailureCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing failure callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+#define GET_REPORT_CALLBACK(name) \
+ Callback::Cancelable * onReportCallback = nullptr; \
+ CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onReportCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing report callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+void LogStatus(uint8_t status)
+{
+ switch (status)
+ {
+ case EMBER_ZCL_STATUS_SUCCESS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_FIELD:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_VALUE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_READ_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_FOUND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_SELECTOR:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WRITE_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ACTION_DENIED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_TIMEOUT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ABORT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_LIMIT_REACHED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status);
+ break;
+ default:
+ ChipLogError(Zcl, "Unknow status: 0x%02x", status);
+ break;
+ }
+}
+
+// Singleton instance of the callbacks manager
+app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance();
+
+bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ ChipLogProgress(Zcl, "DefaultResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " CommandId: 0x%02x", commandId);
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback");
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb = Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, static_cast<uint8_t>(status));
+ }
+
+ return true;
+}
+
+bool emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadAttributesResponseCallback");
+
+ // struct readAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ Callback::Callback<DefaultFailureCallback> * cb = Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb = Callback::Callback<Int8uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb = Callback::Callback<Int16uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb = Callback::Callback<Int32uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb = Callback::Callback<Int64uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb = Callback::Callback<BooleanAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb = Callback::Callback<Int8sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb = Callback::Callback<Int16sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb = Callback::Callback<Int32sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb = Callback::Callback<Int64sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb = Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute read
+ // per read command. So if multiple attributes are read at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes read at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "WriteAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback");
+
+ // struct writeAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb = Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute written
+ // per write command. So if multiple attributes are written at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback");
+
+ // struct configureReportingResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb = Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute report
+ // per configure command. So if multiple attributes are configured at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback");
+
+ // struct readReportingConfigurationResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval);
+
+ // FIXME: unk is not supported yet.
+
+ Callback::Callback<ReadReportingConfigurationReportedCallback> * cb = Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout);
+
+ Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb = Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ }
+ }
+
+ return true;
+}
+
+bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen,
+ bool extended)
+{
+ ChipLogProgress(Zcl, "DiscoverAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " extended: %d", extended);
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback");
+
+ // struct discoverAttributesResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+ }
+
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+{{#all_user_clusters}}
+{{#if (isClient side) }}
+{{#if (user_cluster_has_enabled_command name side)}}
+{{#all_user_cluster_commands}}
+{{#if (isStrEqual clusterName parent.name)}}
+{{#if (isCommandAvailable parent.side incoming outgoing commandSource name)}}
+bool emberAf{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}Callback({{#zcl_command_arguments}}{{asUnderlyingZclType type}} {{asSymbol label}}{{#unless (isLastElement index count)}}, {{/unless}}{{/zcl_command_arguments}})
+{
+ ChipLogProgress(Zcl, "{{asCamelCased name false}}:");
+ {{#zcl_command_arguments}}
+ {{#if (isStrEqual label "status")}}
+ LogStatus(status);
+ {{else}}
+ ChipLogProgress(Zcl, " {{asSymbol label}}: {{asPrintFormat type}}", {{asSymbol label}});
+ {{/if}}
+ {{/zcl_command_arguments}}
+
+ GET_RESPONSE_CALLBACKS("{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}Callback");
+
+ {{#zcl_command_arguments}}
+ {{#if (isStrEqual label "status")}}
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb = Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+ {{/if}}
+ {{/zcl_command_arguments}}
+
+ Callback::Callback<{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}Callback> * cb = Callback::Callback<{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}Callback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext{{#zcl_command_arguments}}{{#unless (isStrEqual label "status")}}, {{asSymbol label}}{{/unless}}{{/zcl_command_arguments}});
+ return true;
+}
+
+{{/if}}
+{{/if}}
+{{/all_user_cluster_commands}}
+{{/if}}
+{{/if}}
+{{/all_user_clusters}}
+
+bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "emberAfReportAttributeCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ NodeId sourceId = emberAfCurrentCommand()->source;
+ ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId);
+
+ EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
+ ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId);
+
+ // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed.
+ Callback::Cancelable * onFailureCallback = nullptr;
+
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ GET_REPORT_CALLBACK("emberAfReportAttributesCallback");
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb = Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb = Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb = Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb = Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb = Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb = Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb = Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb = Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb = Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+
+ return true;
+}
diff --git a/src/app/zap-templates/templates/app/CHIPClientCallbacks.zapt b/src/app/zap-templates/templates/app/CHIPClientCallbacks.zapt
new file mode 100644
index 0000000..a0804d8
--- /dev/null
+++ b/src/app/zap-templates/templates/app/CHIPClientCallbacks.zapt
@@ -0,0 +1,35 @@
+{{> header}}
+
+#pragma once
+
+#include <inttypes.h>
+
+// Global Response Callbacks
+typedef void (*DefaultSuccessCallback)(void * context);
+typedef void (*DefaultFailureCallback)(void * context, uint8_t status);
+typedef void (*BooleanAttributeCallback)(void * context, bool value);
+typedef void (*Int8uAttributeCallback)(void * context, uint8_t value);
+typedef void (*Int8sAttributeCallback)(void * context, int8_t value);
+typedef void (*Int16uAttributeCallback)(void * context, uint16_t value);
+typedef void (*Int16sAttributeCallback)(void * context, int16_t value);
+typedef void (*Int32uAttributeCallback)(void * context, uint32_t value);
+typedef void (*Int32sAttributeCallback)(void * context, int32_t value);
+typedef void (*Int64uAttributeCallback)(void * context, uint64_t value);
+typedef void (*Int64sAttributeCallback)(void * context, int64_t value);
+typedef void (*ReadReportingConfigurationReportedCallback)(void* context, uint16_t minInterval, uint16_t maxInterval);
+typedef void (*ReadReportingConfigurationReceivedCallback)(void* context, uint16_t timeout);
+
+// Cluster Specific Response Callbacks
+{{#all_user_clusters}}
+{{#if (isClient side) }}
+{{#if (user_cluster_has_enabled_command name side)}}
+{{#all_user_cluster_commands}}
+{{#if (isStrEqual clusterName parent.name)}}
+{{#if (isCommandAvailable parent.side incoming outgoing commandSource name)}}
+typedef void (*{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}Callback)(void * context{{#zcl_command_arguments}}{{#unless (isStrEqual label "status")}}, {{asUnderlyingZclType type}} {{asSymbol label}}{{/unless}}{{/zcl_command_arguments}});
+{{/if}}
+{{/if}}
+{{/all_user_cluster_commands}}
+{{/if}}
+{{/if}}
+{{/all_user_clusters}}
diff --git a/src/app/zap-templates/templates/app/helper.js b/src/app/zap-templates/templates/app/helper.js
index 1361b26..1529e5a 100644
--- a/src/app/zap-templates/templates/app/helper.js
+++ b/src/app/zap-templates/templates/app/helper.js
@@ -314,13 +314,62 @@
// End of Endpoint-config specific helpers
+function asPrintFormat(type)
+{
+ if (StringHelper.isString(type)) {
+ return '%s';
+ }
+
+ function fn(pkgId)
+ {
+ const options = { 'hash' : {} };
+ return zclHelper.asUnderlyingZclType.call(this, type, options).then(zclType => {
+ const basicType = ChipTypesHelper.asBasicType(zclType);
+ switch (basicType) {
+ case 'int8_t':
+ return '%" PRId8 "';
+ case 'uint8_t':
+ return '%" PRIu8 "';
+ case 'int16_t':
+ return '%" PRId16 "';
+ case 'uint16_t':
+ return '%" PRIu16 "';
+ case 'int24_t':
+ return '%" PRId32 "';
+ case 'uint24_t':
+ return '%" PRIu32 "';
+ case 'int32_t':
+ return '%" PRId32 "';
+ case 'uint32_t':
+ return '%" PRIu32 "';
+ case 'int64_t':
+ return '%" PRId64 "';
+ case 'uint64_t':
+ return '%" PRIu64 "';
+ default:
+ return '%p';
+ }
+ })
+ }
+
+ const promise = templateUtil.ensureZclPackageId(this).then(fn.bind(this)).catch(err => console.log(err));
+ return templateUtil.templatePromise(this.global, promise)
+}
+
+function isFirstElement(index)
+{
+ return index == 0;
+}
+
//
// Module exports
//
+exports.asPrintFormat = asPrintFormat;
exports.asReadType = asReadType;
exports.asReadTypeLength = asReadTypeLength;
exports.asValueIfNotPresent = asValueIfNotPresent;
exports.asChipUnderlyingType = asChipUnderlyingType;
+exports.isFirstElement = isFirstElement;
exports.user_cluster_has_enabled_manufacturer_command = user_cluster_has_enabled_manufacturer_command;
exports.chip_endpoint_generated_functions = chip_endpoint_generated_functions
exports.chip_endpoint_cluster_list = chip_endpoint_cluster_list
diff --git a/src/app/zap-templates/templates/chip/CHIPClusters-src.zapt b/src/app/zap-templates/templates/chip/CHIPClusters-src.zapt
index 0419788..c3698e8 100644
--- a/src/app/zap-templates/templates/chip/CHIPClusters-src.zapt
+++ b/src/app/zap-templates/templates/chip/CHIPClusters-src.zapt
@@ -15,7 +15,7 @@
// {{asCamelCased name false}} Cluster Commands
{{#chip_server_cluster_commands}}
-CHIP_ERROR {{asCamelCased clusterName false}}Cluster::{{asCamelCased name false}}(Callback::Callback<> * onCompletion{{#chip_server_cluster_command_arguments}}, {{chipType}} {{asCamelCased label}}{{/chip_server_cluster_command_arguments}})
+CHIP_ERROR {{asCamelCased clusterName false}}Cluster::{{asCamelCased name false}}(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback{{#chip_server_cluster_command_arguments}}, {{chipType}} {{asCamelCased label}}{{/chip_server_cluster_command_arguments}})
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -50,38 +50,48 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encode{{asCamelCased clusterName false}}Cluster{{asType name}}Command(mEndpoint{{#chip_server_cluster_command_arguments}}, {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encode{{asCamelCased clusterName false}}Cluster{{asType name}}Command(seqNum, mEndpoint{{#chip_server_cluster_command_arguments}}, {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
{{/chip_server_cluster_commands}}
// {{asCamelCased name false}} Cluster Attributes
-CHIP_ERROR {{asCamelCased name false}}Cluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR {{asCamelCased name false}}Cluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encode{{asCamelCased name false}}ClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encode{{asCamelCased name false}}ClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
{{#chip_server_cluster_attributes}}
-CHIP_ERROR {{asCamelCased parent.name false}}Cluster::ReadAttribute{{asCamelCased name false}}(Callback::Callback<> * onCompletion)
+CHIP_ERROR {{asCamelCased parent.name false}}Cluster::ReadAttribute{{asCamelCased name false}}(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encode{{asCamelCased parent.name false}}ClusterRead{{asCamelCased name false}}Attribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encode{{asCamelCased parent.name false}}ClusterRead{{asCamelCased name false}}Attribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
{{#if (isWritableAttribute)}}
-CHIP_ERROR {{asCamelCased parent.name false}}Cluster::WriteAttribute{{asCamelCased name false}}(Callback::Callback<> * onCompletion, {{asUnderlyingZclType type}} value)
+CHIP_ERROR {{asCamelCased parent.name false}}Cluster::WriteAttribute{{asCamelCased name false}}(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, {{asUnderlyingZclType type}} value)
{
- System::PacketBufferHandle payload = encode{{asCamelCased parent.name false}}ClusterWrite{{asCamelCased name false}}Attribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encode{{asCamelCased parent.name false}}ClusterWrite{{asCamelCased name false}}Attribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
{{/if}}
{{#if (isReportableAttribute)}}
-CHIP_ERROR {{asCamelCased parent.name false}}Cluster::ReportAttribute{{asCamelCased name false}}(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange, uint16_t minInterval, uint16_t maxInterval{{#unless (isDiscreteType)}}, {{chipType}} change{{/unless}})
+CHIP_ERROR {{asCamelCased parent.name false}}Cluster::ConfigureAttribute{{asCamelCased name false}}(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t minInterval, uint16_t maxInterval{{#unless (isDiscreteType)}}, {{chipType}} change{{/unless}})
{
- System::PacketBufferHandle payload = encode{{asCamelCased parent.name false}}ClusterReport{{asCamelCased name false}}Attribute(mEndpoint, minInterval, maxInterval{{#unless (isDiscreteType)}}, change{{/unless}});
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encode{{asCamelCased parent.name false}}ClusterConfigure{{asCamelCased name false}}Attribute(seqNum, mEndpoint, minInterval, maxInterval{{#unless (isDiscreteType)}}, change{{/unless}});
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
+}
+
+CHIP_ERROR {{asCamelCased parent.name false}}Cluster::ReportAttribute{{asCamelCased name false}}(Callback::Cancelable * onReportCallback)
+{
+ return RequestAttributeReporting({{asHex attributeCode 4}}, onReportCallback);
}
{{/if}}
diff --git a/src/app/zap-templates/templates/chip/CHIPClusters.zapt b/src/app/zap-templates/templates/chip/CHIPClusters.zapt
index a59a972..03f72ac 100644
--- a/src/app/zap-templates/templates/chip/CHIPClusters.zapt
+++ b/src/app/zap-templates/templates/chip/CHIPClusters.zapt
@@ -24,22 +24,23 @@
// Cluster Commands
{{/first}}
- CHIP_ERROR {{asCamelCased name false}}(Callback::Callback<> * onCompletion{{#chip_server_cluster_command_arguments}}, {{chipType}} {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
+ CHIP_ERROR {{asCamelCased name false}}(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback{{#chip_server_cluster_command_arguments}}, {{chipType}} {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
{{/chip_server_cluster_commands}}
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
{{#chip_server_cluster_attributes}}
- CHIP_ERROR ReadAttribute{{asCamelCased name false}}(Callback::Callback<> * onCompletion);
+ CHIP_ERROR ReadAttribute{{asCamelCased name false}}(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
{{/chip_server_cluster_attributes}}
{{#chip_server_cluster_attributes}}
{{#if (isWritableAttribute)}}
- CHIP_ERROR WriteAttribute{{asCamelCased name false}}(Callback::Callback<> * onCompletion, {{asUnderlyingZclType type}} value);
+ CHIP_ERROR WriteAttribute{{asCamelCased name false}}(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, {{asUnderlyingZclType type}} value);
{{/if}}
{{/chip_server_cluster_attributes}}
{{#chip_server_cluster_attributes}}
{{#if (isReportableAttribute)}}
- CHIP_ERROR ReportAttribute{{asCamelCased name false}}(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange, uint16_t minInterval, uint16_t maxInterval{{#unless (isDiscreteType)}}, {{chipType}} change{{/unless}});
+ CHIP_ERROR ConfigureAttribute{{asCamelCased name false}}(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t minInterval, uint16_t maxInterval{{#unless (isDiscreteType)}}, {{chipType}} change{{/unless}});
+ CHIP_ERROR ReportAttribute{{asCamelCased name false}}(Callback::Cancelable * onReportCallback);
{{/if}}
{{/chip_server_cluster_attributes}}
{{#chip_server_cluster_commands}}
diff --git a/src/app/zap-templates/templates/chip/CHIPClustersObjc-src.zapt b/src/app/zap-templates/templates/chip/CHIPClustersObjc-src.zapt
index b150786..e6c8f4d 100644
--- a/src/app/zap-templates/templates/chip/CHIPClustersObjc-src.zapt
+++ b/src/app/zap-templates/templates/chip/CHIPClustersObjc-src.zapt
@@ -2,24 +2,326 @@
#import <Foundation/Foundation.h>
-#import "CHIPCallbackBridge.h"
#import "CHIPDevice.h"
#import "CHIPDevice_Internal.h"
-#import "CHIPClustersObjc.h"
+#import "gen/CHIPClustersObjc.h"
+#import "gen/CHIPClientCallbacks.h"
#include <controller/CHIPClusters.h>
-{{#chip_server_clusters}}
+using namespace ::chip;
+
+class CHIPDefaultSuccessCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPDefaultSuccessCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultSuccessCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDefaultSuccessCallbackBridge * callback = reinterpret_cast<CHIPDefaultSuccessCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDefaultFailureCallbackBridge : public Callback::Callback<DefaultFailureCallback> {
+public:
+ CHIPDefaultFailureCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultFailureCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultFailureCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t status)
+ {
+ CHIPDefaultFailureCallbackBridge * callback = reinterpret_cast<CHIPDefaultFailureCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError* error = [NSError errorWithDomain:@"ZCL" code:status userInfo:@{NSLocalizedDescriptionKey:@""}];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPUnsupportedAttributeCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPUnsupportedAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ {
+ }
+
+ ~CHIPUnsupportedAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPUnsupportedAttributeCallbackBridge * callback = reinterpret_cast<CHIPUnsupportedAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError* error = [NSError errorWithDomain:@"ZCL" code:0 userInfo:@{NSLocalizedDescriptionKey:@"Unsuported attribute type"}];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPBooleanAttributeCallbackBridge : public Callback::Callback<BooleanAttributeCallback> {
+public:
+ CHIPBooleanAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<BooleanAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPBooleanAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, bool value)
+ {
+ CHIPBooleanAttributeCallbackBridge * callback = reinterpret_cast<CHIPBooleanAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @{ @"value": [NSNumber numberWithBool:value] });
+ if (!callback->mKeepAlive)
+ {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8uAttributeCallbackBridge : public Callback::Callback<Int8uAttributeCallback> {
+public:
+ CHIPInt8uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t value)
+ {
+ CHIPInt8uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @{ @"value": [NSNumber numberWithUnsignedChar:value] });
+ if (!callback->mKeepAlive)
+ {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8sAttributeCallbackBridge : public Callback::Callback<Int8sAttributeCallback> {
+public:
+ CHIPInt8sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int8_t value)
+ {
+ CHIPInt8sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @{ @"value": [NSNumber numberWithChar:value] });
+ if (!callback->mKeepAlive)
+ {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16uAttributeCallbackBridge : public Callback::Callback<Int16uAttributeCallback> {
+public:
+ CHIPInt16uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t value)
+ {
+ CHIPInt16uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @{ @"value": [NSNumber numberWithUnsignedShort:value] });
+ if (!callback->mKeepAlive)
+ {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16sAttributeCallbackBridge : public Callback::Callback<Int16sAttributeCallback> {
+public:
+ CHIPInt16sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int16_t value)
+ {
+ CHIPInt16sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @{ @"value": [NSNumber numberWithShort:value] });
+ if (!callback->mKeepAlive)
+ {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+{{#all_user_clusters}}
+{{#if (isClient side) }}
+{{#if (user_cluster_has_enabled_command name side)}}
+{{#all_user_cluster_commands}}
+{{#if (isStrEqual clusterName parent.name)}}
+{{#if (isCommandAvailable parent.side incoming outgoing commandSource name)}}
+class CHIP{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}CallbackBridge : public Callback::Callback<{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}Callback>
+{
+public:
+ CHIP{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}CallbackBridge(ResponseHandler handler, dispatch_queue_t queue): Callback::Callback<{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}Callback>(CallbackFn, this), mHandler(handler), mQueue(queue) {}
+
+ ~CHIP{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}CallbackBridge() {};
+
+ static void CallbackFn(void * context{{#zcl_command_arguments}}{{#unless (isStrEqual label "status")}}, {{asUnderlyingZclType type}} {{asSymbol label}}{{/unless}}{{/zcl_command_arguments}})
+ {
+ CHIP{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}CallbackBridge * callback = reinterpret_cast<CHIP{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}CallbackBridge *>(context);
+ if (callback && callback->mQueue)
+ {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @{
+ {{#zcl_command_arguments}}
+ {{#unless (isStrEqual label "status")}}
+ {{#if isArray}}
+ // {{asSymbol label}}: {{asUnderlyingZclType type}}
+ // Conversion from this type to Objc is not properly implemented yet
+ {{else if (isShortString type)}}
+ @"{{asSymbol label}}": [NSString stringWithFormat:@"%s", {{asSymbol label}}],
+ {{else}}
+ @"{{asSymbol label}}": [NSNumber numberWith{{asObjectiveCNumberType label type}}:{{asSymbol label}}],
+ {{/if}}
+ {{/unless}}
+ {{/zcl_command_arguments}}
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+{{/if}}
+{{/if}}
+{{/all_user_cluster_commands}}
+{{/if}}
+{{/if}}
+{{/all_user_clusters}}
+
+{{#chip_clusters}}
@interface CHIP{{asCamelCased name false}} ()
-@property (readonly) chip::Controller::{{asCamelCased name false}}Cluster cppCluster;
+@property (readonly) Controller::{{asCamelCased name false}}Cluster cppCluster;
@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
@end
@implementation CHIP{{asCamelCased name false}}
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
{
CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
@@ -30,21 +332,36 @@
if (self = [super init]) {
_callbackQueue = queue;
}
+
return self;
}
{{#chip_server_cluster_commands}}
-- (BOOL){{asCamelCased name}}:(CHIPDeviceCallback)onCompletion{{#chip_server_cluster_command_arguments}} {{asCamelCased label}}:({{chipType}}){{asCamelCased label}}{{/chip_server_cluster_command_arguments}}
+{{#if (zcl_command_arguments_count this.id)}}
+- (BOOL){{asCamelCased name}}:{{#chip_server_cluster_command_arguments}}{{#if (isFirstElement index)}}{{else}}{{asCamelCased label}}:{{/if}}({{asBasicType chipType}}){{asCamelCased label}} {{/chip_server_cluster_command_arguments}}completionHandler:(ResponseHandler)completionHandler
+{{else}}
+- (BOOL){{asCamelCased name}}:(ResponseHandler)completionHandler
+{{/if}}
{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
+{{#if (hasSpecificResponse name)}}
+ CHIP{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}ResponseCallbackBridge * onSuccess = new CHIP{{asCamelCased parent.name false}}Cluster{{asCamelCased name false}}ResponseCallbackBridge(completionHandler, _callbackQueue);
+{{else}}
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+{{/if}}
+ if (!onSuccess) {
return NO;
}
- CHIP_ERROR err = self.cppCluster.{{asCamelCased name false}}(callback{{#chip_server_cluster_command_arguments}}, {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.{{asCamelCased name false}}(onSuccess->Cancel(), onFailure->Cancel(){{#chip_server_cluster_command_arguments}}, {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
+ delete onSuccess;
+ delete onFailure;
return NO;
}
return YES;
@@ -52,34 +369,46 @@
{{/chip_server_cluster_commands}}
{{#chip_server_cluster_attributes}}
-- (BOOL)readAttribute{{asCamelCased name false}}:(CHIPDeviceCallback)onCompletion
+- (BOOL)readAttribute{{asCamelCased name false}}:(ResponseHandler)completionHandler
{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
+ CHIP{{asCallbackAttributeType atomicTypeId}}AttributeCallbackBridge * onSuccess = new CHIP{{asCallbackAttributeType atomicTypeId}}AttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
return NO;
}
- CHIP_ERROR err = self.cppCluster.ReadAttribute{{asCamelCased name false}}(callback);
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttribute{{asCamelCased name false}}(onSuccess->Cancel(), onFailure->Cancel());
if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
+ delete onSuccess;
+ delete onFailure;
return NO;
}
return YES;
}
{{#if (isWritableAttribute)}}
-- (BOOL)writeAttribute{{asCamelCased name false}}:(CHIPDeviceCallback)onCompletion value:({{asUnderlyingZclType type}})value
+- (BOOL)writeAttribute{{asCamelCased name false}}:({{asUnderlyingZclType type}})value completionHandler:(ResponseHandler)completionHandler
{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
return NO;
}
- CHIP_ERROR err = self.cppCluster.WriteAttribute{{asCamelCased name false}}(callback, value);
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttribute{{asCamelCased name false}}(onSuccess->Cancel(), onFailure->Cancel(), value);
if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
+ delete onSuccess;
+ delete onFailure;
return NO;
}
return YES;
@@ -87,32 +416,48 @@
{{/if}}
{{#if (isReportableAttribute)}}
-- (BOOL) reportAttribute{{asCamelCased name false}}:(CHIPDeviceCallback)onCompletion onChange:(CHIPDeviceCallback)onChange minInterval:(uint16_t)minInterval maxInterval:(uint16_t)maxInterval{{#unless (isDiscreteType)}} change:({{chipType}})change{{/unless}}
+- (BOOL) configureAttribute{{asCamelCased name false}}:(uint16_t)minInterval maxInterval:(uint16_t)maxInterval{{#unless (isDiscreteType)}} change:({{chipType}})change{{/unless}} completionHandler:(ResponseHandler)completionHandler
{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
return NO;
}
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
return NO;
}
- CHIP_ERROR err = self.cppCluster.ReportAttribute{{asCamelCased name false}}(completionCallback, changeCallback, minInterval, maxInterval{{#unless (isDiscreteType)}}, change{{/unless}});
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttribute{{asCamelCased name false}}(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval{{#unless (isDiscreteType)}}, change{{/unless}});
if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
+ delete onSuccess;
+ delete onFailure;
return NO;
}
return YES;
}
+- (BOOL) reportAttribute{{asCamelCased name false}}:(ResponseHandler)reportHandler
+{
+ CHIP{{asCallbackAttributeType atomicTypeId}}AttributeCallbackBridge * onReport = new CHIP{{asCallbackAttributeType atomicTypeId}}AttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttribute{{asCamelCased name false}}(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
{{/if}}
{{/chip_server_cluster_attributes}}
@end
-{{/chip_server_clusters}}
+{{/chip_clusters}}
diff --git a/src/app/zap-templates/templates/chip/CHIPClustersObjc.zapt b/src/app/zap-templates/templates/chip/CHIPClustersObjc.zapt
index 7bd3972..bc186c5a 100644
--- a/src/app/zap-templates/templates/chip/CHIPClustersObjc.zapt
+++ b/src/app/zap-templates/templates/chip/CHIPClustersObjc.zapt
@@ -3,12 +3,13 @@
#ifndef CHIP_CLUSTERS_H
#define CHIP_CLUSTERS_H
-#import <CHIP/CHIPDeviceCallback.h>
#import <Foundation/Foundation.h>
+typedef void (^ResponseHandler)(NSError * _Nullable error, NSDictionary * _Nullable values);
+
@class CHIPDevice;
-{{#chip_server_clusters}}
+{{#chip_clusters}}
NS_ASSUME_NONNULL_BEGIN
@@ -16,16 +17,21 @@
- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
{{#chip_server_cluster_commands}}
-- (BOOL){{asCamelCased name}}:(CHIPDeviceCallback)onCompletion{{#chip_server_cluster_command_arguments}} {{asCamelCased label}}:({{asBasicType chipType}}){{asCamelCased label}}{{/chip_server_cluster_command_arguments}};
+{{#if (zcl_command_arguments_count this.id)}}
+- (BOOL){{asCamelCased name}}:{{#chip_server_cluster_command_arguments}}{{#if (isFirstElement index)}}{{else}}{{asCamelCased label}}:{{/if}}({{asBasicType chipType}}){{asCamelCased label}} {{/chip_server_cluster_command_arguments}}completionHandler:(ResponseHandler)completionHandler;
+{{else}}
+- (BOOL){{asCamelCased name}}:(ResponseHandler)completionHandler;
+{{/if}}
{{/chip_server_cluster_commands}}
{{#chip_server_cluster_attributes}}
-- (BOOL)readAttribute{{asCamelCased name false}}:(CHIPDeviceCallback)onCompletion;
+- (BOOL)readAttribute{{asCamelCased name false}}:(ResponseHandler)completionHandler;
{{#if (isWritableAttribute)}}
-- (BOOL)writeAttribute{{asCamelCased name false}}:(CHIPDeviceCallback)onCompletion value:({{asUnderlyingZclType type}})value;
+- (BOOL)writeAttribute{{asCamelCased name false}}:({{asUnderlyingZclType type}})value completionHandler:(ResponseHandler)completionHandler;
{{/if}}
{{#if (isReportableAttribute)}}
-- (BOOL) reportAttribute{{asCamelCased name false}}:(CHIPDeviceCallback)onCompletion onChange:(CHIPDeviceCallback)onChange minInterval:(uint16_t)minInterval maxInterval:(uint16_t)maxInterval{{#unless (isDiscreteType)}} change:({{chipType}})change{{/unless}};
+- (BOOL) configureAttribute{{asCamelCased name false}}:(uint16_t)minInterval maxInterval:(uint16_t)maxInterval{{#unless (isDiscreteType)}} change:({{chipType}})change{{/unless}} completionHandler:(ResponseHandler)completionHandler;
+- (BOOL) reportAttribute{{asCamelCased name false}}:(ResponseHandler)reportHandler;
{{/if}}
{{/chip_server_cluster_attributes}}
@@ -35,6 +41,6 @@
@end
NS_ASSUME_NONNULL_END
-{{/chip_server_clusters}}
+{{/chip_clusters}}
#endif /* CHIP_CLUSTERS_H */
diff --git a/src/app/zap-templates/templates/chip/chip-zcl-zpro-codec-api.zapt b/src/app/zap-templates/templates/chip/chip-zcl-zpro-codec-api.zapt
index 8f349ef..1f43314 100644
--- a/src/app/zap-templates/templates/chip/chip-zcl-zpro-codec-api.zapt
+++ b/src/app/zap-templates/templates/chip/chip-zcl-zpro-codec-api.zapt
@@ -17,36 +17,36 @@
* @brief
* Encode an {{asType name}} command for {{clusterName}} server into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encode{{asCamelCased clusterName false}}Cluster{{asType name}}Command(chip::EndpointId destinationEndpoint{{#chip_server_cluster_command_arguments}}, {{chipType}} {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
+chip::System::PacketBufferHandle encode{{asCamelCased clusterName false}}Cluster{{asType name}}Command(uint8_t seqNum, chip::EndpointId destinationEndpoint{{#chip_server_cluster_command_arguments}}, {{chipType}} {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
{{/chip_server_cluster_commands}}
/**
* @brief
* Encode a {{name}} server discover command into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encode{{asCamelCased name false}}ClusterDiscoverAttributes(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encode{{asCamelCased name false}}ClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);
{{#chip_server_cluster_attributes}}
/**
* @brief
* Encode a {{parent.name}} server read command for the {{name}} attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterRead{{asCamelCased name false}}Attribute(chip::EndpointId destinationEndpoint);
+chip::System::PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterRead{{asCamelCased name false}}Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);
{{#if (isWritableAttribute)}}
/**
* @brief
* Encode a {{parent.name}} server write command for the {{name}} attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterWrite{{asCamelCased name false}}Attribute(chip::EndpointId destinationEndpoint, {{asUnderlyingZclType type}} {{asCamelCased name}});
+chip::System::PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterWrite{{asCamelCased name false}}Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, {{asUnderlyingZclType type}} {{asCamelCased name}});
{{/if}}
{{#if (isReportableAttribute)}}
/**
* @brief
- * Encode a {{parent.name}} server report command for the {{name}} attribute into buffer including the APS frame
+ * Encode a {{parent.name}} server configure report command for the {{name}} attribute into buffer including the APS frame
*/
-chip::System::PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterReport{{asCamelCased name false}}Attribute(chip::EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval{{#unless (isDiscreteType)}}, {{chipType}} change{{/unless}});
+chip::System::PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterConfigure{{asCamelCased name false}}Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval{{#unless (isDiscreteType)}}, {{chipType}} change{{/unless}});
{{/if}}
{{/chip_server_cluster_attributes}}
diff --git a/src/app/zap-templates/templates/chip/encoder-src.zapt b/src/app/zap-templates/templates/chip/encoder-src.zapt
index 9aa0aa7..b4406aa 100644
--- a/src/app/zap-templates/templates/chip/encoder-src.zapt
+++ b/src/app/zap-templates/templates/chip/encoder-src.zapt
@@ -112,9 +112,6 @@
// Pick source endpoint as 1 for now
constexpr EndpointId kSourceEndpoint = 1;
-// Transaction sequence number. Just pick something for now.
-constexpr uint8_t kSeqNum = 1;
-
{{#chip_server_clusters}}
{{> cluster_header}}
@@ -122,7 +119,7 @@
/*
* Command {{asCamelCased name false}}
*/
-PacketBufferHandle encode{{asCamelCased clusterName false}}Cluster{{asType name}}Command(EndpointId destinationEndpoint{{#chip_server_cluster_command_arguments}}, {{chipType}} {{asCamelCased label}}{{/chip_server_cluster_command_arguments}})
+PacketBufferHandle encode{{asCamelCased clusterName false}}Cluster{{asType name}}Command(uint8_t seqNum, EndpointId destinationEndpoint{{#chip_server_cluster_command_arguments}}, {{chipType}} {{asCamelCased label}}{{/chip_server_cluster_command_arguments}})
{
COMMAND_HEADER("{{asType name}}", {{parent.define}}_ID);
{{#chip_server_cluster_command_arguments}}
@@ -142,7 +139,7 @@
{{else}}
.Put8(kFrameControlClusterSpecificCommand)
{{/if}}
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_{{asDelimitedMacro name}}_COMMAND_ID)
{{#chip_server_cluster_command_arguments}}
{{#if (isString type)}}
@@ -159,11 +156,11 @@
}
{{/chip_server_cluster_commands}}
-PacketBufferHandle encode{{asCamelCased name false}}ClusterDiscoverAttributes(EndpointId destinationEndpoint)
+PacketBufferHandle encode{{asCamelCased name false}}ClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("Discover{{asCamelCased name false}}Attributes", {{define}}_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID)
.Put16(0x0000)
.Put8(0xFF);
@@ -174,22 +171,22 @@
/*
* Attribute {{asCamelCased name false}}
*/
-PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterRead{{asCamelCased name false}}Attribute(EndpointId destinationEndpoint)
+PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterRead{{asCamelCased name false}}Attribute(uint8_t seqNum, EndpointId destinationEndpoint)
{
COMMAND_HEADER("Read{{asCamelCased parent.name false}}{{asCamelCased name false}}", {{parent.define}}_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID)
.Put16({{asHex attributeCode 4}});
COMMAND_FOOTER();
}
{{#if (isWritableAttribute)}}
-PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterWrite{{asCamelCased name false}}Attribute(EndpointId destinationEndpoint, {{asUnderlyingZclType type}} {{asCamelCased name}})
+PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterWrite{{asCamelCased name false}}Attribute(uint8_t seqNum, EndpointId destinationEndpoint, {{asUnderlyingZclType type}} {{asCamelCased name}})
{
COMMAND_HEADER("Write{{asCamelCased parent.name false}}{{asCamelCased name false}}", {{parent.define}}_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_WRITE_ATTRIBUTES_COMMAND_ID)
.Put16({{asHex attributeCode 4}})
.Put8({{atomicTypeId}})
@@ -199,11 +196,11 @@
{{/if}}
{{#if (isReportableAttribute)}}
-PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterReport{{asCamelCased name false}}Attribute(EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval{{#unless (isDiscreteType)}}, {{chipType}} change{{/unless}})
+PacketBufferHandle encode{{asCamelCased parent.name false}}ClusterConfigure{{asCamelCased name false}}Attribute(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval{{#unless (isDiscreteType)}}, {{chipType}} change{{/unless}})
{
COMMAND_HEADER("Report{{asCamelCased parent.name false}}{{asCamelCased name false}}", {{parent.define}}_ID);
buf.Put8(kFrameControlGlobalCommand)
- .Put8(kSeqNum)
+ .Put8(seqNum)
.Put8(ZCL_CONFIGURE_REPORTING_COMMAND_ID)
.Put8(EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
.Put16({{asHex attributeCode 4}})
diff --git a/src/app/zap-templates/templates/chip/helper.js b/src/app/zap-templates/templates/chip/helper.js
index f322e12..0a90d86 100644
--- a/src/app/zap-templates/templates/chip/helper.js
+++ b/src/app/zap-templates/templates/chip/helper.js
@@ -85,6 +85,16 @@
.then(clusters => templateUtil.collectBlocks(clusters, options, this))
}
+function chip_clusters(options)
+{
+ const db = this.global.db;
+
+ return queryImpexp.exportendPointTypeIds(db, this.global.sessionId)
+ .then(endpointTypes => { return zclQuery.exportAllClustersDetailsFromEndpointTypes(db, endpointTypes) })
+ .then(clusters => clusters.filter(cluster => cluster.enabled == 1))
+ .then(clusters => templateUtil.collectBlocks(clusters, options, this))
+}
+
/**
* Creates block iterator over the server side cluster command
* for a given cluster.
@@ -266,7 +276,7 @@
function fn(pkgId)
{
return getAttributes.call(this, pkgId, options).then(atts => {
- atts = atts.filter(att => att.clusterCode == clusterCode && att.side == clusterSide);
+ atts = atts.filter(att => att.clusterCode == clusterCode && att.side == 'server');
atts.forEach(att => {
const sameAttributes = atts.filter(att2 => att.name == att2.name);
let isWritable = !!sameAttributes.find(att2 => att2.writable);
@@ -383,13 +393,153 @@
}
}
+function hasSpecificResponse(commandName)
+{
+ // Retrieve the clusterName and the clusterSide. If any if not available, an error will be thrown.
+ const clusterName = this.parent.name;
+ const clusterSide = this.parent.side;
+ if (clusterName == undefined || clusterSide == undefined) {
+ const error = 'chip_server_cluster_commands: Could not find relevant parent cluster.';
+ console.log(error);
+ throw error;
+ }
+
+ function filterCommand(cmd)
+ {
+ return cmd.clusterName == clusterName && cmd.name == (commandName + "Response");
+ }
+
+ function fn(pkgId)
+ {
+ const db = this.global.db;
+ return queryImpexp.exportendPointTypeIds(db, this.global.sessionId)
+ .then(endpointTypes => zclQuery.exportClustersAndEndpointDetailsFromEndpointTypes(db, endpointTypes))
+ .then(endpointsAndClusters => zclQuery.exportCommandDetailsFromAllEndpointTypesAndClusters(db, endpointsAndClusters))
+ .then(endpointCommands => endpointCommands.filter(filterCommand).length)
+ }
+
+ const promise = templateUtil.ensureZclPackageId(this).then(fn.bind(this)).catch(err => console.log(err));
+ return templateUtil.templatePromise(this.global, promise);
+}
+
+function asCallbackAttributeType(attributeType)
+{
+ switch (parseInt(attributeType)) {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ return 'Unsupported';
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ return 'Int8u';
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ return 'Int16u';
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ return 'Int32u';
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ return 'Int64u';
+ case 0x10: // bool / Boolean
+ return 'Boolean';
+ case 0x28: // int8 / Signed 8-bit integer
+ return 'Int8s';
+ case 0x29: // int16 / Signed 16-bit integer
+ return 'Int16s';
+ case 0x2B: // int32 / Signed 32-bit integer
+ return 'Int32s';
+ case 0x2F: // int64 / Signed 64-bit integer
+ return 'Int64s';
+ default:
+ error = 'Unhandled attribute type ' + attributeType;
+ throw error;
+ }
+}
+
+function asObjectiveCNumberType(label, type)
+{
+ function fn(pkgId)
+ {
+ const options = { 'hash' : {} };
+ return zclHelper.asUnderlyingZclType.call(this, type, options).then(zclType => {
+ switch (zclType) {
+ case 'uint8_t':
+ return 'UnsignedChar';
+ case 'uint16_t':
+ return 'UnsignedShort';
+ case 'uint32_t':
+ return 'UnsignedLong';
+ case 'uint64_t':
+ return 'UnsignedLongLong';
+ case 'int8_t':
+ return 'Char';
+ case 'int16_t':
+ return 'Short';
+ case 'int32_t':
+ return 'Long';
+ case 'int64_t':
+ return 'LongLong';
+ default:
+ error = label + ': Unhandled underlying type ' + zclType + ' for original type ' + type;
+ throw error;
+ }
+ })
+ }
+
+ const promise = templateUtil.ensureZclPackageId(this).then(fn.bind(this)).catch(err => console.log(err));
+ return templateUtil.templatePromise(this.global, promise)
+}
+
//
// Module exports
//
+exports.chip_clusters = chip_clusters;
exports.chip_server_clusters = chip_server_clusters;
exports.chip_server_cluster_commands = chip_server_cluster_commands;
exports.chip_server_cluster_command_arguments = chip_server_cluster_command_arguments
exports.asBasicType = ChipTypesHelper.asBasicType;
+exports.asObjectiveCNumberType = asObjectiveCNumberType;
exports.isSignedType = isSignedType;
exports.isDiscreteType = isDiscreteType;
exports.chip_server_cluster_attributes = chip_server_cluster_attributes;
@@ -398,3 +548,5 @@
exports.isManufacturerSpecificCommand = isManufacturerSpecificCommand;
exports.asPythonType = asPythonType;
exports.asPythonCType = asPythonCType;
+exports.asCallbackAttributeType = asCallbackAttributeType;
+exports.hasSpecificResponse = hasSpecificResponse;
diff --git a/src/app/zap-templates/templates/chip/python-ChipDeviceController-ClusterCommands.zapt b/src/app/zap-templates/templates/chip/python-ChipDeviceController-ClusterCommands.zapt
index 3ed188f..d129c83 100644
--- a/src/app/zap-templates/templates/chip/python-ChipDeviceController-ClusterCommands.zapt
+++ b/src/app/zap-templates/templates/chip/python-ChipDeviceController-ClusterCommands.zapt
@@ -23,7 +23,7 @@
chip::Controller::{{asCamelCased clusterName false}}Cluster cluster{{asCamelCased clusterName false}};
(void) ZCLgroupId;
cluster{{asCamelCased clusterName false}}.Associate(device, ZCLendpointId);
- return cluster{{asCamelCased clusterName false}}.{{asCamelCased name false}}(nullptr{{#chip_server_cluster_command_arguments}}, {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
+ return cluster{{asCamelCased clusterName false}}.{{asCamelCased name false}}(nullptr, nullptr{{#chip_server_cluster_command_arguments}}, {{asCamelCased label}}{{/chip_server_cluster_command_arguments}});
}
{{/chip_server_cluster_commands}}
// End of Cluster {{asCamelCased name false}}
diff --git a/src/controller/BUILD.gn b/src/controller/BUILD.gn
index 53c7c9b..51ee738 100644
--- a/src/controller/BUILD.gn
+++ b/src/controller/BUILD.gn
@@ -19,6 +19,8 @@
output_name = "libChipController"
sources = [
+ "${chip_root}/src/app/server/DataModelHandler.cpp",
+ "${chip_root}/src/app/util/CHIPDeviceCallbacksMgr.cpp",
"CHIPCluster.cpp",
"CHIPCluster.h",
"CHIPClusters.cpp",
diff --git a/src/controller/CHIPCluster.cpp b/src/controller/CHIPCluster.cpp
index 22ce8af..814dc4c 100644
--- a/src/controller/CHIPCluster.cpp
+++ b/src/controller/CHIPCluster.cpp
@@ -44,7 +44,8 @@
mDevice = nullptr;
}
-CHIP_ERROR ClusterBase::SendCommand(chip::System::PacketBufferHandle payload, Callback::Callback<> * responseHandler)
+CHIP_ERROR ClusterBase::SendCommand(uint8_t seqNum, chip::System::PacketBufferHandle payload,
+ Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
CHIP_ERROR err = CHIP_NO_ERROR;
@@ -54,9 +55,9 @@
err = mDevice->SendMessage(std::move(payload));
SuccessOrExit(err);
- if (responseHandler != nullptr)
+ if (onSuccessCallback != nullptr || onFailureCallback != nullptr)
{
- mDevice->AddResponseHandler(mEndpoint, mClusterId, responseHandler);
+ mDevice->AddResponseHandler(seqNum, onSuccessCallback, onFailureCallback);
}
exit:
@@ -68,16 +69,12 @@
return err;
}
-CHIP_ERROR ClusterBase::RequestAttributeReporting(chip::System::PacketBufferHandle payload, Callback::Callback<> * responseHandler,
- Callback::Callback<> * reportHandler)
+CHIP_ERROR ClusterBase::RequestAttributeReporting(AttributeId attributeId, Callback::Cancelable * onReportCallback)
{
CHIP_ERROR err = CHIP_NO_ERROR;
- err = SendCommand(std::move(payload), responseHandler);
- SuccessOrExit(err);
-
- VerifyOrExit(reportHandler != nullptr, err = CHIP_ERROR_INVALID_ARGUMENT);
- mDevice->AddReportHandler(mEndpoint, mClusterId, reportHandler);
+ VerifyOrExit(onReportCallback != nullptr, err = CHIP_ERROR_INVALID_ARGUMENT);
+ mDevice->AddReportHandler(mEndpoint, mClusterId, attributeId, onReportCallback);
exit:
return err;
diff --git a/src/controller/CHIPCluster.h b/src/controller/CHIPCluster.h
index b3ab9f9..ed27f07 100644
--- a/src/controller/CHIPCluster.h
+++ b/src/controller/CHIPCluster.h
@@ -50,25 +50,26 @@
* Send the command, contained into the associate buffer, to the device. Add a callback
* handler, that'll be called when the response is received from the device.
*
+ * @param[in] seqNum The sequence number identifier of the command
* @param[in] payload The payload of the encoded command
- * @param[in] responseHandler The handler function that's called on receiving command response
+ * @param[in] successHandler The handler function that's called on receiving command response success
+ * @param[in] failureHandler The handler function that's called on receiving command response failure
*/
- CHIP_ERROR SendCommand(chip::System::PacketBufferHandle payload, Callback::Callback<> * responseHandler);
+ CHIP_ERROR SendCommand(uint8_t seqNum, chip::System::PacketBufferHandle payload, Callback::Cancelable * successHandler,
+ Callback::Cancelable * failureHandler);
/**
* @brief
* Request attribute reports from the device. Add a callback
* handler, that'll be called when the reports are received from the device.
*
- * @param[in] payload The payload of the encoded command
- * @param[in] responseHandler The handler function that's called on receiving command response
+ * @param[in] attributeId The report target attribute id
* @param[in] reportHandler The handler function that's called on receiving attribute reports
* The reporting handler continues to be called as long as the callback
* is active. The user can stop the reporting by cancelling the callback.
* Reference: chip::Callback::Cancel()
*/
- CHIP_ERROR RequestAttributeReporting(chip::System::PacketBufferHandle payload, Callback::Callback<> * responseHandler,
- Callback::Callback<> * reportHandler);
+ CHIP_ERROR RequestAttributeReporting(AttributeId attributeId, Callback::Cancelable * reportHandler);
const ClusterId mClusterId;
Device * mDevice;
diff --git a/src/controller/CHIPClusters.cpp b/src/controller/CHIPClusters.cpp
index 0c37875..c3a34a2 100644
--- a/src/controller/CHIPClusters.cpp
+++ b/src/controller/CHIPClusters.cpp
@@ -29,7 +29,8 @@
// TODO(#4503): Commands should take group id as an argument.
// BarrierControl Cluster Commands
-CHIP_ERROR BarrierControlCluster::BarrierControlGoToPercent(Callback::Callback<> * onCompletion, uint8_t percentOpen)
+CHIP_ERROR BarrierControlCluster::BarrierControlGoToPercent(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t percentOpen)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -54,12 +55,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeBarrierControlClusterBarrierControlGoToPercentCommand(mEndpoint, percentOpen);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload =
+ encodeBarrierControlClusterBarrierControlGoToPercentCommand(seqNum, mEndpoint, percentOpen);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR BarrierControlCluster::BarrierControlStop(Callback::Callback<> * onCompletion)
+CHIP_ERROR BarrierControlCluster::BarrierControlStop(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -82,49 +86,62 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeBarrierControlClusterBarrierControlStopCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBarrierControlClusterBarrierControlStopCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// BarrierControl Cluster Attributes
-CHIP_ERROR BarrierControlCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR BarrierControlCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBarrierControlClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBarrierControlClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR BarrierControlCluster::ReadAttributeBarrierMovingState(Callback::Callback<> * onCompletion)
+CHIP_ERROR BarrierControlCluster::ReadAttributeBarrierMovingState(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBarrierControlClusterReadBarrierMovingStateAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBarrierControlClusterReadBarrierMovingStateAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR BarrierControlCluster::ReadAttributeBarrierSafetyStatus(Callback::Callback<> * onCompletion)
+CHIP_ERROR BarrierControlCluster::ReadAttributeBarrierSafetyStatus(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBarrierControlClusterReadBarrierSafetyStatusAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBarrierControlClusterReadBarrierSafetyStatusAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR BarrierControlCluster::ReadAttributeBarrierCapabilities(Callback::Callback<> * onCompletion)
+CHIP_ERROR BarrierControlCluster::ReadAttributeBarrierCapabilities(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBarrierControlClusterReadBarrierCapabilitiesAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBarrierControlClusterReadBarrierCapabilitiesAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR BarrierControlCluster::ReadAttributeBarrierPosition(Callback::Callback<> * onCompletion)
+CHIP_ERROR BarrierControlCluster::ReadAttributeBarrierPosition(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBarrierControlClusterReadBarrierPositionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBarrierControlClusterReadBarrierPositionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR BarrierControlCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR BarrierControlCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBarrierControlClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBarrierControlClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// Basic Cluster Commands
-CHIP_ERROR BasicCluster::MfgSpecificPing(Callback::Callback<> * onCompletion)
+CHIP_ERROR BasicCluster::MfgSpecificPing(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -147,12 +164,13 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeBasicClusterMfgSpecificPingCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBasicClusterMfgSpecificPingCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR BasicCluster::ResetToFactoryDefaults(Callback::Callback<> * onCompletion)
+CHIP_ERROR BasicCluster::ResetToFactoryDefaults(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -175,38 +193,45 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeBasicClusterResetToFactoryDefaultsCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBasicClusterResetToFactoryDefaultsCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// Basic Cluster Attributes
-CHIP_ERROR BasicCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR BasicCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBasicClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBasicClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR BasicCluster::ReadAttributeZclVersion(Callback::Callback<> * onCompletion)
+CHIP_ERROR BasicCluster::ReadAttributeZclVersion(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBasicClusterReadZclVersionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBasicClusterReadZclVersionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR BasicCluster::ReadAttributePowerSource(Callback::Callback<> * onCompletion)
+CHIP_ERROR BasicCluster::ReadAttributePowerSource(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBasicClusterReadPowerSourceAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBasicClusterReadPowerSourceAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR BasicCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR BasicCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBasicClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBasicClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// Binding Cluster Commands
-CHIP_ERROR BindingCluster::Bind(Callback::Callback<> * onCompletion, chip::NodeId nodeId, chip::GroupId groupId,
- chip::EndpointId endpointId, chip::ClusterId clusterId)
+CHIP_ERROR BindingCluster::Bind(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ chip::NodeId nodeId, chip::GroupId groupId, chip::EndpointId endpointId, chip::ClusterId clusterId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -237,13 +262,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeBindingClusterBindCommand(mEndpoint, nodeId, groupId, endpointId, clusterId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBindingClusterBindCommand(seqNum, mEndpoint, nodeId, groupId, endpointId, clusterId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR BindingCluster::Unbind(Callback::Callback<> * onCompletion, chip::NodeId nodeId, chip::GroupId groupId,
- chip::EndpointId endpointId, chip::ClusterId clusterId)
+CHIP_ERROR BindingCluster::Unbind(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ chip::NodeId nodeId, chip::GroupId groupId, chip::EndpointId endpointId,
+ chip::ClusterId clusterId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -274,26 +301,31 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeBindingClusterUnbindCommand(mEndpoint, nodeId, groupId, endpointId, clusterId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload =
+ encodeBindingClusterUnbindCommand(seqNum, mEndpoint, nodeId, groupId, endpointId, clusterId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// Binding Cluster Attributes
-CHIP_ERROR BindingCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR BindingCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBindingClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBindingClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR BindingCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR BindingCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeBindingClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeBindingClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// ColorControl Cluster Commands
-CHIP_ERROR ColorControlCluster::MoveColor(Callback::Callback<> * onCompletion, int16_t rateX, int16_t rateY, uint8_t optionsMask,
- uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::MoveColor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ int16_t rateX, int16_t rateY, uint8_t optionsMask, uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -324,13 +356,15 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterMoveColorCommand(mEndpoint, rateX, rateY, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ encodeColorControlClusterMoveColorCommand(seqNum, mEndpoint, rateX, rateY, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::MoveColorTemperature(Callback::Callback<> * onCompletion, uint8_t moveMode, uint16_t rate,
+CHIP_ERROR ColorControlCluster::MoveColorTemperature(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t moveMode, uint16_t rate,
uint16_t colorTemperatureMinimum, uint16_t colorTemperatureMaximum,
uint8_t optionsMask, uint8_t optionsOverride)
{
@@ -367,14 +401,15 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload = encodeColorControlClusterMoveColorTemperatureCommand(
- mEndpoint, moveMode, rate, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ seqNum, mEndpoint, moveMode, rate, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::MoveHue(Callback::Callback<> * onCompletion, uint8_t moveMode, uint8_t rate, uint8_t optionsMask,
- uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::MoveHue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t moveMode, uint8_t rate, uint8_t optionsMask, uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -405,14 +440,15 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterMoveHueCommand(mEndpoint, moveMode, rate, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ encodeColorControlClusterMoveHueCommand(seqNum, mEndpoint, moveMode, rate, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::MoveSaturation(Callback::Callback<> * onCompletion, uint8_t moveMode, uint8_t rate,
- uint8_t optionsMask, uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::MoveSaturation(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t moveMode, uint8_t rate, uint8_t optionsMask, uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -443,14 +479,16 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterMoveSaturationCommand(mEndpoint, moveMode, rate, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ encodeColorControlClusterMoveSaturationCommand(seqNum, mEndpoint, moveMode, rate, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::MoveToColor(Callback::Callback<> * onCompletion, uint16_t colorX, uint16_t colorY,
- uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::MoveToColor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t colorX, uint16_t colorY, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -483,13 +521,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload =
- encodeColorControlClusterMoveToColorCommand(mEndpoint, colorX, colorY, transitionTime, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterMoveToColorCommand(seqNum, mEndpoint, colorX, colorY,
+ transitionTime, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::MoveToColorTemperature(Callback::Callback<> * onCompletion, uint16_t colorTemperature,
+CHIP_ERROR ColorControlCluster::MoveToColorTemperature(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t colorTemperature,
uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
@@ -521,14 +561,16 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload = encodeColorControlClusterMoveToColorTemperatureCommand(
- mEndpoint, colorTemperature, transitionTime, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ seqNum, mEndpoint, colorTemperature, transitionTime, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::MoveToHue(Callback::Callback<> * onCompletion, uint8_t hue, uint8_t direction,
- uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::MoveToHue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t hue, uint8_t direction, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -561,13 +603,15 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterMoveToHueCommand(mEndpoint, hue, direction, transitionTime, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ encodeColorControlClusterMoveToHueCommand(seqNum, mEndpoint, hue, direction, transitionTime, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::MoveToHueAndSaturation(Callback::Callback<> * onCompletion, uint8_t hue, uint8_t saturation,
+CHIP_ERROR ColorControlCluster::MoveToHueAndSaturation(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t hue, uint8_t saturation,
uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
@@ -601,14 +645,16 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload = encodeColorControlClusterMoveToHueAndSaturationCommand(
- mEndpoint, hue, saturation, transitionTime, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ seqNum, mEndpoint, hue, saturation, transitionTime, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::MoveToSaturation(Callback::Callback<> * onCompletion, uint8_t saturation, uint16_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::MoveToSaturation(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t saturation, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -639,14 +685,16 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload =
- encodeColorControlClusterMoveToSaturationCommand(mEndpoint, saturation, transitionTime, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterMoveToSaturationCommand(
+ seqNum, mEndpoint, saturation, transitionTime, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::StepColor(Callback::Callback<> * onCompletion, int16_t stepX, int16_t stepY,
- uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::StepColor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ int16_t stepX, int16_t stepY, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -679,13 +727,15 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterStepColorCommand(mEndpoint, stepX, stepY, transitionTime, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ encodeColorControlClusterStepColorCommand(seqNum, mEndpoint, stepX, stepY, transitionTime, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::StepColorTemperature(Callback::Callback<> * onCompletion, uint8_t stepMode, uint16_t stepSize,
+CHIP_ERROR ColorControlCluster::StepColorTemperature(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t stepMode, uint16_t stepSize,
uint16_t transitionTime, uint16_t colorTemperatureMinimum,
uint16_t colorTemperatureMaximum, uint8_t optionsMask, uint8_t optionsOverride)
{
@@ -724,15 +774,17 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload =
- encodeColorControlClusterStepColorTemperatureCommand(mEndpoint, stepMode, stepSize, transitionTime, colorTemperatureMinimum,
- colorTemperatureMaximum, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterStepColorTemperatureCommand(
+ seqNum, mEndpoint, stepMode, stepSize, transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask,
+ optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::StepHue(Callback::Callback<> * onCompletion, uint8_t stepMode, uint8_t stepSize,
- uint8_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::StepHue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t stepMode, uint8_t stepSize, uint8_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -765,14 +817,16 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload =
- encodeColorControlClusterStepHueCommand(mEndpoint, stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterStepHueCommand(seqNum, mEndpoint, stepMode, stepSize,
+ transitionTime, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::StepSaturation(Callback::Callback<> * onCompletion, uint8_t stepMode, uint8_t stepSize,
- uint8_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::StepSaturation(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t stepMode, uint8_t stepSize, uint8_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -805,13 +859,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload =
- encodeColorControlClusterStepSaturationCommand(mEndpoint, stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterStepSaturationCommand(
+ seqNum, mEndpoint, stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ColorControlCluster::StopMoveStep(Callback::Callback<> * onCompletion, uint8_t optionsMask, uint8_t optionsOverride)
+CHIP_ERROR ColorControlCluster::StopMoveStep(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t optionsMask, uint8_t optionsOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -838,445 +894,612 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeColorControlClusterStopMoveStepCommand(mEndpoint, optionsMask, optionsOverride);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload =
+ encodeColorControlClusterStopMoveStepCommand(seqNum, mEndpoint, optionsMask, optionsOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// ColorControl Cluster Attributes
-CHIP_ERROR ColorControlCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeCurrentHue(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeCurrentHue(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadCurrentHueAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadCurrentHueAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReportAttributeCurrentHue(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval, uint8_t change)
+CHIP_ERROR ColorControlCluster::ConfigureAttributeCurrentHue(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t minInterval,
+ uint16_t maxInterval, uint8_t change)
{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterReportCurrentHueAttribute(mEndpoint, minInterval, maxInterval, change);
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ encodeColorControlClusterConfigureCurrentHueAttribute(seqNum, mEndpoint, minInterval, maxInterval, change);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeCurrentSaturation(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReportAttributeCurrentHue(Callback::Cancelable * onReportCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadCurrentSaturationAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ return RequestAttributeReporting(0x0000, onReportCallback);
}
-CHIP_ERROR ColorControlCluster::ReportAttributeCurrentSaturation(Callback::Callback<> * onCompletion,
- Callback::Callback<> * onChange, uint16_t minInterval,
- uint16_t maxInterval, uint8_t change)
+CHIP_ERROR ColorControlCluster::ReadAttributeCurrentSaturation(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadCurrentSaturationAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
+}
+
+CHIP_ERROR ColorControlCluster::ConfigureAttributeCurrentSaturation(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t minInterval,
+ uint16_t maxInterval, uint8_t change)
+{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterReportCurrentSaturationAttribute(mEndpoint, minInterval, maxInterval, change);
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ encodeColorControlClusterConfigureCurrentSaturationAttribute(seqNum, mEndpoint, minInterval, maxInterval, change);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeRemainingTime(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReportAttributeCurrentSaturation(Callback::Cancelable * onReportCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadRemainingTimeAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ return RequestAttributeReporting(0x0001, onReportCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeCurrentX(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeRemainingTime(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadCurrentXAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadRemainingTimeAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReportAttributeCurrentX(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval, uint16_t change)
+CHIP_ERROR ColorControlCluster::ReadAttributeCurrentX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadCurrentXAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
+}
+
+CHIP_ERROR ColorControlCluster::ConfigureAttributeCurrentX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t minInterval,
+ uint16_t maxInterval, uint16_t change)
+{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterReportCurrentXAttribute(mEndpoint, minInterval, maxInterval, change);
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ encodeColorControlClusterConfigureCurrentXAttribute(seqNum, mEndpoint, minInterval, maxInterval, change);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeCurrentY(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReportAttributeCurrentX(Callback::Cancelable * onReportCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadCurrentYAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ return RequestAttributeReporting(0x0003, onReportCallback);
}
-CHIP_ERROR ColorControlCluster::ReportAttributeCurrentY(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval, uint16_t change)
+CHIP_ERROR ColorControlCluster::ReadAttributeCurrentY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadCurrentYAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
+}
+
+CHIP_ERROR ColorControlCluster::ConfigureAttributeCurrentY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t minInterval,
+ uint16_t maxInterval, uint16_t change)
+{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterReportCurrentYAttribute(mEndpoint, minInterval, maxInterval, change);
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ encodeColorControlClusterConfigureCurrentYAttribute(seqNum, mEndpoint, minInterval, maxInterval, change);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeDriftCompensation(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReportAttributeCurrentY(Callback::Cancelable * onReportCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadDriftCompensationAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ return RequestAttributeReporting(0x0004, onReportCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeCompensationText(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeDriftCompensation(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadCompensationTextAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadDriftCompensationAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorTemperature(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeCompensationText(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorTemperatureAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadCompensationTextAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReportAttributeColorTemperature(Callback::Callback<> * onCompletion,
- Callback::Callback<> * onChange, uint16_t minInterval,
- uint16_t maxInterval, uint16_t change)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorTemperature(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorTemperatureAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
+}
+
+CHIP_ERROR ColorControlCluster::ConfigureAttributeColorTemperature(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t minInterval,
+ uint16_t maxInterval, uint16_t change)
+{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeColorControlClusterReportColorTemperatureAttribute(mEndpoint, minInterval, maxInterval, change);
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ encodeColorControlClusterConfigureColorTemperatureAttribute(seqNum, mEndpoint, minInterval, maxInterval, change);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorMode(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReportAttributeColorTemperature(Callback::Cancelable * onReportCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorModeAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ return RequestAttributeReporting(0x0007, onReportCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorControlOptions(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorMode(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorControlOptionsAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorModeAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorControlOptions(Callback::Callback<> * onCompletion, uint8_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorControlOptions(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorControlOptionsAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorControlOptionsAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeNumberOfPrimaries(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorControlOptions(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadNumberOfPrimariesAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorControlOptionsAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary1X(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeNumberOfPrimaries(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary1XAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadNumberOfPrimariesAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary1Y(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary1X(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary1YAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary1XAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary1Intensity(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary1Y(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary1IntensityAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary1YAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary2X(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary1Intensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary2XAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary1IntensityAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary2Y(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary2X(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary2YAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary2XAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary2Intensity(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary2Y(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary2IntensityAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary2YAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary3X(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary2Intensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary3XAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary2IntensityAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary3Y(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary3X(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary3YAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary3XAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary3Intensity(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary3Y(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary3IntensityAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary3YAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary4X(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary3Intensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary4XAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary3IntensityAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary4Y(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary4X(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary4YAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary4XAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary4Intensity(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary4Y(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary4IntensityAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary4YAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary5X(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary4Intensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary5XAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary4IntensityAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary5Y(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary5X(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary5YAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary5XAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary5Intensity(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary5Y(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary5IntensityAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary5YAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary6X(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary5Intensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary6XAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary5IntensityAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary6Y(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary6X(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary6YAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary6XAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributePrimary6Intensity(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary6Y(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary6IntensityAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary6YAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeWhitePointX(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributePrimary6Intensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadWhitePointXAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadPrimary6IntensityAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeWhitePointX(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeWhitePointX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteWhitePointXAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadWhitePointXAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeWhitePointY(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeWhitePointX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadWhitePointYAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteWhitePointXAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeWhitePointY(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeWhitePointY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteWhitePointYAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadWhitePointYAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorPointRX(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeWhitePointY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointRXAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteWhitePointYAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorPointRX(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorPointRX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointRXAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointRXAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorPointRY(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorPointRX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointRYAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointRXAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorPointRY(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorPointRY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointRYAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointRYAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorPointRIntensity(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorPointRY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointRIntensityAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointRYAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorPointRIntensity(Callback::Callback<> * onCompletion, uint8_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorPointRIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointRIntensityAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointRIntensityAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorPointGX(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorPointRIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointGXAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointRIntensityAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorPointGX(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorPointGX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointGXAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointGXAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorPointGY(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorPointGX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointGYAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointGXAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorPointGY(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorPointGY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointGYAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointGYAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorPointGIntensity(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorPointGY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointGIntensityAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointGYAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorPointGIntensity(Callback::Callback<> * onCompletion, uint8_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorPointGIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointGIntensityAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointGIntensityAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorPointBX(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorPointGIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointBXAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointGIntensityAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorPointBX(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorPointBX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointBXAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointBXAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorPointBY(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorPointBX(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointBYAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointBXAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorPointBY(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorPointBY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointBYAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointBYAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorPointBIntensity(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorPointBY(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointBIntensityAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointBYAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeColorPointBIntensity(Callback::Callback<> * onCompletion, uint8_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorPointBIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointBIntensityAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorPointBIntensityAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeEnhancedCurrentHue(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeColorPointBIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadEnhancedCurrentHueAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterWriteColorPointBIntensityAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeEnhancedColorMode(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeEnhancedCurrentHue(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadEnhancedColorModeAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadEnhancedCurrentHueAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorLoopActive(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeEnhancedColorMode(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorLoopActiveAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadEnhancedColorModeAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorLoopDirection(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorLoopActive(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorLoopDirectionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorLoopActiveAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorLoopTime(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorLoopDirection(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorLoopTimeAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorLoopDirectionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorCapabilities(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorLoopTime(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorCapabilitiesAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorLoopTimeAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorTempPhysicalMin(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorCapabilities(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorTempPhysicalMinAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorCapabilitiesAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeColorTempPhysicalMax(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorTempPhysicalMin(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadColorTempPhysicalMaxAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorTempPhysicalMinAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeCoupleColorTempToLevelMinMireds(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeColorTempPhysicalMax(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadCoupleColorTempToLevelMinMiredsAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadColorTempPhysicalMaxAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeStartUpColorTemperatureMireds(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::ReadAttributeCoupleColorTempToLevelMinMireds(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadStartUpColorTemperatureMiredsAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadCoupleColorTempToLevelMinMiredsAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::WriteAttributeStartUpColorTemperatureMireds(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR ColorControlCluster::ReadAttributeStartUpColorTemperatureMireds(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeColorControlClusterWriteStartUpColorTemperatureMiredsAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadStartUpColorTemperatureMiredsAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ColorControlCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR ColorControlCluster::WriteAttributeStartUpColorTemperatureMireds(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback,
+ uint16_t value)
{
- System::PacketBufferHandle payload = encodeColorControlClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload =
+ encodeColorControlClusterWriteStartUpColorTemperatureMiredsAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
+}
+
+CHIP_ERROR ColorControlCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeColorControlClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// DoorLock Cluster Commands
-CHIP_ERROR DoorLockCluster::ClearAllPins(Callback::Callback<> * onCompletion)
+CHIP_ERROR DoorLockCluster::ClearAllPins(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1299,12 +1522,13 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterClearAllPinsCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterClearAllPinsCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::ClearAllRfids(Callback::Callback<> * onCompletion)
+CHIP_ERROR DoorLockCluster::ClearAllRfids(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1327,12 +1551,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterClearAllRfidsCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterClearAllRfidsCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::ClearHolidaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId)
+CHIP_ERROR DoorLockCluster::ClearHolidaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1357,12 +1583,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterClearHolidayScheduleCommand(mEndpoint, scheduleId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterClearHolidayScheduleCommand(seqNum, mEndpoint, scheduleId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::ClearPin(Callback::Callback<> * onCompletion, uint16_t userId)
+CHIP_ERROR DoorLockCluster::ClearPin(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t userId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1387,12 +1615,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterClearPinCommand(mEndpoint, userId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterClearPinCommand(seqNum, mEndpoint, userId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::ClearRfid(Callback::Callback<> * onCompletion, uint16_t userId)
+CHIP_ERROR DoorLockCluster::ClearRfid(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t userId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1417,12 +1647,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterClearRfidCommand(mEndpoint, userId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterClearRfidCommand(seqNum, mEndpoint, userId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::ClearWeekdaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId)
+CHIP_ERROR DoorLockCluster::ClearWeekdaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1449,12 +1681,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterClearWeekdayScheduleCommand(mEndpoint, scheduleId, userId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterClearWeekdayScheduleCommand(seqNum, mEndpoint, scheduleId, userId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::ClearYeardaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId)
+CHIP_ERROR DoorLockCluster::ClearYeardaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1481,12 +1715,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterClearYeardayScheduleCommand(mEndpoint, scheduleId, userId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterClearYeardayScheduleCommand(seqNum, mEndpoint, scheduleId, userId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::GetHolidaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId)
+CHIP_ERROR DoorLockCluster::GetHolidaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1511,12 +1747,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterGetHolidayScheduleCommand(mEndpoint, scheduleId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterGetHolidayScheduleCommand(seqNum, mEndpoint, scheduleId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::GetLogRecord(Callback::Callback<> * onCompletion, uint16_t logIndex)
+CHIP_ERROR DoorLockCluster::GetLogRecord(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t logIndex)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1541,12 +1779,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterGetLogRecordCommand(mEndpoint, logIndex);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterGetLogRecordCommand(seqNum, mEndpoint, logIndex);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::GetPin(Callback::Callback<> * onCompletion, uint16_t userId)
+CHIP_ERROR DoorLockCluster::GetPin(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t userId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1571,12 +1811,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterGetPinCommand(mEndpoint, userId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterGetPinCommand(seqNum, mEndpoint, userId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::GetRfid(Callback::Callback<> * onCompletion, uint16_t userId)
+CHIP_ERROR DoorLockCluster::GetRfid(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t userId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1601,12 +1843,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterGetRfidCommand(mEndpoint, userId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterGetRfidCommand(seqNum, mEndpoint, userId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::GetUserType(Callback::Callback<> * onCompletion, uint16_t userId)
+CHIP_ERROR DoorLockCluster::GetUserType(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t userId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1631,12 +1875,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterGetUserTypeCommand(mEndpoint, userId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterGetUserTypeCommand(seqNum, mEndpoint, userId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::GetWeekdaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId)
+CHIP_ERROR DoorLockCluster::GetWeekdaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1663,12 +1909,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterGetWeekdayScheduleCommand(mEndpoint, scheduleId, userId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterGetWeekdayScheduleCommand(seqNum, mEndpoint, scheduleId, userId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::GetYeardaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId)
+CHIP_ERROR DoorLockCluster::GetYeardaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1695,12 +1943,13 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterGetYeardayScheduleCommand(mEndpoint, scheduleId, userId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterGetYeardayScheduleCommand(seqNum, mEndpoint, scheduleId, userId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::LockDoor(Callback::Callback<> * onCompletion, char * pin)
+CHIP_ERROR DoorLockCluster::LockDoor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, char * pin)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1725,13 +1974,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterLockDoorCommand(mEndpoint, pin);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterLockDoorCommand(seqNum, mEndpoint, pin);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::SetHolidaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint32_t localStartTime,
- uint32_t localEndTime, uint8_t operatingModeDuringHoliday)
+CHIP_ERROR DoorLockCluster::SetHolidaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint32_t localStartTime, uint32_t localEndTime,
+ uint8_t operatingModeDuringHoliday)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1762,14 +2013,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterSetHolidayScheduleCommand(mEndpoint, scheduleId, localStartTime,
- localEndTime, operatingModeDuringHoliday);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterSetHolidayScheduleCommand(
+ seqNum, mEndpoint, scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::SetPin(Callback::Callback<> * onCompletion, uint16_t userId, uint8_t userStatus, uint8_t userType,
- char * pin)
+CHIP_ERROR DoorLockCluster::SetPin(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t userId, uint8_t userStatus, uint8_t userType, char * pin)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1800,13 +2052,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterSetPinCommand(mEndpoint, userId, userStatus, userType, pin);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterSetPinCommand(seqNum, mEndpoint, userId, userStatus, userType, pin);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::SetRfid(Callback::Callback<> * onCompletion, uint16_t userId, uint8_t userStatus, uint8_t userType,
- char * id)
+CHIP_ERROR DoorLockCluster::SetRfid(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t userId, uint8_t userStatus, uint8_t userType, char * id)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1837,12 +2090,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterSetRfidCommand(mEndpoint, userId, userStatus, userType, id);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterSetRfidCommand(seqNum, mEndpoint, userId, userStatus, userType, id);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::SetUserType(Callback::Callback<> * onCompletion, uint16_t userId, uint8_t userType)
+CHIP_ERROR DoorLockCluster::SetUserType(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t userId, uint8_t userType)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1869,14 +2124,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterSetUserTypeCommand(mEndpoint, userId, userType);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterSetUserTypeCommand(seqNum, mEndpoint, userId, userType);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::SetWeekdaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId,
- uint8_t daysMask, uint8_t startHour, uint8_t startMinute, uint8_t endHour,
- uint8_t endMinute)
+CHIP_ERROR DoorLockCluster::SetWeekdaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId, uint8_t daysMask, uint8_t startHour,
+ uint8_t startMinute, uint8_t endHour, uint8_t endMinute)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1913,14 +2169,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterSetWeekdayScheduleCommand(mEndpoint, scheduleId, userId, daysMask,
- startHour, startMinute, endHour, endMinute);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterSetWeekdayScheduleCommand(
+ seqNum, mEndpoint, scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::SetYeardaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId,
- uint32_t localStartTime, uint32_t localEndTime)
+CHIP_ERROR DoorLockCluster::SetYeardaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId, uint32_t localStartTime, uint32_t localEndTime)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1951,13 +2208,15 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeDoorLockClusterSetYeardayScheduleCommand(mEndpoint, scheduleId, userId, localStartTime, localEndTime);
- return SendCommand(std::move(payload), onCompletion);
+ encodeDoorLockClusterSetYeardayScheduleCommand(seqNum, mEndpoint, scheduleId, userId, localStartTime, localEndTime);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::UnlockDoor(Callback::Callback<> * onCompletion, char * pin)
+CHIP_ERROR DoorLockCluster::UnlockDoor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ char * pin)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -1982,12 +2241,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterUnlockDoorCommand(mEndpoint, pin);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterUnlockDoorCommand(seqNum, mEndpoint, pin);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR DoorLockCluster::UnlockWithTimeout(Callback::Callback<> * onCompletion, uint16_t timeoutInSeconds, char * pin)
+CHIP_ERROR DoorLockCluster::UnlockWithTimeout(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t timeoutInSeconds, char * pin)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2014,50 +2275,69 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeDoorLockClusterUnlockWithTimeoutCommand(mEndpoint, timeoutInSeconds, pin);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterUnlockWithTimeoutCommand(seqNum, mEndpoint, timeoutInSeconds, pin);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// DoorLock Cluster Attributes
-CHIP_ERROR DoorLockCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR DoorLockCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeDoorLockClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR DoorLockCluster::ReadAttributeLockState(Callback::Callback<> * onCompletion)
+CHIP_ERROR DoorLockCluster::ReadAttributeLockState(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeDoorLockClusterReadLockStateAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterReadLockStateAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR DoorLockCluster::ReportAttributeLockState(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval)
+CHIP_ERROR DoorLockCluster::ConfigureAttributeLockState(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t minInterval,
+ uint16_t maxInterval)
{
- System::PacketBufferHandle payload = encodeDoorLockClusterReportLockStateAttribute(mEndpoint, minInterval, maxInterval);
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload =
+ encodeDoorLockClusterConfigureLockStateAttribute(seqNum, mEndpoint, minInterval, maxInterval);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR DoorLockCluster::ReadAttributeLockType(Callback::Callback<> * onCompletion)
+CHIP_ERROR DoorLockCluster::ReportAttributeLockState(Callback::Cancelable * onReportCallback)
{
- System::PacketBufferHandle payload = encodeDoorLockClusterReadLockTypeAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ return RequestAttributeReporting(0x0000, onReportCallback);
}
-CHIP_ERROR DoorLockCluster::ReadAttributeActuatorEnabled(Callback::Callback<> * onCompletion)
+CHIP_ERROR DoorLockCluster::ReadAttributeLockType(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeDoorLockClusterReadActuatorEnabledAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterReadLockTypeAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR DoorLockCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR DoorLockCluster::ReadAttributeActuatorEnabled(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeDoorLockClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterReadActuatorEnabledAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
+}
+
+CHIP_ERROR DoorLockCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeDoorLockClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// Groups Cluster Commands
-CHIP_ERROR GroupsCluster::AddGroup(Callback::Callback<> * onCompletion, uint16_t groupId, char * groupName)
+CHIP_ERROR GroupsCluster::AddGroup(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId, char * groupName)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2084,12 +2364,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeGroupsClusterAddGroupCommand(mEndpoint, groupId, groupName);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeGroupsClusterAddGroupCommand(seqNum, mEndpoint, groupId, groupName);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR GroupsCluster::AddGroupIfIdentifying(Callback::Callback<> * onCompletion, uint16_t groupId, char * groupName)
+CHIP_ERROR GroupsCluster::AddGroupIfIdentifying(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId, char * groupName)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2116,12 +2398,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeGroupsClusterAddGroupIfIdentifyingCommand(mEndpoint, groupId, groupName);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeGroupsClusterAddGroupIfIdentifyingCommand(seqNum, mEndpoint, groupId, groupName);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR GroupsCluster::GetGroupMembership(Callback::Callback<> * onCompletion, uint8_t groupCount, uint16_t groupList)
+CHIP_ERROR GroupsCluster::GetGroupMembership(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t groupCount, uint16_t groupList)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2148,12 +2432,13 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeGroupsClusterGetGroupMembershipCommand(mEndpoint, groupCount, groupList);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeGroupsClusterGetGroupMembershipCommand(seqNum, mEndpoint, groupCount, groupList);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR GroupsCluster::RemoveAllGroups(Callback::Callback<> * onCompletion)
+CHIP_ERROR GroupsCluster::RemoveAllGroups(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2176,12 +2461,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeGroupsClusterRemoveAllGroupsCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeGroupsClusterRemoveAllGroupsCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR GroupsCluster::RemoveGroup(Callback::Callback<> * onCompletion, uint16_t groupId)
+CHIP_ERROR GroupsCluster::RemoveGroup(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2206,12 +2493,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeGroupsClusterRemoveGroupCommand(mEndpoint, groupId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeGroupsClusterRemoveGroupCommand(seqNum, mEndpoint, groupId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR GroupsCluster::ViewGroup(Callback::Callback<> * onCompletion, uint16_t groupId)
+CHIP_ERROR GroupsCluster::ViewGroup(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2236,80 +2525,100 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeGroupsClusterViewGroupCommand(mEndpoint, groupId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeGroupsClusterViewGroupCommand(seqNum, mEndpoint, groupId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// Groups Cluster Attributes
-CHIP_ERROR GroupsCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR GroupsCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeGroupsClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeGroupsClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR GroupsCluster::ReadAttributeNameSupport(Callback::Callback<> * onCompletion)
+CHIP_ERROR GroupsCluster::ReadAttributeNameSupport(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeGroupsClusterReadNameSupportAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeGroupsClusterReadNameSupportAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR GroupsCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR GroupsCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeGroupsClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeGroupsClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// IasZone Cluster Commands
// IasZone Cluster Attributes
-CHIP_ERROR IasZoneCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR IasZoneCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIasZoneClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIasZoneClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IasZoneCluster::ReadAttributeZoneState(Callback::Callback<> * onCompletion)
+CHIP_ERROR IasZoneCluster::ReadAttributeZoneState(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIasZoneClusterReadZoneStateAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIasZoneClusterReadZoneStateAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IasZoneCluster::ReadAttributeZoneType(Callback::Callback<> * onCompletion)
+CHIP_ERROR IasZoneCluster::ReadAttributeZoneType(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIasZoneClusterReadZoneTypeAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIasZoneClusterReadZoneTypeAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IasZoneCluster::ReadAttributeZoneStatus(Callback::Callback<> * onCompletion)
+CHIP_ERROR IasZoneCluster::ReadAttributeZoneStatus(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIasZoneClusterReadZoneStatusAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIasZoneClusterReadZoneStatusAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IasZoneCluster::ReadAttributeIasCieAddress(Callback::Callback<> * onCompletion)
+CHIP_ERROR IasZoneCluster::ReadAttributeIasCieAddress(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIasZoneClusterReadIasCieAddressAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIasZoneClusterReadIasCieAddressAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IasZoneCluster::WriteAttributeIasCieAddress(Callback::Callback<> * onCompletion, uint64_t value)
+CHIP_ERROR IasZoneCluster::WriteAttributeIasCieAddress(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint64_t value)
{
- System::PacketBufferHandle payload = encodeIasZoneClusterWriteIasCieAddressAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIasZoneClusterWriteIasCieAddressAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IasZoneCluster::ReadAttributeZoneId(Callback::Callback<> * onCompletion)
+CHIP_ERROR IasZoneCluster::ReadAttributeZoneId(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIasZoneClusterReadZoneIdAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIasZoneClusterReadZoneIdAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IasZoneCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR IasZoneCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIasZoneClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIasZoneClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// Identify Cluster Commands
-CHIP_ERROR IdentifyCluster::Identify(Callback::Callback<> * onCompletion, uint16_t identifyTime)
+CHIP_ERROR IdentifyCluster::Identify(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t identifyTime)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2334,12 +2643,13 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeIdentifyClusterIdentifyCommand(mEndpoint, identifyTime);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIdentifyClusterIdentifyCommand(seqNum, mEndpoint, identifyTime);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR IdentifyCluster::IdentifyQuery(Callback::Callback<> * onCompletion)
+CHIP_ERROR IdentifyCluster::IdentifyQuery(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2362,38 +2672,46 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeIdentifyClusterIdentifyQueryCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIdentifyClusterIdentifyQueryCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// Identify Cluster Attributes
-CHIP_ERROR IdentifyCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR IdentifyCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIdentifyClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIdentifyClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IdentifyCluster::ReadAttributeIdentifyTime(Callback::Callback<> * onCompletion)
+CHIP_ERROR IdentifyCluster::ReadAttributeIdentifyTime(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIdentifyClusterReadIdentifyTimeAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIdentifyClusterReadIdentifyTimeAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IdentifyCluster::WriteAttributeIdentifyTime(Callback::Callback<> * onCompletion, uint16_t value)
+CHIP_ERROR IdentifyCluster::WriteAttributeIdentifyTime(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value)
{
- System::PacketBufferHandle payload = encodeIdentifyClusterWriteIdentifyTimeAttribute(mEndpoint, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIdentifyClusterWriteIdentifyTimeAttribute(seqNum, mEndpoint, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR IdentifyCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR IdentifyCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeIdentifyClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeIdentifyClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// LevelControl Cluster Commands
-CHIP_ERROR LevelControlCluster::Move(Callback::Callback<> * onCompletion, uint8_t moveMode, uint8_t rate, uint8_t optionMask,
- uint8_t optionOverride)
+CHIP_ERROR LevelControlCluster::Move(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t moveMode, uint8_t rate, uint8_t optionMask, uint8_t optionOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2424,14 +2742,15 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeLevelControlClusterMoveCommand(mEndpoint, moveMode, rate, optionMask, optionOverride);
- return SendCommand(std::move(payload), onCompletion);
+ encodeLevelControlClusterMoveCommand(seqNum, mEndpoint, moveMode, rate, optionMask, optionOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR LevelControlCluster::MoveToLevel(Callback::Callback<> * onCompletion, uint8_t level, uint16_t transitionTime,
- uint8_t optionMask, uint8_t optionOverride)
+CHIP_ERROR LevelControlCluster::MoveToLevel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t level, uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2462,13 +2781,16 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeLevelControlClusterMoveToLevelCommand(mEndpoint, level, transitionTime, optionMask, optionOverride);
- return SendCommand(std::move(payload), onCompletion);
+ encodeLevelControlClusterMoveToLevelCommand(seqNum, mEndpoint, level, transitionTime, optionMask, optionOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR LevelControlCluster::MoveToLevelWithOnOff(Callback::Callback<> * onCompletion, uint8_t level, uint16_t transitionTime)
+CHIP_ERROR LevelControlCluster::MoveToLevelWithOnOff(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t level,
+ uint16_t transitionTime)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2495,12 +2817,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeLevelControlClusterMoveToLevelWithOnOffCommand(mEndpoint, level, transitionTime);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload =
+ encodeLevelControlClusterMoveToLevelWithOnOffCommand(seqNum, mEndpoint, level, transitionTime);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR LevelControlCluster::MoveWithOnOff(Callback::Callback<> * onCompletion, uint8_t moveMode, uint8_t rate)
+CHIP_ERROR LevelControlCluster::MoveWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t moveMode, uint8_t rate)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2527,13 +2852,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeLevelControlClusterMoveWithOnOffCommand(mEndpoint, moveMode, rate);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeLevelControlClusterMoveWithOnOffCommand(seqNum, mEndpoint, moveMode, rate);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR LevelControlCluster::Step(Callback::Callback<> * onCompletion, uint8_t stepMode, uint8_t stepSize,
- uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride)
+CHIP_ERROR LevelControlCluster::Step(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime, uint8_t optionMask,
+ uint8_t optionOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2566,14 +2893,15 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeLevelControlClusterStepCommand(mEndpoint, stepMode, stepSize, transitionTime, optionMask, optionOverride);
- return SendCommand(std::move(payload), onCompletion);
+ encodeLevelControlClusterStepCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime, optionMask, optionOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Callback<> * onCompletion, uint8_t stepMode, uint8_t stepSize,
- uint16_t transitionTime)
+CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2602,13 +2930,15 @@
return mDevice->SendCommands();
#else
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeLevelControlClusterStepWithOnOffCommand(mEndpoint, stepMode, stepSize, transitionTime);
- return SendCommand(std::move(payload), onCompletion);
+ encodeLevelControlClusterStepWithOnOffCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR LevelControlCluster::Stop(Callback::Callback<> * onCompletion, uint8_t optionMask, uint8_t optionOverride)
+CHIP_ERROR LevelControlCluster::Stop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t optionMask, uint8_t optionOverride)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2635,12 +2965,13 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeLevelControlClusterStopCommand(mEndpoint, optionMask, optionOverride);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeLevelControlClusterStopCommand(seqNum, mEndpoint, optionMask, optionOverride);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR LevelControlCluster::StopWithOnOff(Callback::Callback<> * onCompletion)
+CHIP_ERROR LevelControlCluster::StopWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2663,39 +2994,53 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeLevelControlClusterStopWithOnOffCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeLevelControlClusterStopWithOnOffCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// LevelControl Cluster Attributes
-CHIP_ERROR LevelControlCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR LevelControlCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeLevelControlClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeLevelControlClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR LevelControlCluster::ReadAttributeCurrentLevel(Callback::Callback<> * onCompletion)
+CHIP_ERROR LevelControlCluster::ReadAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeLevelControlClusterReadCurrentLevelAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeLevelControlClusterReadCurrentLevelAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR LevelControlCluster::ReportAttributeCurrentLevel(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval, uint8_t change)
+CHIP_ERROR LevelControlCluster::ConfigureAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t minInterval,
+ uint16_t maxInterval, uint8_t change)
{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeLevelControlClusterReportCurrentLevelAttribute(mEndpoint, minInterval, maxInterval, change);
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ encodeLevelControlClusterConfigureCurrentLevelAttribute(seqNum, mEndpoint, minInterval, maxInterval, change);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR LevelControlCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR LevelControlCluster::ReportAttributeCurrentLevel(Callback::Cancelable * onReportCallback)
{
- System::PacketBufferHandle payload = encodeLevelControlClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ return RequestAttributeReporting(0x0000, onReportCallback);
+}
+
+CHIP_ERROR LevelControlCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeLevelControlClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// OnOff Cluster Commands
-CHIP_ERROR OnOffCluster::Off(Callback::Callback<> * onCompletion)
+CHIP_ERROR OnOffCluster::Off(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2718,12 +3063,13 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeOnOffClusterOffCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeOnOffClusterOffCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR OnOffCluster::On(Callback::Callback<> * onCompletion)
+CHIP_ERROR OnOffCluster::On(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2746,12 +3092,13 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeOnOffClusterOnCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeOnOffClusterOnCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR OnOffCluster::Toggle(Callback::Callback<> * onCompletion)
+CHIP_ERROR OnOffCluster::Toggle(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2774,39 +3121,51 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeOnOffClusterToggleCommand(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeOnOffClusterToggleCommand(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// OnOff Cluster Attributes
-CHIP_ERROR OnOffCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR OnOffCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeOnOffClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeOnOffClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR OnOffCluster::ReadAttributeOnOff(Callback::Callback<> * onCompletion)
+CHIP_ERROR OnOffCluster::ReadAttributeOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeOnOffClusterReadOnOffAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeOnOffClusterReadOnOffAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR OnOffCluster::ReportAttributeOnOff(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval)
+CHIP_ERROR OnOffCluster::ConfigureAttributeOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t minInterval, uint16_t maxInterval)
{
- System::PacketBufferHandle payload = encodeOnOffClusterReportOnOffAttribute(mEndpoint, minInterval, maxInterval);
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeOnOffClusterConfigureOnOffAttribute(seqNum, mEndpoint, minInterval, maxInterval);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR OnOffCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR OnOffCluster::ReportAttributeOnOff(Callback::Cancelable * onReportCallback)
{
- System::PacketBufferHandle payload = encodeOnOffClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ return RequestAttributeReporting(0x0000, onReportCallback);
+}
+
+CHIP_ERROR OnOffCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeOnOffClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// Scenes Cluster Commands
-CHIP_ERROR ScenesCluster::AddScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
- char * sceneName, chip::ClusterId clusterId, uint8_t length, uint8_t value)
+CHIP_ERROR ScenesCluster::AddScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, char * sceneName,
+ chip::ClusterId clusterId, uint8_t length, uint8_t value)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2843,13 +3202,15 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload =
- encodeScenesClusterAddSceneCommand(mEndpoint, groupId, sceneId, transitionTime, sceneName, clusterId, length, value);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterAddSceneCommand(seqNum, mEndpoint, groupId, sceneId, transitionTime,
+ sceneName, clusterId, length, value);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ScenesCluster::GetSceneMembership(Callback::Callback<> * onCompletion, uint16_t groupId)
+CHIP_ERROR ScenesCluster::GetSceneMembership(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2874,13 +3235,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeScenesClusterGetSceneMembershipCommand(mEndpoint, groupId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterGetSceneMembershipCommand(seqNum, mEndpoint, groupId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ScenesCluster::RecallScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId,
- uint16_t transitionTime)
+CHIP_ERROR ScenesCluster::RecallScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId, uint8_t sceneId, uint16_t transitionTime)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2909,12 +3271,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeScenesClusterRecallSceneCommand(mEndpoint, groupId, sceneId, transitionTime);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterRecallSceneCommand(seqNum, mEndpoint, groupId, sceneId, transitionTime);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ScenesCluster::RemoveAllScenes(Callback::Callback<> * onCompletion, uint16_t groupId)
+CHIP_ERROR ScenesCluster::RemoveAllScenes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2939,12 +3303,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeScenesClusterRemoveAllScenesCommand(mEndpoint, groupId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterRemoveAllScenesCommand(seqNum, mEndpoint, groupId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ScenesCluster::RemoveScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId)
+CHIP_ERROR ScenesCluster::RemoveScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId, uint8_t sceneId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -2971,12 +3337,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeScenesClusterRemoveSceneCommand(mEndpoint, groupId, sceneId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterRemoveSceneCommand(seqNum, mEndpoint, groupId, sceneId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ScenesCluster::StoreScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId)
+CHIP_ERROR ScenesCluster::StoreScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId, uint8_t sceneId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -3003,12 +3371,14 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeScenesClusterStoreSceneCommand(mEndpoint, groupId, sceneId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterStoreSceneCommand(seqNum, mEndpoint, groupId, sceneId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
-CHIP_ERROR ScenesCluster::ViewScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId)
+CHIP_ERROR ScenesCluster::ViewScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId, uint8_t sceneId)
{
#ifdef CHIP_APP_USE_INTERACTION_MODEL
VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE);
@@ -3035,91 +3405,122 @@
return mDevice->SendCommands();
#else
- System::PacketBufferHandle payload = encodeScenesClusterViewSceneCommand(mEndpoint, groupId, sceneId);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterViewSceneCommand(seqNum, mEndpoint, groupId, sceneId);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
#endif
}
// Scenes Cluster Attributes
-CHIP_ERROR ScenesCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR ScenesCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeScenesClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ScenesCluster::ReadAttributeSceneCount(Callback::Callback<> * onCompletion)
+CHIP_ERROR ScenesCluster::ReadAttributeSceneCount(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeScenesClusterReadSceneCountAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterReadSceneCountAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ScenesCluster::ReadAttributeCurrentScene(Callback::Callback<> * onCompletion)
+CHIP_ERROR ScenesCluster::ReadAttributeCurrentScene(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeScenesClusterReadCurrentSceneAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterReadCurrentSceneAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ScenesCluster::ReadAttributeCurrentGroup(Callback::Callback<> * onCompletion)
+CHIP_ERROR ScenesCluster::ReadAttributeCurrentGroup(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeScenesClusterReadCurrentGroupAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterReadCurrentGroupAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ScenesCluster::ReadAttributeSceneValid(Callback::Callback<> * onCompletion)
+CHIP_ERROR ScenesCluster::ReadAttributeSceneValid(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeScenesClusterReadSceneValidAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterReadSceneValidAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ScenesCluster::ReadAttributeNameSupport(Callback::Callback<> * onCompletion)
+CHIP_ERROR ScenesCluster::ReadAttributeNameSupport(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeScenesClusterReadNameSupportAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterReadNameSupportAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR ScenesCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR ScenesCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeScenesClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeScenesClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
// TemperatureMeasurement Cluster Commands
// TemperatureMeasurement Cluster Attributes
-CHIP_ERROR TemperatureMeasurementCluster::DiscoverAttributes(Callback::Callback<> * onCompletion)
+CHIP_ERROR TemperatureMeasurementCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterDiscoverAttributes(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterDiscoverAttributes(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR TemperatureMeasurementCluster::ReadAttributeMeasuredValue(Callback::Callback<> * onCompletion)
+CHIP_ERROR TemperatureMeasurementCluster::ReadAttributeMeasuredValue(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterReadMeasuredValueAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterReadMeasuredValueAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR TemperatureMeasurementCluster::ReportAttributeMeasuredValue(Callback::Callback<> * onCompletion,
- Callback::Callback<> * onChange, uint16_t minInterval,
- uint16_t maxInterval, int16_t change)
+CHIP_ERROR TemperatureMeasurementCluster::ConfigureAttributeMeasuredValue(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback,
+ uint16_t minInterval, uint16_t maxInterval,
+ int16_t change)
{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
System::PacketBufferHandle payload =
- encodeTemperatureMeasurementClusterReportMeasuredValueAttribute(mEndpoint, minInterval, maxInterval, change);
- return RequestAttributeReporting(std::move(payload), onCompletion, onChange);
+ encodeTemperatureMeasurementClusterConfigureMeasuredValueAttribute(seqNum, mEndpoint, minInterval, maxInterval, change);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR TemperatureMeasurementCluster::ReadAttributeMinMeasuredValue(Callback::Callback<> * onCompletion)
+CHIP_ERROR TemperatureMeasurementCluster::ReportAttributeMeasuredValue(Callback::Cancelable * onReportCallback)
{
- System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterReadMinMeasuredValueAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ return RequestAttributeReporting(0x0000, onReportCallback);
}
-CHIP_ERROR TemperatureMeasurementCluster::ReadAttributeMaxMeasuredValue(Callback::Callback<> * onCompletion)
+CHIP_ERROR TemperatureMeasurementCluster::ReadAttributeMinMeasuredValue(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterReadMaxMeasuredValueAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterReadMinMeasuredValueAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
-CHIP_ERROR TemperatureMeasurementCluster::ReadAttributeClusterRevision(Callback::Callback<> * onCompletion)
+CHIP_ERROR TemperatureMeasurementCluster::ReadAttributeMaxMeasuredValue(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
{
- System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterReadClusterRevisionAttribute(mEndpoint);
- return SendCommand(std::move(payload), onCompletion);
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterReadMaxMeasuredValueAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
+}
+
+CHIP_ERROR TemperatureMeasurementCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ uint8_t seqNum = mDevice->GetNextSequenceNumber();
+ System::PacketBufferHandle payload = encodeTemperatureMeasurementClusterReadClusterRevisionAttribute(seqNum, mEndpoint);
+ return SendCommand(seqNum, std::move(payload), onSuccessCallback, onFailureCallback);
}
} // namespace Controller
diff --git a/src/controller/CHIPClusters.h b/src/controller/CHIPClusters.h
index 1be0a65..6669335 100644
--- a/src/controller/CHIPClusters.h
+++ b/src/controller/CHIPClusters.h
@@ -46,16 +46,17 @@
~BarrierControlCluster() {}
// Cluster Commands
- CHIP_ERROR BarrierControlGoToPercent(Callback::Callback<> * onCompletion, uint8_t percentOpen);
- CHIP_ERROR BarrierControlStop(Callback::Callback<> * onCompletion);
+ CHIP_ERROR BarrierControlGoToPercent(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t percentOpen);
+ CHIP_ERROR BarrierControlStop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeBarrierMovingState(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeBarrierSafetyStatus(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeBarrierCapabilities(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeBarrierPosition(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeBarrierMovingState(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeBarrierSafetyStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeBarrierCapabilities(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeBarrierPosition(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
private:
static constexpr CommandId kBarrierControlGoToPercentCommandId = 0x00;
@@ -69,14 +70,14 @@
~BasicCluster() {}
// Cluster Commands
- CHIP_ERROR MfgSpecificPing(Callback::Callback<> * onCompletion);
- CHIP_ERROR ResetToFactoryDefaults(Callback::Callback<> * onCompletion);
+ CHIP_ERROR MfgSpecificPing(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ResetToFactoryDefaults(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeZclVersion(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePowerSource(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeZclVersion(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePowerSource(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
private:
static constexpr CommandId kMfgSpecificPingCommandId = 0x00;
@@ -90,14 +91,14 @@
~BindingCluster() {}
// Cluster Commands
- CHIP_ERROR Bind(Callback::Callback<> * onCompletion, chip::NodeId nodeId, chip::GroupId groupId, chip::EndpointId endpointId,
- chip::ClusterId clusterId);
- CHIP_ERROR Unbind(Callback::Callback<> * onCompletion, chip::NodeId nodeId, chip::GroupId groupId, chip::EndpointId endpointId,
- chip::ClusterId clusterId);
+ CHIP_ERROR Bind(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, chip::NodeId nodeId,
+ chip::GroupId groupId, chip::EndpointId endpointId, chip::ClusterId clusterId);
+ CHIP_ERROR Unbind(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, chip::NodeId nodeId,
+ chip::GroupId groupId, chip::EndpointId endpointId, chip::ClusterId clusterId);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
private:
static constexpr CommandId kBindCommandId = 0x00;
@@ -111,112 +112,142 @@
~ColorControlCluster() {}
// Cluster Commands
- CHIP_ERROR MoveColor(Callback::Callback<> * onCompletion, int16_t rateX, int16_t rateY, uint8_t optionsMask,
- uint8_t optionsOverride);
- CHIP_ERROR MoveColorTemperature(Callback::Callback<> * onCompletion, uint8_t moveMode, uint16_t rate,
- uint16_t colorTemperatureMinimum, uint16_t colorTemperatureMaximum, uint8_t optionsMask,
- uint8_t optionsOverride);
- CHIP_ERROR MoveHue(Callback::Callback<> * onCompletion, uint8_t moveMode, uint8_t rate, uint8_t optionsMask,
- uint8_t optionsOverride);
- CHIP_ERROR MoveSaturation(Callback::Callback<> * onCompletion, uint8_t moveMode, uint8_t rate, uint8_t optionsMask,
- uint8_t optionsOverride);
- CHIP_ERROR MoveToColor(Callback::Callback<> * onCompletion, uint16_t colorX, uint16_t colorY, uint16_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride);
- CHIP_ERROR MoveToColorTemperature(Callback::Callback<> * onCompletion, uint16_t colorTemperature, uint16_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride);
- CHIP_ERROR MoveToHue(Callback::Callback<> * onCompletion, uint8_t hue, uint8_t direction, uint16_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride);
- CHIP_ERROR MoveToHueAndSaturation(Callback::Callback<> * onCompletion, uint8_t hue, uint8_t saturation, uint16_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride);
- CHIP_ERROR MoveToSaturation(Callback::Callback<> * onCompletion, uint8_t saturation, uint16_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride);
- CHIP_ERROR StepColor(Callback::Callback<> * onCompletion, int16_t stepX, int16_t stepY, uint16_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride);
- CHIP_ERROR StepColorTemperature(Callback::Callback<> * onCompletion, uint8_t stepMode, uint16_t stepSize,
- uint16_t transitionTime, uint16_t colorTemperatureMinimum, uint16_t colorTemperatureMaximum,
- uint8_t optionsMask, uint8_t optionsOverride);
- CHIP_ERROR StepHue(Callback::Callback<> * onCompletion, uint8_t stepMode, uint8_t stepSize, uint8_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride);
- CHIP_ERROR StepSaturation(Callback::Callback<> * onCompletion, uint8_t stepMode, uint8_t stepSize, uint8_t transitionTime,
- uint8_t optionsMask, uint8_t optionsOverride);
- CHIP_ERROR StopMoveStep(Callback::Callback<> * onCompletion, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR MoveColor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, int16_t rateX,
+ int16_t rateY, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR MoveColorTemperature(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t moveMode, uint16_t rate, uint16_t colorTemperatureMinimum,
+ uint16_t colorTemperatureMaximum, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR MoveHue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t moveMode,
+ uint8_t rate, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR MoveSaturation(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t moveMode,
+ uint8_t rate, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR MoveToColor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t colorX,
+ uint16_t colorY, uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR MoveToColorTemperature(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t colorTemperature, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride);
+ CHIP_ERROR MoveToHue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t hue,
+ uint8_t direction, uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR MoveToHueAndSaturation(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t hue, uint8_t saturation, uint16_t transitionTime, uint8_t optionsMask,
+ uint8_t optionsOverride);
+ CHIP_ERROR MoveToSaturation(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t saturation, uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR StepColor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, int16_t stepX,
+ int16_t stepY, uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR StepColorTemperature(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t stepMode, uint16_t stepSize, uint16_t transitionTime, uint16_t colorTemperatureMinimum,
+ uint16_t colorTemperatureMaximum, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR StepHue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t stepMode,
+ uint8_t stepSize, uint8_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR StepSaturation(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t stepMode,
+ uint8_t stepSize, uint8_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride);
+ CHIP_ERROR StopMoveStep(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t optionsMask,
+ uint8_t optionsOverride);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeCurrentHue(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeCurrentSaturation(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeRemainingTime(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeCurrentX(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeCurrentY(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeDriftCompensation(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeCompensationText(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorTemperature(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorMode(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorControlOptions(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeNumberOfPrimaries(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary1X(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary1Y(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary1Intensity(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary2X(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary2Y(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary2Intensity(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary3X(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary3Y(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary3Intensity(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary4X(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary4Y(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary4Intensity(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary5X(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary5Y(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary5Intensity(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary6X(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary6Y(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributePrimary6Intensity(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeWhitePointX(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeWhitePointY(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorPointRX(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorPointRY(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorPointRIntensity(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorPointGX(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorPointGY(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorPointGIntensity(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorPointBX(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorPointBY(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorPointBIntensity(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeEnhancedCurrentHue(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeEnhancedColorMode(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorLoopActive(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorLoopDirection(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorLoopTime(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorCapabilities(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorTempPhysicalMin(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeColorTempPhysicalMax(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeCoupleColorTempToLevelMinMireds(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeStartUpColorTemperatureMireds(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
- CHIP_ERROR WriteAttributeColorControlOptions(Callback::Callback<> * onCompletion, uint8_t value);
- CHIP_ERROR WriteAttributeWhitePointX(Callback::Callback<> * onCompletion, uint16_t value);
- CHIP_ERROR WriteAttributeWhitePointY(Callback::Callback<> * onCompletion, uint16_t value);
- CHIP_ERROR WriteAttributeColorPointRX(Callback::Callback<> * onCompletion, uint16_t value);
- CHIP_ERROR WriteAttributeColorPointRY(Callback::Callback<> * onCompletion, uint16_t value);
- CHIP_ERROR WriteAttributeColorPointRIntensity(Callback::Callback<> * onCompletion, uint8_t value);
- CHIP_ERROR WriteAttributeColorPointGX(Callback::Callback<> * onCompletion, uint16_t value);
- CHIP_ERROR WriteAttributeColorPointGY(Callback::Callback<> * onCompletion, uint16_t value);
- CHIP_ERROR WriteAttributeColorPointGIntensity(Callback::Callback<> * onCompletion, uint8_t value);
- CHIP_ERROR WriteAttributeColorPointBX(Callback::Callback<> * onCompletion, uint16_t value);
- CHIP_ERROR WriteAttributeColorPointBY(Callback::Callback<> * onCompletion, uint16_t value);
- CHIP_ERROR WriteAttributeColorPointBIntensity(Callback::Callback<> * onCompletion, uint8_t value);
- CHIP_ERROR WriteAttributeStartUpColorTemperatureMireds(Callback::Callback<> * onCompletion, uint16_t value);
- CHIP_ERROR ReportAttributeCurrentHue(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange, uint16_t minInterval,
- uint16_t maxInterval, uint8_t change);
- CHIP_ERROR ReportAttributeCurrentSaturation(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval, uint8_t change);
- CHIP_ERROR ReportAttributeCurrentX(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange, uint16_t minInterval,
- uint16_t maxInterval, uint16_t change);
- CHIP_ERROR ReportAttributeCurrentY(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange, uint16_t minInterval,
- uint16_t maxInterval, uint16_t change);
- CHIP_ERROR ReportAttributeColorTemperature(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval, uint16_t change);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeCurrentHue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeCurrentSaturation(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeRemainingTime(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeCurrentX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeCurrentY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeDriftCompensation(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeCompensationText(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorTemperature(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorMode(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorControlOptions(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeNumberOfPrimaries(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary1X(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary1Y(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary1Intensity(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary2X(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary2Y(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary2Intensity(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary3X(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary3Y(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary3Intensity(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary4X(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary4Y(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary4Intensity(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary5X(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary5Y(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary5Intensity(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary6X(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary6Y(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributePrimary6Intensity(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeWhitePointX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeWhitePointY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorPointRX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorPointRY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorPointRIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorPointGX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorPointGY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorPointGIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorPointBX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorPointBY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorPointBIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeEnhancedCurrentHue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeEnhancedColorMode(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorLoopActive(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorLoopDirection(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorLoopTime(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorCapabilities(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorTempPhysicalMin(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeColorTempPhysicalMax(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeCoupleColorTempToLevelMinMireds(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeStartUpColorTemperatureMireds(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR WriteAttributeColorControlOptions(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t value);
+ CHIP_ERROR WriteAttributeWhitePointX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t value);
+ CHIP_ERROR WriteAttributeWhitePointY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t value);
+ CHIP_ERROR WriteAttributeColorPointRX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t value);
+ CHIP_ERROR WriteAttributeColorPointRY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t value);
+ CHIP_ERROR WriteAttributeColorPointRIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t value);
+ CHIP_ERROR WriteAttributeColorPointGX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t value);
+ CHIP_ERROR WriteAttributeColorPointGY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t value);
+ CHIP_ERROR WriteAttributeColorPointGIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t value);
+ CHIP_ERROR WriteAttributeColorPointBX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t value);
+ CHIP_ERROR WriteAttributeColorPointBY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t value);
+ CHIP_ERROR WriteAttributeColorPointBIntensity(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint8_t value);
+ CHIP_ERROR WriteAttributeStartUpColorTemperatureMireds(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t value);
+ CHIP_ERROR ConfigureAttributeCurrentHue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t minInterval, uint16_t maxInterval, uint8_t change);
+ CHIP_ERROR ReportAttributeCurrentHue(Callback::Cancelable * onReportCallback);
+ CHIP_ERROR ConfigureAttributeCurrentSaturation(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t minInterval,
+ uint16_t maxInterval, uint8_t change);
+ CHIP_ERROR ReportAttributeCurrentSaturation(Callback::Cancelable * onReportCallback);
+ CHIP_ERROR ConfigureAttributeCurrentX(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t minInterval, uint16_t maxInterval, uint16_t change);
+ CHIP_ERROR ReportAttributeCurrentX(Callback::Cancelable * onReportCallback);
+ CHIP_ERROR ConfigureAttributeCurrentY(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t minInterval, uint16_t maxInterval, uint16_t change);
+ CHIP_ERROR ReportAttributeCurrentY(Callback::Cancelable * onReportCallback);
+ CHIP_ERROR ConfigureAttributeColorTemperature(Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback, uint16_t minInterval,
+ uint16_t maxInterval, uint16_t change);
+ CHIP_ERROR ReportAttributeColorTemperature(Callback::Cancelable * onReportCallback);
private:
static constexpr CommandId kMoveColorCommandId = 0x08;
@@ -242,41 +273,54 @@
~DoorLockCluster() {}
// Cluster Commands
- CHIP_ERROR ClearAllPins(Callback::Callback<> * onCompletion);
- CHIP_ERROR ClearAllRfids(Callback::Callback<> * onCompletion);
- CHIP_ERROR ClearHolidaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId);
- CHIP_ERROR ClearPin(Callback::Callback<> * onCompletion, uint16_t userId);
- CHIP_ERROR ClearRfid(Callback::Callback<> * onCompletion, uint16_t userId);
- CHIP_ERROR ClearWeekdaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId);
- CHIP_ERROR ClearYeardaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId);
- CHIP_ERROR GetHolidaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId);
- CHIP_ERROR GetLogRecord(Callback::Callback<> * onCompletion, uint16_t logIndex);
- CHIP_ERROR GetPin(Callback::Callback<> * onCompletion, uint16_t userId);
- CHIP_ERROR GetRfid(Callback::Callback<> * onCompletion, uint16_t userId);
- CHIP_ERROR GetUserType(Callback::Callback<> * onCompletion, uint16_t userId);
- CHIP_ERROR GetWeekdaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId);
- CHIP_ERROR GetYeardaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId);
- CHIP_ERROR LockDoor(Callback::Callback<> * onCompletion, char * pin);
- CHIP_ERROR SetHolidaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint32_t localStartTime,
- uint32_t localEndTime, uint8_t operatingModeDuringHoliday);
- CHIP_ERROR SetPin(Callback::Callback<> * onCompletion, uint16_t userId, uint8_t userStatus, uint8_t userType, char * pin);
- CHIP_ERROR SetRfid(Callback::Callback<> * onCompletion, uint16_t userId, uint8_t userStatus, uint8_t userType, char * id);
- CHIP_ERROR SetUserType(Callback::Callback<> * onCompletion, uint16_t userId, uint8_t userType);
- CHIP_ERROR SetWeekdaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId, uint8_t daysMask,
- uint8_t startHour, uint8_t startMinute, uint8_t endHour, uint8_t endMinute);
- CHIP_ERROR SetYeardaySchedule(Callback::Callback<> * onCompletion, uint8_t scheduleId, uint16_t userId, uint32_t localStartTime,
- uint32_t localEndTime);
- CHIP_ERROR UnlockDoor(Callback::Callback<> * onCompletion, char * pin);
- CHIP_ERROR UnlockWithTimeout(Callback::Callback<> * onCompletion, uint16_t timeoutInSeconds, char * pin);
+ CHIP_ERROR ClearAllPins(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ClearAllRfids(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ClearHolidaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId);
+ CHIP_ERROR ClearPin(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t userId);
+ CHIP_ERROR ClearRfid(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t userId);
+ CHIP_ERROR ClearWeekdaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId);
+ CHIP_ERROR ClearYeardaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId);
+ CHIP_ERROR GetHolidaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId);
+ CHIP_ERROR GetLogRecord(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t logIndex);
+ CHIP_ERROR GetPin(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t userId);
+ CHIP_ERROR GetRfid(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t userId);
+ CHIP_ERROR GetUserType(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t userId);
+ CHIP_ERROR GetWeekdaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId);
+ CHIP_ERROR GetYeardaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId);
+ CHIP_ERROR LockDoor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, char * pin);
+ CHIP_ERROR SetHolidaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint32_t localStartTime, uint32_t localEndTime,
+ uint8_t operatingModeDuringHoliday);
+ CHIP_ERROR SetPin(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t userId,
+ uint8_t userStatus, uint8_t userType, char * pin);
+ CHIP_ERROR SetRfid(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t userId,
+ uint8_t userStatus, uint8_t userType, char * id);
+ CHIP_ERROR SetUserType(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t userId,
+ uint8_t userType);
+ CHIP_ERROR SetWeekdaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId, uint8_t daysMask, uint8_t startHour, uint8_t startMinute,
+ uint8_t endHour, uint8_t endMinute);
+ CHIP_ERROR SetYeardaySchedule(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t scheduleId, uint16_t userId, uint32_t localStartTime, uint32_t localEndTime);
+ CHIP_ERROR UnlockDoor(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, char * pin);
+ CHIP_ERROR UnlockWithTimeout(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t timeoutInSeconds, char * pin);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeLockState(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeLockType(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeActuatorEnabled(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReportAttributeLockState(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange, uint16_t minInterval,
- uint16_t maxInterval);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeLockState(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeLockType(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeActuatorEnabled(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ConfigureAttributeLockState(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t minInterval, uint16_t maxInterval);
+ CHIP_ERROR ReportAttributeLockState(Callback::Cancelable * onReportCallback);
private:
static constexpr CommandId kClearAllPinsCommandId = 0x08;
@@ -311,17 +355,20 @@
~GroupsCluster() {}
// Cluster Commands
- CHIP_ERROR AddGroup(Callback::Callback<> * onCompletion, uint16_t groupId, char * groupName);
- CHIP_ERROR AddGroupIfIdentifying(Callback::Callback<> * onCompletion, uint16_t groupId, char * groupName);
- CHIP_ERROR GetGroupMembership(Callback::Callback<> * onCompletion, uint8_t groupCount, uint16_t groupList);
- CHIP_ERROR RemoveAllGroups(Callback::Callback<> * onCompletion);
- CHIP_ERROR RemoveGroup(Callback::Callback<> * onCompletion, uint16_t groupId);
- CHIP_ERROR ViewGroup(Callback::Callback<> * onCompletion, uint16_t groupId);
+ CHIP_ERROR AddGroup(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t groupId,
+ char * groupName);
+ CHIP_ERROR AddGroupIfIdentifying(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId, char * groupName);
+ CHIP_ERROR GetGroupMembership(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t groupCount, uint16_t groupList);
+ CHIP_ERROR RemoveAllGroups(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR RemoveGroup(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t groupId);
+ CHIP_ERROR ViewGroup(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t groupId);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeNameSupport(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeNameSupport(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
private:
static constexpr CommandId kAddGroupCommandId = 0x00;
@@ -339,14 +386,15 @@
~IasZoneCluster() {}
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeZoneState(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeZoneType(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeZoneStatus(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeIasCieAddress(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeZoneId(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
- CHIP_ERROR WriteAttributeIasCieAddress(Callback::Callback<> * onCompletion, uint64_t value);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeZoneState(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeZoneType(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeZoneStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeIasCieAddress(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeZoneId(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR WriteAttributeIasCieAddress(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint64_t value);
};
class DLL_EXPORT IdentifyCluster : public ClusterBase
@@ -356,14 +404,15 @@
~IdentifyCluster() {}
// Cluster Commands
- CHIP_ERROR Identify(Callback::Callback<> * onCompletion, uint16_t identifyTime);
- CHIP_ERROR IdentifyQuery(Callback::Callback<> * onCompletion);
+ CHIP_ERROR Identify(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t identifyTime);
+ CHIP_ERROR IdentifyQuery(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeIdentifyTime(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
- CHIP_ERROR WriteAttributeIdentifyTime(Callback::Callback<> * onCompletion, uint16_t value);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeIdentifyTime(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR WriteAttributeIdentifyTime(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t value);
private:
static constexpr CommandId kIdentifyCommandId = 0x00;
@@ -377,24 +426,29 @@
~LevelControlCluster() {}
// Cluster Commands
- CHIP_ERROR Move(Callback::Callback<> * onCompletion, uint8_t moveMode, uint8_t rate, uint8_t optionMask,
+ CHIP_ERROR Move(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t moveMode,
+ uint8_t rate, uint8_t optionMask, uint8_t optionOverride);
+ CHIP_ERROR MoveToLevel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t level,
+ uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride);
+ CHIP_ERROR MoveToLevelWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint8_t level, uint16_t transitionTime);
+ CHIP_ERROR MoveWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t moveMode,
+ uint8_t rate);
+ CHIP_ERROR Step(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t stepMode,
+ uint8_t stepSize, uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride);
+ CHIP_ERROR StepWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t stepMode,
+ uint8_t stepSize, uint16_t transitionTime);
+ CHIP_ERROR Stop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t optionMask,
uint8_t optionOverride);
- CHIP_ERROR MoveToLevel(Callback::Callback<> * onCompletion, uint8_t level, uint16_t transitionTime, uint8_t optionMask,
- uint8_t optionOverride);
- CHIP_ERROR MoveToLevelWithOnOff(Callback::Callback<> * onCompletion, uint8_t level, uint16_t transitionTime);
- CHIP_ERROR MoveWithOnOff(Callback::Callback<> * onCompletion, uint8_t moveMode, uint8_t rate);
- CHIP_ERROR Step(Callback::Callback<> * onCompletion, uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime,
- uint8_t optionMask, uint8_t optionOverride);
- CHIP_ERROR StepWithOnOff(Callback::Callback<> * onCompletion, uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime);
- CHIP_ERROR Stop(Callback::Callback<> * onCompletion, uint8_t optionMask, uint8_t optionOverride);
- CHIP_ERROR StopWithOnOff(Callback::Callback<> * onCompletion);
+ CHIP_ERROR StopWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeCurrentLevel(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReportAttributeCurrentLevel(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval, uint8_t change);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ConfigureAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t minInterval, uint16_t maxInterval, uint8_t change);
+ CHIP_ERROR ReportAttributeCurrentLevel(Callback::Cancelable * onReportCallback);
private:
static constexpr CommandId kMoveCommandId = 0x01;
@@ -414,16 +468,17 @@
~OnOffCluster() {}
// Cluster Commands
- CHIP_ERROR Off(Callback::Callback<> * onCompletion);
- CHIP_ERROR On(Callback::Callback<> * onCompletion);
- CHIP_ERROR Toggle(Callback::Callback<> * onCompletion);
+ CHIP_ERROR Off(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR On(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR Toggle(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeOnOff(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReportAttributeOnOff(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange, uint16_t minInterval,
- uint16_t maxInterval);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ConfigureAttributeOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t minInterval, uint16_t maxInterval);
+ CHIP_ERROR ReportAttributeOnOff(Callback::Cancelable * onReportCallback);
private:
static constexpr CommandId kOffCommandId = 0x00;
@@ -438,23 +493,30 @@
~ScenesCluster() {}
// Cluster Commands
- CHIP_ERROR AddScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
- char * sceneName, chip::ClusterId clusterId, uint8_t length, uint8_t value);
- CHIP_ERROR GetSceneMembership(Callback::Callback<> * onCompletion, uint16_t groupId);
- CHIP_ERROR RecallScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime);
- CHIP_ERROR RemoveAllScenes(Callback::Callback<> * onCompletion, uint16_t groupId);
- CHIP_ERROR RemoveScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId);
- CHIP_ERROR StoreScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId);
- CHIP_ERROR ViewScene(Callback::Callback<> * onCompletion, uint16_t groupId, uint8_t sceneId);
+ CHIP_ERROR AddScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t groupId,
+ uint8_t sceneId, uint16_t transitionTime, char * sceneName, chip::ClusterId clusterId, uint8_t length,
+ uint8_t value);
+ CHIP_ERROR GetSceneMembership(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId);
+ CHIP_ERROR RecallScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t groupId,
+ uint8_t sceneId, uint16_t transitionTime);
+ CHIP_ERROR RemoveAllScenes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t groupId);
+ CHIP_ERROR RemoveScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t groupId,
+ uint8_t sceneId);
+ CHIP_ERROR StoreScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t groupId,
+ uint8_t sceneId);
+ CHIP_ERROR ViewScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t groupId,
+ uint8_t sceneId);
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeSceneCount(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeCurrentScene(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeCurrentGroup(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeSceneValid(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeNameSupport(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeSceneCount(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeCurrentScene(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeCurrentGroup(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeSceneValid(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeNameSupport(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
private:
static constexpr CommandId kAddSceneCommandId = 0x00;
@@ -473,13 +535,14 @@
~TemperatureMeasurementCluster() {}
// Cluster Attributes
- CHIP_ERROR DiscoverAttributes(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeMeasuredValue(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeMinMeasuredValue(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeMaxMeasuredValue(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReadAttributeClusterRevision(Callback::Callback<> * onCompletion);
- CHIP_ERROR ReportAttributeMeasuredValue(Callback::Callback<> * onCompletion, Callback::Callback<> * onChange,
- uint16_t minInterval, uint16_t maxInterval, int16_t change);
+ CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeMeasuredValue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeMinMeasuredValue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeMaxMeasuredValue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ CHIP_ERROR ConfigureAttributeMeasuredValue(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback,
+ uint16_t minInterval, uint16_t maxInterval, int16_t change);
+ CHIP_ERROR ReportAttributeMeasuredValue(Callback::Cancelable * onReportCallback);
};
} // namespace Controller
diff --git a/src/controller/CHIPDevice.cpp b/src/controller/CHIPDevice.cpp
index 619d659..d476d38 100644
--- a/src/controller/CHIPDevice.cpp
+++ b/src/controller/CHIPDevice.cpp
@@ -36,6 +36,7 @@
#endif // CHIP_SYSTEM_CONFIG_USE_LWIP
#include <app/CommandSender.h>
+#include <app/server/DataModelHandler.h>
#include <core/CHIPCore.h>
#include <core/CHIPEncoding.h>
#include <core/CHIPSafeCasts.h>
@@ -231,42 +232,9 @@
{
mStatusDelegate->OnMessage(std::move(msgBuf));
}
-
- // TODO: The following callback processing will need further work
- // 1. The response needs to be parsed as per cluster definition. The response callback
- // should carry the parsed response values.
- // 2. The reports callbacks should also be called with the parsed reports.
- // 3. The callbacks would be tracked using exchange context. On receiving the
- // message, the exchange context in the message should be matched against
- // the registered callbacks.
- // GitHub issue: https://github.com/project-chip/connectedhomeip/issues/3910
- Cancelable * ca = mResponses.mNext;
- while (ca != &mResponses)
+ else
{
- Callback::Callback<> * cb = Callback::Callback<>::FromCancelable(ca);
- // Let's advance to the next cancelable, as the current one will get removed
- // from the list (and once removed, its next will point to itself)
- ca = ca->mNext;
- if (cb != nullptr)
- {
- ChipLogProgress(Controller, "Dispatching response callback %p", cb);
- cb->Cancel();
- cb->mCall(cb->mContext);
- }
- }
-
- ca = mReports.mNext;
- while (ca != &mReports)
- {
- Callback::Callback<> * cb = Callback::Callback<>::FromCancelable(ca);
- // Let's advance to the next cancelable, as the current one might get removed
- // from the list in the callback (and if removed, its next will point to itself)
- ca = ca->mNext;
- if (cb != nullptr)
- {
- ChipLogProgress(Controller, "Dispatching report callback %p", cb);
- cb->mCall(cb->mContext);
- }
+ HandleDataModelMessage(mDeviceId, std::move(msgBuf));
}
}
}
@@ -318,28 +286,15 @@
return true;
}
-void Device::AddResponseHandler(EndpointId endpoint, ClusterId cluster, Callback::Callback<> * onResponse)
+void Device::AddResponseHandler(uint8_t seqNum, Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback)
{
- CallbackInfo info = { endpoint, cluster };
- Callback::Cancelable * cancelable = onResponse->Cancel();
-
- static_assert(sizeof(info) <= sizeof(cancelable->mInfoScalar), "Size of CallbackInfo should be <= size of mInfoScalar");
-
- cancelable->mInfoScalar = 0;
- memmove(&cancelable->mInfoScalar, &info, sizeof(info));
- mResponses.Enqueue(cancelable);
+ mCallbacksMgr.AddResponseCallback(mDeviceId, seqNum, onSuccessCallback, onFailureCallback);
}
-void Device::AddReportHandler(EndpointId endpoint, ClusterId cluster, Callback::Callback<> * onReport)
+void Device::AddReportHandler(EndpointId endpoint, ClusterId cluster, AttributeId attribute,
+ Callback::Cancelable * onReportCallback)
{
- CallbackInfo info = { endpoint, cluster };
- Callback::Cancelable * cancelable = onReport->Cancel();
-
- static_assert(sizeof(info) <= sizeof(cancelable->mInfoScalar), "Size of CallbackInfo should be <= size of mInfoScalar");
-
- cancelable->mInfoScalar = 0;
- memmove(&cancelable->mInfoScalar, &info, sizeof(info));
- mReports.Enqueue(cancelable);
+ mCallbacksMgr.AddReportCallback(mDeviceId, endpoint, cluster, attribute, onReportCallback);
}
} // namespace Controller
diff --git a/src/controller/CHIPDevice.h b/src/controller/CHIPDevice.h
index cab2653..df435ee 100644
--- a/src/controller/CHIPDevice.h
+++ b/src/controller/CHIPDevice.h
@@ -28,6 +28,7 @@
#include <app/CommandSender.h>
#include <app/InteractionModelEngine.h>
+#include <app/util/CHIPDeviceCallbacksMgr.h>
#include <app/util/basic-types.h>
#include <core/CHIPCallback.h>
#include <core/CHIPCore.h>
@@ -251,8 +252,9 @@
PASESessionSerializable & GetPairing() { return mPairing; }
- void AddResponseHandler(EndpointId endpoint, ClusterId cluster, Callback::Callback<> * onResponse);
- void AddReportHandler(EndpointId endpoint, ClusterId cluster, Callback::Callback<> * onReport);
+ uint8_t GetNextSequenceNumber() { return mSequenceNumber++; };
+ void AddResponseHandler(uint8_t seqNum, Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback);
+ void AddReportHandler(EndpointId endpoint, ClusterId cluster, AttributeId attribute, Callback::Cancelable * onReportCallback);
private:
enum class ConnectionState
@@ -262,12 +264,6 @@
SecureConnected,
};
- struct CallbackInfo
- {
- EndpointId endpoint;
- ClusterId cluster;
- };
-
enum class ResetTransport
{
kYes,
@@ -302,13 +298,9 @@
SecureSessionHandle mSecureSession = {};
- /* Track all outstanding response callbacks for this device. The callbacks are
- registered when a command is sent to the device, to get notified with the results. */
- Callback::CallbackDeque mResponses;
+ uint8_t mSequenceNumber = 0;
- /* Track all outstanding callbacks for attribute reports from this device. The callbacks are
- registered when the user requests attribute reporting for device attributes. */
- Callback::CallbackDeque mReports;
+ app::CHIPDeviceCallbacksMgr & mCallbacksMgr = app::CHIPDeviceCallbacksMgr::GetInstance();
/**
* @brief
diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp
index 6136c47..22165a2 100644
--- a/src/controller/CHIPDeviceController.cpp
+++ b/src/controller/CHIPDeviceController.cpp
@@ -40,6 +40,7 @@
#endif
#include <app/InteractionModelEngine.h>
+#include <app/server/DataModelHandler.h>
#include <core/CHIPCore.h>
#include <core/CHIPEncoding.h>
#include <core/CHIPSafeCasts.h>
@@ -159,6 +160,8 @@
mSessionManager->SetDelegate(this);
#endif
+ InitDataModelHandler();
+
mState = State::Initialized;
mLocalDeviceId = localDeviceId;
diff --git a/src/controller/java/CHIPDeviceController-JNI.cpp b/src/controller/java/CHIPDeviceController-JNI.cpp
index 671029d..159c902 100644
--- a/src/controller/java/CHIPDeviceController-JNI.cpp
+++ b/src/controller/java/CHIPDeviceController-JNI.cpp
@@ -432,16 +432,16 @@
switch (commandID)
{
case 0:
- buffer = encodeOnOffClusterOffCommand(endpoint);
+ buffer = encodeOnOffClusterOffCommand(0, endpoint);
break;
case 1:
- buffer = encodeOnOffClusterOnCommand(endpoint);
+ buffer = encodeOnOffClusterOnCommand(0, endpoint);
break;
case 2:
- buffer = encodeOnOffClusterToggleCommand(endpoint);
+ buffer = encodeOnOffClusterToggleCommand(0, endpoint);
break;
case 3:
- buffer = encodeLevelControlClusterMoveToLevelCommand(endpoint, (uint8_t)(aValue & 0xff), 0xFFFF, 0, 0);
+ buffer = encodeLevelControlClusterMoveToLevelCommand(0, endpoint, (uint8_t)(aValue & 0xff), 0xFFFF, 0, 0);
break;
default:
ChipLogError(Controller, "Unknown command: %d", commandID);
diff --git a/src/controller/python/ChipDeviceController-ClusterCommands.cpp b/src/controller/python/ChipDeviceController-ClusterCommands.cpp
index efa246d..7369455 100644
--- a/src/controller/python/ChipDeviceController-ClusterCommands.cpp
+++ b/src/controller/python/ChipDeviceController-ClusterCommands.cpp
@@ -40,7 +40,7 @@
chip::Controller::BarrierControlCluster clusterBarrierControl;
(void) ZCLgroupId;
clusterBarrierControl.Associate(device, ZCLendpointId);
- return clusterBarrierControl.BarrierControlGoToPercent(nullptr, percentOpen);
+ return clusterBarrierControl.BarrierControlGoToPercent(nullptr, nullptr, percentOpen);
}
CHIP_ERROR chip_ime_AppendCommand_BarrierControl_BarrierControlStop(chip::Controller::Device * device,
chip::EndpointId ZCLendpointId, chip::GroupId ZCLgroupId)
@@ -49,7 +49,7 @@
chip::Controller::BarrierControlCluster clusterBarrierControl;
(void) ZCLgroupId;
clusterBarrierControl.Associate(device, ZCLendpointId);
- return clusterBarrierControl.BarrierControlStop(nullptr);
+ return clusterBarrierControl.BarrierControlStop(nullptr, nullptr);
}
// End of Cluster BarrierControl
@@ -61,7 +61,7 @@
chip::Controller::BasicCluster clusterBasic;
(void) ZCLgroupId;
clusterBasic.Associate(device, ZCLendpointId);
- return clusterBasic.MfgSpecificPing(nullptr);
+ return clusterBasic.MfgSpecificPing(nullptr, nullptr);
}
CHIP_ERROR chip_ime_AppendCommand_Basic_ResetToFactoryDefaults(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId)
@@ -70,7 +70,7 @@
chip::Controller::BasicCluster clusterBasic;
(void) ZCLgroupId;
clusterBasic.Associate(device, ZCLendpointId);
- return clusterBasic.ResetToFactoryDefaults(nullptr);
+ return clusterBasic.ResetToFactoryDefaults(nullptr, nullptr);
}
// End of Cluster Basic
@@ -83,7 +83,7 @@
chip::Controller::BindingCluster clusterBinding;
(void) ZCLgroupId;
clusterBinding.Associate(device, ZCLendpointId);
- return clusterBinding.Bind(nullptr, nodeId, groupId, endpointId, clusterId);
+ return clusterBinding.Bind(nullptr, nullptr, nodeId, groupId, endpointId, clusterId);
}
CHIP_ERROR chip_ime_AppendCommand_Binding_Unbind(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, chip::NodeId nodeId, chip::GroupId groupId,
@@ -93,7 +93,7 @@
chip::Controller::BindingCluster clusterBinding;
(void) ZCLgroupId;
clusterBinding.Associate(device, ZCLendpointId);
- return clusterBinding.Unbind(nullptr, nodeId, groupId, endpointId, clusterId);
+ return clusterBinding.Unbind(nullptr, nullptr, nodeId, groupId, endpointId, clusterId);
}
// End of Cluster Binding
@@ -106,7 +106,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.MoveColor(nullptr, rateX, rateY, optionsMask, optionsOverride);
+ return clusterColorControl.MoveColor(nullptr, nullptr, rateX, rateY, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_MoveColorTemperature(
chip::Controller::Device * device, chip::EndpointId ZCLendpointId, chip::GroupId ZCLgroupId, uint8_t moveMode, uint16_t rate,
@@ -116,8 +116,8 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.MoveColorTemperature(nullptr, moveMode, rate, colorTemperatureMinimum, colorTemperatureMaximum,
- optionsMask, optionsOverride);
+ return clusterColorControl.MoveColorTemperature(nullptr, nullptr, moveMode, rate, colorTemperatureMinimum,
+ colorTemperatureMaximum, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_MoveHue(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t moveMode, uint8_t rate,
@@ -127,7 +127,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.MoveHue(nullptr, moveMode, rate, optionsMask, optionsOverride);
+ return clusterColorControl.MoveHue(nullptr, nullptr, moveMode, rate, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_MoveSaturation(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t moveMode, uint8_t rate,
@@ -137,7 +137,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.MoveSaturation(nullptr, moveMode, rate, optionsMask, optionsOverride);
+ return clusterColorControl.MoveSaturation(nullptr, nullptr, moveMode, rate, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_MoveToColor(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t colorX, uint16_t colorY,
@@ -147,7 +147,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.MoveToColor(nullptr, colorX, colorY, transitionTime, optionsMask, optionsOverride);
+ return clusterColorControl.MoveToColor(nullptr, nullptr, colorX, colorY, transitionTime, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_MoveToColorTemperature(chip::Controller::Device * device,
chip::EndpointId ZCLendpointId, chip::GroupId ZCLgroupId,
@@ -158,7 +158,8 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.MoveToColorTemperature(nullptr, colorTemperature, transitionTime, optionsMask, optionsOverride);
+ return clusterColorControl.MoveToColorTemperature(nullptr, nullptr, colorTemperature, transitionTime, optionsMask,
+ optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_MoveToHue(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t hue, uint8_t direction,
@@ -168,7 +169,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.MoveToHue(nullptr, hue, direction, transitionTime, optionsMask, optionsOverride);
+ return clusterColorControl.MoveToHue(nullptr, nullptr, hue, direction, transitionTime, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_MoveToHueAndSaturation(chip::Controller::Device * device,
chip::EndpointId ZCLendpointId, chip::GroupId ZCLgroupId,
@@ -179,7 +180,8 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.MoveToHueAndSaturation(nullptr, hue, saturation, transitionTime, optionsMask, optionsOverride);
+ return clusterColorControl.MoveToHueAndSaturation(nullptr, nullptr, hue, saturation, transitionTime, optionsMask,
+ optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_MoveToSaturation(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t saturation,
@@ -190,7 +192,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.MoveToSaturation(nullptr, saturation, transitionTime, optionsMask, optionsOverride);
+ return clusterColorControl.MoveToSaturation(nullptr, nullptr, saturation, transitionTime, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_StepColor(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, int16_t stepX, int16_t stepY,
@@ -200,7 +202,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.StepColor(nullptr, stepX, stepY, transitionTime, optionsMask, optionsOverride);
+ return clusterColorControl.StepColor(nullptr, nullptr, stepX, stepY, transitionTime, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_StepColorTemperature(chip::Controller::Device * device,
chip::EndpointId ZCLendpointId, chip::GroupId ZCLgroupId,
@@ -213,7 +215,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.StepColorTemperature(nullptr, stepMode, stepSize, transitionTime, colorTemperatureMinimum,
+ return clusterColorControl.StepColorTemperature(nullptr, nullptr, stepMode, stepSize, transitionTime, colorTemperatureMinimum,
colorTemperatureMaximum, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_StepHue(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
@@ -224,7 +226,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.StepHue(nullptr, stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+ return clusterColorControl.StepHue(nullptr, nullptr, stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_StepSaturation(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t stepMode, uint8_t stepSize,
@@ -234,7 +236,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.StepSaturation(nullptr, stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+ return clusterColorControl.StepSaturation(nullptr, nullptr, stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
}
CHIP_ERROR chip_ime_AppendCommand_ColorControl_StopMoveStep(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t optionsMask, uint8_t optionsOverride)
@@ -243,7 +245,7 @@
chip::Controller::ColorControlCluster clusterColorControl;
(void) ZCLgroupId;
clusterColorControl.Associate(device, ZCLendpointId);
- return clusterColorControl.StopMoveStep(nullptr, optionsMask, optionsOverride);
+ return clusterColorControl.StopMoveStep(nullptr, nullptr, optionsMask, optionsOverride);
}
// End of Cluster ColorControl
@@ -255,7 +257,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.ClearAllPins(nullptr);
+ return clusterDoorLock.ClearAllPins(nullptr, nullptr);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_ClearAllRfids(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId)
@@ -264,7 +266,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.ClearAllRfids(nullptr);
+ return clusterDoorLock.ClearAllRfids(nullptr, nullptr);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_ClearHolidaySchedule(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t scheduleId)
@@ -273,7 +275,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.ClearHolidaySchedule(nullptr, scheduleId);
+ return clusterDoorLock.ClearHolidaySchedule(nullptr, nullptr, scheduleId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_ClearPin(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t userId)
@@ -282,7 +284,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.ClearPin(nullptr, userId);
+ return clusterDoorLock.ClearPin(nullptr, nullptr, userId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_ClearRfid(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t userId)
@@ -291,7 +293,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.ClearRfid(nullptr, userId);
+ return clusterDoorLock.ClearRfid(nullptr, nullptr, userId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_ClearWeekdaySchedule(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t scheduleId, uint16_t userId)
@@ -300,7 +302,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.ClearWeekdaySchedule(nullptr, scheduleId, userId);
+ return clusterDoorLock.ClearWeekdaySchedule(nullptr, nullptr, scheduleId, userId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_ClearYeardaySchedule(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t scheduleId, uint16_t userId)
@@ -309,7 +311,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.ClearYeardaySchedule(nullptr, scheduleId, userId);
+ return clusterDoorLock.ClearYeardaySchedule(nullptr, nullptr, scheduleId, userId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_GetHolidaySchedule(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t scheduleId)
@@ -318,7 +320,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.GetHolidaySchedule(nullptr, scheduleId);
+ return clusterDoorLock.GetHolidaySchedule(nullptr, nullptr, scheduleId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_GetLogRecord(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t logIndex)
@@ -327,7 +329,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.GetLogRecord(nullptr, logIndex);
+ return clusterDoorLock.GetLogRecord(nullptr, nullptr, logIndex);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_GetPin(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t userId)
@@ -336,7 +338,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.GetPin(nullptr, userId);
+ return clusterDoorLock.GetPin(nullptr, nullptr, userId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_GetRfid(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t userId)
@@ -345,7 +347,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.GetRfid(nullptr, userId);
+ return clusterDoorLock.GetRfid(nullptr, nullptr, userId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_GetUserType(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t userId)
@@ -354,7 +356,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.GetUserType(nullptr, userId);
+ return clusterDoorLock.GetUserType(nullptr, nullptr, userId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_GetWeekdaySchedule(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t scheduleId, uint16_t userId)
@@ -363,7 +365,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.GetWeekdaySchedule(nullptr, scheduleId, userId);
+ return clusterDoorLock.GetWeekdaySchedule(nullptr, nullptr, scheduleId, userId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_GetYeardaySchedule(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t scheduleId, uint16_t userId)
@@ -372,7 +374,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.GetYeardaySchedule(nullptr, scheduleId, userId);
+ return clusterDoorLock.GetYeardaySchedule(nullptr, nullptr, scheduleId, userId);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_LockDoor(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, char * pin)
@@ -381,7 +383,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.LockDoor(nullptr, pin);
+ return clusterDoorLock.LockDoor(nullptr, nullptr, pin);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_SetHolidaySchedule(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t scheduleId, uint32_t localStartTime,
@@ -391,7 +393,8 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.SetHolidaySchedule(nullptr, scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday);
+ return clusterDoorLock.SetHolidaySchedule(nullptr, nullptr, scheduleId, localStartTime, localEndTime,
+ operatingModeDuringHoliday);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_SetPin(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t userId, uint8_t userStatus, uint8_t userType,
@@ -401,7 +404,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.SetPin(nullptr, userId, userStatus, userType, pin);
+ return clusterDoorLock.SetPin(nullptr, nullptr, userId, userStatus, userType, pin);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_SetRfid(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t userId, uint8_t userStatus, uint8_t userType,
@@ -411,7 +414,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.SetRfid(nullptr, userId, userStatus, userType, id);
+ return clusterDoorLock.SetRfid(nullptr, nullptr, userId, userStatus, userType, id);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_SetUserType(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t userId, uint8_t userType)
@@ -420,7 +423,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.SetUserType(nullptr, userId, userType);
+ return clusterDoorLock.SetUserType(nullptr, nullptr, userId, userType);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_SetWeekdaySchedule(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t scheduleId, uint16_t userId,
@@ -431,7 +434,8 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.SetWeekdaySchedule(nullptr, scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute);
+ return clusterDoorLock.SetWeekdaySchedule(nullptr, nullptr, scheduleId, userId, daysMask, startHour, startMinute, endHour,
+ endMinute);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_SetYeardaySchedule(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t scheduleId, uint16_t userId,
@@ -441,7 +445,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.SetYeardaySchedule(nullptr, scheduleId, userId, localStartTime, localEndTime);
+ return clusterDoorLock.SetYeardaySchedule(nullptr, nullptr, scheduleId, userId, localStartTime, localEndTime);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_UnlockDoor(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, char * pin)
@@ -450,7 +454,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.UnlockDoor(nullptr, pin);
+ return clusterDoorLock.UnlockDoor(nullptr, nullptr, pin);
}
CHIP_ERROR chip_ime_AppendCommand_DoorLock_UnlockWithTimeout(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t timeoutInSeconds, char * pin)
@@ -459,7 +463,7 @@
chip::Controller::DoorLockCluster clusterDoorLock;
(void) ZCLgroupId;
clusterDoorLock.Associate(device, ZCLendpointId);
- return clusterDoorLock.UnlockWithTimeout(nullptr, timeoutInSeconds, pin);
+ return clusterDoorLock.UnlockWithTimeout(nullptr, nullptr, timeoutInSeconds, pin);
}
// End of Cluster DoorLock
@@ -471,7 +475,7 @@
chip::Controller::GroupsCluster clusterGroups;
(void) ZCLgroupId;
clusterGroups.Associate(device, ZCLendpointId);
- return clusterGroups.AddGroup(nullptr, groupId, groupName);
+ return clusterGroups.AddGroup(nullptr, nullptr, groupId, groupName);
}
CHIP_ERROR chip_ime_AppendCommand_Groups_AddGroupIfIdentifying(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t groupId, char * groupName)
@@ -480,7 +484,7 @@
chip::Controller::GroupsCluster clusterGroups;
(void) ZCLgroupId;
clusterGroups.Associate(device, ZCLendpointId);
- return clusterGroups.AddGroupIfIdentifying(nullptr, groupId, groupName);
+ return clusterGroups.AddGroupIfIdentifying(nullptr, nullptr, groupId, groupName);
}
CHIP_ERROR chip_ime_AppendCommand_Groups_GetGroupMembership(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t groupCount, uint16_t groupList)
@@ -489,7 +493,7 @@
chip::Controller::GroupsCluster clusterGroups;
(void) ZCLgroupId;
clusterGroups.Associate(device, ZCLendpointId);
- return clusterGroups.GetGroupMembership(nullptr, groupCount, groupList);
+ return clusterGroups.GetGroupMembership(nullptr, nullptr, groupCount, groupList);
}
CHIP_ERROR chip_ime_AppendCommand_Groups_RemoveAllGroups(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId)
@@ -498,7 +502,7 @@
chip::Controller::GroupsCluster clusterGroups;
(void) ZCLgroupId;
clusterGroups.Associate(device, ZCLendpointId);
- return clusterGroups.RemoveAllGroups(nullptr);
+ return clusterGroups.RemoveAllGroups(nullptr, nullptr);
}
CHIP_ERROR chip_ime_AppendCommand_Groups_RemoveGroup(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t groupId)
@@ -507,7 +511,7 @@
chip::Controller::GroupsCluster clusterGroups;
(void) ZCLgroupId;
clusterGroups.Associate(device, ZCLendpointId);
- return clusterGroups.RemoveGroup(nullptr, groupId);
+ return clusterGroups.RemoveGroup(nullptr, nullptr, groupId);
}
CHIP_ERROR chip_ime_AppendCommand_Groups_ViewGroup(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t groupId)
@@ -516,7 +520,7 @@
chip::Controller::GroupsCluster clusterGroups;
(void) ZCLgroupId;
clusterGroups.Associate(device, ZCLendpointId);
- return clusterGroups.ViewGroup(nullptr, groupId);
+ return clusterGroups.ViewGroup(nullptr, nullptr, groupId);
}
// End of Cluster Groups
@@ -531,7 +535,7 @@
chip::Controller::IdentifyCluster clusterIdentify;
(void) ZCLgroupId;
clusterIdentify.Associate(device, ZCLendpointId);
- return clusterIdentify.Identify(nullptr, identifyTime);
+ return clusterIdentify.Identify(nullptr, nullptr, identifyTime);
}
CHIP_ERROR chip_ime_AppendCommand_Identify_IdentifyQuery(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId)
@@ -540,7 +544,7 @@
chip::Controller::IdentifyCluster clusterIdentify;
(void) ZCLgroupId;
clusterIdentify.Associate(device, ZCLendpointId);
- return clusterIdentify.IdentifyQuery(nullptr);
+ return clusterIdentify.IdentifyQuery(nullptr, nullptr);
}
// End of Cluster Identify
@@ -553,7 +557,7 @@
chip::Controller::LevelControlCluster clusterLevelControl;
(void) ZCLgroupId;
clusterLevelControl.Associate(device, ZCLendpointId);
- return clusterLevelControl.Move(nullptr, moveMode, rate, optionMask, optionOverride);
+ return clusterLevelControl.Move(nullptr, nullptr, moveMode, rate, optionMask, optionOverride);
}
CHIP_ERROR chip_ime_AppendCommand_LevelControl_MoveToLevel(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t level, uint16_t transitionTime,
@@ -563,7 +567,7 @@
chip::Controller::LevelControlCluster clusterLevelControl;
(void) ZCLgroupId;
clusterLevelControl.Associate(device, ZCLendpointId);
- return clusterLevelControl.MoveToLevel(nullptr, level, transitionTime, optionMask, optionOverride);
+ return clusterLevelControl.MoveToLevel(nullptr, nullptr, level, transitionTime, optionMask, optionOverride);
}
CHIP_ERROR chip_ime_AppendCommand_LevelControl_MoveToLevelWithOnOff(chip::Controller::Device * device,
chip::EndpointId ZCLendpointId, chip::GroupId ZCLgroupId,
@@ -573,7 +577,7 @@
chip::Controller::LevelControlCluster clusterLevelControl;
(void) ZCLgroupId;
clusterLevelControl.Associate(device, ZCLendpointId);
- return clusterLevelControl.MoveToLevelWithOnOff(nullptr, level, transitionTime);
+ return clusterLevelControl.MoveToLevelWithOnOff(nullptr, nullptr, level, transitionTime);
}
CHIP_ERROR chip_ime_AppendCommand_LevelControl_MoveWithOnOff(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t moveMode, uint8_t rate)
@@ -582,7 +586,7 @@
chip::Controller::LevelControlCluster clusterLevelControl;
(void) ZCLgroupId;
clusterLevelControl.Associate(device, ZCLendpointId);
- return clusterLevelControl.MoveWithOnOff(nullptr, moveMode, rate);
+ return clusterLevelControl.MoveWithOnOff(nullptr, nullptr, moveMode, rate);
}
CHIP_ERROR chip_ime_AppendCommand_LevelControl_Step(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t stepMode, uint8_t stepSize,
@@ -592,7 +596,7 @@
chip::Controller::LevelControlCluster clusterLevelControl;
(void) ZCLgroupId;
clusterLevelControl.Associate(device, ZCLendpointId);
- return clusterLevelControl.Step(nullptr, stepMode, stepSize, transitionTime, optionMask, optionOverride);
+ return clusterLevelControl.Step(nullptr, nullptr, stepMode, stepSize, transitionTime, optionMask, optionOverride);
}
CHIP_ERROR chip_ime_AppendCommand_LevelControl_StepWithOnOff(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t stepMode, uint8_t stepSize,
@@ -602,7 +606,7 @@
chip::Controller::LevelControlCluster clusterLevelControl;
(void) ZCLgroupId;
clusterLevelControl.Associate(device, ZCLendpointId);
- return clusterLevelControl.StepWithOnOff(nullptr, stepMode, stepSize, transitionTime);
+ return clusterLevelControl.StepWithOnOff(nullptr, nullptr, stepMode, stepSize, transitionTime);
}
CHIP_ERROR chip_ime_AppendCommand_LevelControl_Stop(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint8_t optionMask, uint8_t optionOverride)
@@ -611,7 +615,7 @@
chip::Controller::LevelControlCluster clusterLevelControl;
(void) ZCLgroupId;
clusterLevelControl.Associate(device, ZCLendpointId);
- return clusterLevelControl.Stop(nullptr, optionMask, optionOverride);
+ return clusterLevelControl.Stop(nullptr, nullptr, optionMask, optionOverride);
}
CHIP_ERROR chip_ime_AppendCommand_LevelControl_StopWithOnOff(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId)
@@ -620,7 +624,7 @@
chip::Controller::LevelControlCluster clusterLevelControl;
(void) ZCLgroupId;
clusterLevelControl.Associate(device, ZCLendpointId);
- return clusterLevelControl.StopWithOnOff(nullptr);
+ return clusterLevelControl.StopWithOnOff(nullptr, nullptr);
}
// End of Cluster LevelControl
@@ -632,7 +636,7 @@
chip::Controller::OnOffCluster clusterOnOff;
(void) ZCLgroupId;
clusterOnOff.Associate(device, ZCLendpointId);
- return clusterOnOff.Off(nullptr);
+ return clusterOnOff.Off(nullptr, nullptr);
}
CHIP_ERROR chip_ime_AppendCommand_OnOff_On(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId)
@@ -641,7 +645,7 @@
chip::Controller::OnOffCluster clusterOnOff;
(void) ZCLgroupId;
clusterOnOff.Associate(device, ZCLendpointId);
- return clusterOnOff.On(nullptr);
+ return clusterOnOff.On(nullptr, nullptr);
}
CHIP_ERROR chip_ime_AppendCommand_OnOff_Toggle(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId)
@@ -650,7 +654,7 @@
chip::Controller::OnOffCluster clusterOnOff;
(void) ZCLgroupId;
clusterOnOff.Associate(device, ZCLendpointId);
- return clusterOnOff.Toggle(nullptr);
+ return clusterOnOff.Toggle(nullptr, nullptr);
}
// End of Cluster OnOff
@@ -664,7 +668,7 @@
chip::Controller::ScenesCluster clusterScenes;
(void) ZCLgroupId;
clusterScenes.Associate(device, ZCLendpointId);
- return clusterScenes.AddScene(nullptr, groupId, sceneId, transitionTime, sceneName, clusterId, length, value);
+ return clusterScenes.AddScene(nullptr, nullptr, groupId, sceneId, transitionTime, sceneName, clusterId, length, value);
}
CHIP_ERROR chip_ime_AppendCommand_Scenes_GetSceneMembership(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t groupId)
@@ -673,7 +677,7 @@
chip::Controller::ScenesCluster clusterScenes;
(void) ZCLgroupId;
clusterScenes.Associate(device, ZCLendpointId);
- return clusterScenes.GetSceneMembership(nullptr, groupId);
+ return clusterScenes.GetSceneMembership(nullptr, nullptr, groupId);
}
CHIP_ERROR chip_ime_AppendCommand_Scenes_RecallScene(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t groupId, uint8_t sceneId,
@@ -683,7 +687,7 @@
chip::Controller::ScenesCluster clusterScenes;
(void) ZCLgroupId;
clusterScenes.Associate(device, ZCLendpointId);
- return clusterScenes.RecallScene(nullptr, groupId, sceneId, transitionTime);
+ return clusterScenes.RecallScene(nullptr, nullptr, groupId, sceneId, transitionTime);
}
CHIP_ERROR chip_ime_AppendCommand_Scenes_RemoveAllScenes(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t groupId)
@@ -692,7 +696,7 @@
chip::Controller::ScenesCluster clusterScenes;
(void) ZCLgroupId;
clusterScenes.Associate(device, ZCLendpointId);
- return clusterScenes.RemoveAllScenes(nullptr, groupId);
+ return clusterScenes.RemoveAllScenes(nullptr, nullptr, groupId);
}
CHIP_ERROR chip_ime_AppendCommand_Scenes_RemoveScene(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t groupId, uint8_t sceneId)
@@ -701,7 +705,7 @@
chip::Controller::ScenesCluster clusterScenes;
(void) ZCLgroupId;
clusterScenes.Associate(device, ZCLendpointId);
- return clusterScenes.RemoveScene(nullptr, groupId, sceneId);
+ return clusterScenes.RemoveScene(nullptr, nullptr, groupId, sceneId);
}
CHIP_ERROR chip_ime_AppendCommand_Scenes_StoreScene(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t groupId, uint8_t sceneId)
@@ -710,7 +714,7 @@
chip::Controller::ScenesCluster clusterScenes;
(void) ZCLgroupId;
clusterScenes.Associate(device, ZCLendpointId);
- return clusterScenes.StoreScene(nullptr, groupId, sceneId);
+ return clusterScenes.StoreScene(nullptr, nullptr, groupId, sceneId);
}
CHIP_ERROR chip_ime_AppendCommand_Scenes_ViewScene(chip::Controller::Device * device, chip::EndpointId ZCLendpointId,
chip::GroupId ZCLgroupId, uint16_t groupId, uint8_t sceneId)
@@ -719,7 +723,7 @@
chip::Controller::ScenesCluster clusterScenes;
(void) ZCLgroupId;
clusterScenes.Associate(device, ZCLendpointId);
- return clusterScenes.ViewScene(nullptr, groupId, sceneId);
+ return clusterScenes.ViewScene(nullptr, nullptr, groupId, sceneId);
}
// End of Cluster Scenes
diff --git a/src/darwin/CHIPTool/CHIPTool/Framework Helpers/DefaultsUtils.h b/src/darwin/CHIPTool/CHIPTool/Framework Helpers/DefaultsUtils.h
index 1cfa594..63e4a5d 100644
--- a/src/darwin/CHIPTool/CHIPTool/Framework Helpers/DefaultsUtils.h
+++ b/src/darwin/CHIPTool/CHIPTool/Framework Helpers/DefaultsUtils.h
@@ -27,6 +27,7 @@
void CHIPRemoveDomainValueForKey(NSString * domain, NSString * key);
uint64_t CHIPGetNextAvailableDeviceID(void);
void CHIPSetNextAvailableDeviceID(uint64_t id);
+CHIPDevice * GetPairedDevice(void);
@interface CHIPToolPersistentStorageDelegate : NSObject <CHIPPersistentStorageDelegate>
diff --git a/src/darwin/CHIPTool/CHIPTool/Framework Helpers/DefaultsUtils.m b/src/darwin/CHIPTool/CHIPTool/Framework Helpers/DefaultsUtils.m
index 9081616..cc65266 100644
--- a/src/darwin/CHIPTool/CHIPTool/Framework Helpers/DefaultsUtils.m
+++ b/src/darwin/CHIPTool/CHIPTool/Framework Helpers/DefaultsUtils.m
@@ -62,6 +62,26 @@
CHIPSetDomainValueForKey(kCHIPToolDefaultsDomain, kCHIPNextAvailableDeviceIDKey, [NSNumber numberWithUnsignedLongLong:id]);
}
+CHIPDevice * GetPairedDevice(void)
+{
+ CHIPToolPersistentStorageDelegate * storage = [[CHIPToolPersistentStorageDelegate alloc] init];
+ dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.persistentstorage.callback", DISPATCH_QUEUE_SERIAL);
+
+ CHIPDeviceController * controller = [CHIPDeviceController sharedController];
+ [controller setPersistentStorageDelegate:storage queue:callbackQueue];
+
+ CHIPDevice * device = nil;
+ uint64_t deviceId = CHIPGetNextAvailableDeviceID();
+ if (deviceId > 1) {
+ // Let's use the last device that was paired
+ deviceId--;
+ NSError * error;
+ device = [controller getPairedDevice:deviceId error:&error];
+ }
+
+ return device;
+}
+
@implementation CHIPToolPersistentStorageDelegate
// MARK: CHIPPersistentStorageDelegate
diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/Bindings/BindingsViewController.m b/src/darwin/CHIPTool/CHIPTool/View Controllers/Bindings/BindingsViewController.m
index 8d28b70..d08cd75 100644
--- a/src/darwin/CHIPTool/CHIPTool/View Controllers/Bindings/BindingsViewController.m
+++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/Bindings/BindingsViewController.m
@@ -17,12 +17,15 @@
#import "BindingsViewController.h"
#import "CHIPUIViewUtils.h"
+#import "DefaultsUtils.h"
@interface BindingsViewController ()
@property (nonatomic, strong) UITextField * nodeIDTextField;
@property (nonatomic, strong) UITextField * groupIDTextField;
@property (nonatomic, strong) UITextField * endpointIDTextField;
@property (nonatomic, strong) UITextField * clusterIDTextField;
+
+@property (nonatomic, strong) CHIPBinding * cluster;
@end
@implementation BindingsViewController
@@ -34,6 +37,8 @@
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
+
+ self.cluster = [[CHIPBinding alloc] initWithDevice:GetPairedDevice() endpoint:1 queue:dispatch_get_main_queue()];
}
- (void)dismissKeyboard
@@ -111,13 +116,15 @@
[stackView addArrangedSubview:stackViewButtons];
[stackViewButtons.trailingAnchor constraintEqualToAnchor:stackView.trailingAnchor].active = YES;
+
+ [self _clearTextFields];
}
- (void)_clearTextFields
{
- _nodeIDTextField.text = @"";
- _endpointIDTextField.text = @"";
- _groupIDTextField.text = @"";
+ _nodeIDTextField.text = [NSString stringWithFormat:@"%d", 112233];
+ _endpointIDTextField.text = @"1";
+ _groupIDTextField.text = @"0";
_clusterIDTextField.text = @"";
}
@@ -125,14 +132,38 @@
- (IBAction)bind:(id)sender
{
- [self _clearTextFields];
- // TODO: Call binding API
+ int nodeId = [_nodeIDTextField.text intValue];
+ int endpointId = [_endpointIDTextField.text intValue];
+ int groupId = [_groupIDTextField.text intValue];
+ int clusterId = [_clusterIDTextField.text intValue];
+
+ [self.cluster bind:nodeId
+ groupId:groupId
+ endpointId:endpointId
+ clusterId:clusterId
+ completionHandler:^(NSError * _Nullable error, NSDictionary * _Nullable values) {
+ NSString * resultString
+ = (error == nil) ? @"Bind command: success!" : [NSString stringWithFormat:@"An error occured: 0x%02lx", error.code];
+ NSLog(resultString, nil);
+ }];
}
- (IBAction)unbind:(id)sender
{
- [self _clearTextFields];
- // TODO: Call unbinding API
+ int nodeId = [_nodeIDTextField.text intValue];
+ int endpointId = [_endpointIDTextField.text intValue];
+ int groupId = [_groupIDTextField.text intValue];
+ int clusterId = [_clusterIDTextField.text intValue];
+
+ [self.cluster unbind:nodeId
+ groupId:groupId
+ endpointId:endpointId
+ clusterId:clusterId
+ completionHandler:^(NSError * _Nullable error, NSDictionary * _Nullable values) {
+ NSString * resultString = (error == nil) ? @"Unbind command: success!"
+ : [NSString stringWithFormat:@"An error occured: 0x%02lx", error.code];
+ NSLog(resultString, nil);
+ }];
}
@end
diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/Echo client/EchoViewController.h b/src/darwin/CHIPTool/CHIPTool/View Controllers/Echo client/EchoViewController.h
index b163e66..8984019 100644
--- a/src/darwin/CHIPTool/CHIPTool/View Controllers/Echo client/EchoViewController.h
+++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/Echo client/EchoViewController.h
@@ -20,7 +20,7 @@
NS_ASSUME_NONNULL_BEGIN
-@interface EchoViewController : UIViewController <CHIPDeviceControllerDelegate>
+@interface EchoViewController : UIViewController
@end
NS_ASSUME_NONNULL_END
diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/Echo client/EchoViewController.m b/src/darwin/CHIPTool/CHIPTool/View Controllers/Echo client/EchoViewController.m
index c4e6db3..c91d591 100644
--- a/src/darwin/CHIPTool/CHIPTool/View Controllers/Echo client/EchoViewController.m
+++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/Echo client/EchoViewController.m
@@ -20,8 +20,6 @@
#import "CHIPUIViewUtils.h"
#import "DefaultsUtils.h"
-#define RESULT_DISPLAY_DURATION 5.0 * NSEC_PER_SEC
-
@interface EchoViewController ()
@property (strong, nonatomic) UITextField * messageTextField;
@@ -30,10 +28,7 @@
@property (nonatomic, strong) UILabel * resultLabel;
@property (nonatomic, strong) UIStackView * stackView;
-@property (readwrite) CHIPDeviceController * chipController;
-@property (readwrite) CHIPDevice * chipDevice;
-
-@property (readonly) CHIPToolPersistentStorageDelegate * persistentStorage;
+@property (readwrite) CHIPBasic * cluster;
@end
@@ -46,25 +41,11 @@
[super viewDidLoad];
[self setupUIElements];
- _persistentStorage = [[CHIPToolPersistentStorageDelegate alloc] init];
-
// listen for taps to dismiss the keyboard
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
- // initialize the device controller
- dispatch_queue_t callbackQueue = dispatch_queue_create("com.zigbee.chip.echovc.callback", DISPATCH_QUEUE_SERIAL);
- self.chipController = [CHIPDeviceController sharedController];
- [self.chipController setDelegate:self queue:callbackQueue];
- [self.chipController setPersistentStorageDelegate:_persistentStorage queue:callbackQueue];
-
- uint64_t deviceID = CHIPGetNextAvailableDeviceID();
- if (deviceID > 1) {
- // Let's use the last device that was paired
- deviceID--;
- NSError * error;
- self.chipDevice = [self.chipController getPairedDevice:deviceID error:&error];
- }
+ self.cluster = [[CHIPBasic alloc] initWithDevice:GetPairedDevice() endpoint:1 queue:dispatch_get_main_queue()];
}
- (void)dismissKeyboard
@@ -129,55 +110,22 @@
- (IBAction)sendMessage:(id)sender
{
+ if (!self.cluster) {
+ [self updateResult:@"Something went wrong. Cluster is not initialized."];
+ }
+
NSString * msg = [self.messageTextField text];
if (msg.length == 0) {
msg = [self.messageTextField placeholder];
}
- // send message
- if ([self.chipDevice isActive]) {
- NSError * error;
- BOOL didSend = [self.chipDevice sendMessage:[msg dataUsingEncoding:NSUTF8StringEncoding] error:&error];
- if (!didSend) {
- NSString * errorString = [@"Error: " stringByAppendingString:error.localizedDescription];
- [self updateResult:errorString];
- } else {
- [self updateResult:@"Message Sent"];
- }
- } else {
- [self updateResult:@"Controller not connected"];
- }
-}
+ [self updateResult:@"MfgSpecificPing command sent..."];
-// MARK: CHIPDeviceControllerDelegate
-- (void)deviceControllerOnConnected
-{
- NSLog(@"Status: Device connected");
-}
-
-- (void)deviceControllerOnError:(nonnull NSError *)error
-{
- NSLog(@"Status: Device Controller error %@", [error description]);
- if (error) {
- NSString * stringError = [@"Error: " stringByAppendingString:error.description];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5.0), dispatch_get_main_queue(), ^{
- [self updateResult:stringError];
- });
- }
-}
-
-- (void)deviceControllerOnMessage:(nonnull NSData *)message
-{
- NSString * stringMessage;
- if ([CHIPDevice isDataModelCommand:message] == YES) {
- stringMessage = [CHIPDevice commandToString:message];
- } else {
- stringMessage = [[NSString alloc] initWithData:message encoding:NSUTF8StringEncoding];
- }
- NSString * resultMessage = [@"Echo Response: " stringByAppendingFormat:@"%@", stringMessage];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5.0), dispatch_get_main_queue(), ^{
- [self updateResult:resultMessage];
- });
+ [self.cluster mfgSpecificPing:^(NSError * error, NSDictionary * values) {
+ NSString * resultString = (error == nil) ? @"MfgSpecificPing command: success!"
+ : [NSString stringWithFormat:@"An error occured: 0x%02lx", error.code];
+ [self updateResult:resultString];
+ }];
}
@end
diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/OnOffCluster/OnOffViewController.h b/src/darwin/CHIPTool/CHIPTool/View Controllers/OnOffCluster/OnOffViewController.h
index 8519c13..d03d468 100644
--- a/src/darwin/CHIPTool/CHIPTool/View Controllers/OnOffCluster/OnOffViewController.h
+++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/OnOffCluster/OnOffViewController.h
@@ -20,9 +20,7 @@
NS_ASSUME_NONNULL_BEGIN
-@interface OnOffViewController
- : UIViewController <CHIPDeviceControllerDelegate, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate>
-
+@interface OnOffViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate>
@end
NS_ASSUME_NONNULL_END
diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/OnOffCluster/OnOffViewController.m b/src/darwin/CHIPTool/CHIPTool/View Controllers/OnOffCluster/OnOffViewController.m
index a86b3b8..b11ce4a 100644
--- a/src/darwin/CHIPTool/CHIPTool/View Controllers/OnOffCluster/OnOffViewController.m
+++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/OnOffCluster/OnOffViewController.m
@@ -25,17 +25,12 @@
@interface OnOffViewController ()
@property (nonatomic, strong) UITextField * numLightsTextField;
-@property (readwrite) NSArray<CHIPOnOff *> * onOffClusters;
-@property (readwrite) CHIPOnOff * onOffEndpoint2;
-
@property (nonatomic, strong) UILabel * resultLabel;
@property (nonatomic, strong) UILabel * titleLabel;
@property (nonatomic, strong) UIStackView * stackView;
-@property (readwrite) CHIPDeviceController * chipController;
@property (readwrite) CHIPDevice * chipDevice;
-@property (readonly) CHIPToolPersistentStorageDelegate * persistentStorage;
@end
@implementation OnOffViewController {
@@ -52,8 +47,9 @@
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
- [self initializeChipController];
[self setupUIElements];
+
+ self.chipDevice = GetPairedDevice();
}
- (void)dismissKeyboard
@@ -90,7 +86,6 @@
[stackView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor constant:-30].active = YES;
// Num lights to show
- [self setupNumberOfLightClustersFromDefaults];
UILabel * numLightsLabel = [UILabel new];
numLightsLabel.text = @"# of light endpoints:";
_numLightsTextField = [UITextField new];
@@ -122,7 +117,7 @@
[numLightsView.trailingAnchor constraintEqualToAnchor:stackView.trailingAnchor].active = true;
// Create buttons
- [self addButtons:[_onOffClusters count] toStackView:stackView];
+ [self addButtons:[self numLightClustersToShow] toStackView:stackView];
// Result message
_resultLabel = [UILabel new];
@@ -212,25 +207,6 @@
// MARK: Cluster Setup
-- (void)initializeChipController
-{
- _persistentStorage = [[CHIPToolPersistentStorageDelegate alloc] init];
-
- // initialize the device controller
- _callbackQueue = dispatch_queue_create("com.zigbee.chip.onoffvc.callback", DISPATCH_QUEUE_SERIAL);
- self.chipController = [CHIPDeviceController sharedController];
- [self.chipController setDelegate:self queue:_callbackQueue];
- [self.chipController setPersistentStorageDelegate:_persistentStorage queue:_callbackQueue];
-
- uint64_t deviceID = CHIPGetNextAvailableDeviceID();
- if (deviceID > 1) {
- // Let's use the last device that was paired
- deviceID--;
- NSError * error;
- self.chipDevice = [self.chipController getPairedDevice:deviceID error:&error];
- }
-}
-
- (int)numLightClustersToShow
{
NSString * numClusters = CHIPGetDomainValueForKey(kCHIPToolDefaultsDomain, kCHIPNumLightOnOffCluster);
@@ -242,105 +218,48 @@
return numberOfLights;
}
-- (void)setupNumberOfLightClustersFromDefaults
-{
- [self setupNumberOfLightClusters:[self numLightClustersToShow]];
-}
-
-- (void)setupNumberOfLightClusters:(int)numLights
-{
- NSMutableArray<CHIPOnOff *> * clusters = [NSMutableArray new];
- for (int i = 0; i < numLights; i++) {
- CHIPOnOff * cluster = [[CHIPOnOff alloc] initWithDevice:self.chipDevice endpoint:(i + 1) queue:_callbackQueue];
- [clusters addObject:cluster];
- }
- _onOffClusters = clusters;
-}
-
// MARK: UIButton actions
- (IBAction)onButtonTapped:(id)sender
{
- CHIPDeviceCallback completionHandler = ^(NSError * error) {
- NSLog(@"Status: On command completed with error %@", [error description]);
- };
-
UIButton * button = (UIButton *) sender;
- NSInteger lightNumber = button.tag;
- NSLog(@"Light %@ on button pressed.", @(lightNumber));
+ NSInteger endpoint = button.tag;
+ [self updateResult:[NSString stringWithFormat:@"On command sent on endpoint %@", @(endpoint)]];
- if (lightNumber <= [_onOffClusters count]) {
- CHIPOnOff * onOff = [_onOffClusters objectAtIndex:(lightNumber - 1)];
- [onOff on:completionHandler];
- } else {
- NSLog(@"No cluster initated at endpoint %@.", @(lightNumber));
- }
+ CHIPOnOff * onOff = [[CHIPOnOff alloc] initWithDevice:self.chipDevice endpoint:endpoint queue:dispatch_get_main_queue()];
+ [onOff on:^(NSError * error, NSDictionary * values) {
+ NSString * resultString
+ = (error != nil) ? [NSString stringWithFormat:@"An error occured: 0x%02lx", error.code] : @"On command success";
+ [self updateResult:resultString];
+ }];
}
- (IBAction)offButtonTapped:(id)sender
{
- CHIPDeviceCallback completionHandler = ^(NSError * error) {
- NSLog(@"Status: Off command completed with error %@", [error description]);
- };
-
UIButton * button = (UIButton *) sender;
- NSInteger lightNumber = button.tag;
- NSLog(@"Light %@ off button pressed.", @(lightNumber));
+ NSInteger endpoint = button.tag;
+ [self updateResult:[NSString stringWithFormat:@"Off command sent on endpoint %@", @(endpoint)]];
- if (lightNumber <= [_onOffClusters count]) {
- CHIPOnOff * onOff = [_onOffClusters objectAtIndex:(lightNumber - 1)];
- [onOff off:completionHandler];
- } else {
- NSLog(@"No cluster initated at endpoint %@.", @(lightNumber));
- }
+ CHIPOnOff * onOff = [[CHIPOnOff alloc] initWithDevice:self.chipDevice endpoint:endpoint queue:dispatch_get_main_queue()];
+ [onOff off:^(NSError * error, NSDictionary * values) {
+ NSString * resultString
+ = (error != nil) ? [NSString stringWithFormat:@"An error occured: 0x%02lx", error.code] : @"Off command success";
+ [self updateResult:resultString];
+ }];
}
- (IBAction)toggleButtonTapped:(id)sender
{
- CHIPDeviceCallback completionHandler = ^(NSError * error) {
- NSLog(@"Status: Toggle command completed with error %@", [error description]);
- };
-
UIButton * button = (UIButton *) sender;
- NSInteger lightNumber = button.tag;
- NSLog(@"Light %@ toggle button pressed.", @(lightNumber));
+ NSInteger endpoint = button.tag;
+ [self updateResult:[NSString stringWithFormat:@"Toggle command sent on endpoint %@", @(endpoint)]];
- if (lightNumber <= [_onOffClusters count]) {
- CHIPOnOff * onOff = [_onOffClusters objectAtIndex:(lightNumber - 1)];
- [onOff toggle:completionHandler];
- } else {
- NSLog(@"No cluster initated at endpoint %@.", @(lightNumber));
- }
+ CHIPOnOff * onOff = [[CHIPOnOff alloc] initWithDevice:self.chipDevice endpoint:endpoint queue:dispatch_get_main_queue()];
+ [onOff toggle:^(NSError * error, NSDictionary * values) {
+ NSString * resultString
+ = (error != nil) ? [NSString stringWithFormat:@"An error occured: 0x%02lx", error.code] : @"Toggle command success";
+ [self updateResult:resultString];
+ }];
}
-// MARK: CHIPDeviceControllerDelegate
-- (void)deviceControllerOnConnected
-{
- NSLog(@"Status: Device connected");
-}
-
-- (void)deviceControllerOnError:(nonnull NSError *)error
-{
- NSLog(@"Status: Device Controller error %@", [error description]);
- if (error) {
- NSString * stringError = [@"Error: " stringByAppendingString:error.description];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5.0), dispatch_get_main_queue(), ^{
- [self updateResult:stringError];
- });
- }
-}
-
-- (void)deviceControllerOnMessage:(nonnull NSData *)message
-{
- NSString * stringMessage;
- if ([CHIPDevice isDataModelCommand:message] == YES) {
- stringMessage = [CHIPDevice commandToString:message];
- } else {
- stringMessage = [[NSString alloc] initWithData:message encoding:NSUTF8StringEncoding];
- }
- NSString * resultMessage = [@"Echo Response: " stringByAppendingFormat:@"%@", stringMessage];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5.0), dispatch_get_main_queue(), ^{
- [self updateResult:resultMessage];
- });
-}
@end
diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.h b/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.h
index d014313..74115a6 100644
--- a/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.h
+++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.h
@@ -20,7 +20,7 @@
#import <CoreNFC/CoreNFC.h>
#import <UIKit/UIKit.h>
-@interface QRCodeViewController : UIViewController <AVCaptureMetadataOutputObjectsDelegate, CHIPDeviceControllerDelegate,
- CHIPDevicePairingDelegate, NFCNDEFReaderSessionDelegate>
+@interface QRCodeViewController
+ : UIViewController <AVCaptureMetadataOutputObjectsDelegate, CHIPDevicePairingDelegate, NFCNDEFReaderSessionDelegate>
@end
diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.m b/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.m
index 04f1d46..4d375ce 100644
--- a/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.m
+++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.m
@@ -293,7 +293,6 @@
dispatch_queue_t callbackQueue = dispatch_queue_create("com.zigbee.chip.qrcodevc.callback", DISPATCH_QUEUE_SERIAL);
self.chipController = [CHIPDeviceController sharedController];
- [self.chipController setDelegate:self queue:callbackQueue];
[self.chipController setPairingDelegate:self queue:callbackQueue];
[self.chipController setPersistentStorageDelegate:_persistentStorage queue:callbackQueue];
@@ -355,21 +354,6 @@
_session = nil;
}
-// MARK: CHIPDeviceControllerDelegate
-- (void)deviceControllerOnConnected
-{
- NSLog(@"Status: Device connected");
-}
-
-- (void)deviceControllerOnError:(nonnull NSError *)error
-{
- NSLog(@"Status: Device Controller error %@", [error description]);
-}
-
-- (void)deviceControllerOnMessage:(nonnull NSData *)message
-{
-}
-
// MARK: CHIPDevicePairingDelegate
- (void)onNetworkCredentialsRequested:(SendNetworkCredentials)handler
{
diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/Temperature Sensor/TemperatureSensorViewController.h b/src/darwin/CHIPTool/CHIPTool/View Controllers/Temperature Sensor/TemperatureSensorViewController.h
index 7e8f090..49c4699 100644
--- a/src/darwin/CHIPTool/CHIPTool/View Controllers/Temperature Sensor/TemperatureSensorViewController.h
+++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/Temperature Sensor/TemperatureSensorViewController.h
@@ -11,7 +11,7 @@
NS_ASSUME_NONNULL_BEGIN
-@interface TemperatureSensorViewController : UIViewController <CHIPDeviceControllerDelegate>
+@interface TemperatureSensorViewController : UIViewController
@end
diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/Temperature Sensor/TemperatureSensorViewController.m b/src/darwin/CHIPTool/CHIPTool/View Controllers/Temperature Sensor/TemperatureSensorViewController.m
index e005814..d8b4125 100644
--- a/src/darwin/CHIPTool/CHIPTool/View Controllers/Temperature Sensor/TemperatureSensorViewController.m
+++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/Temperature Sensor/TemperatureSensorViewController.m
@@ -9,7 +9,6 @@
#import "TemperatureSensorViewController.h"
#import "CHIPUIViewUtils.h"
#import "DefaultsUtils.h"
-#import <CHIP/CHIP.h>
@interface TemperatureSensorViewController ()
@property (nonatomic, strong) UILabel * temperatureLabel;
@@ -18,10 +17,7 @@
@property (nonatomic, strong) UITextField * deltaInFahrenheitTextField;
@property (nonatomic, strong) UIButton * sendReportingSetup;
-@property (nonatomic, strong) CHIPTemperatureMeasurement * chipTempMeasurement;
-@property (readwrite) CHIPDevice * chipDevice;
-@property (readwrite) CHIPDeviceController * chipController;
-
+@property (nonatomic, strong) CHIPTemperatureMeasurement * cluster;
@end
@implementation TemperatureSensorViewController
@@ -36,22 +32,7 @@
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
- // initialize the device controller
- dispatch_queue_t callbackQueue = dispatch_queue_create("com.zigbee.chip.tempsensorvc.callback", DISPATCH_QUEUE_SERIAL);
- self.chipController = [CHIPDeviceController sharedController];
- [self.chipController setDelegate:self queue:callbackQueue];
-
- uint64_t deviceID = CHIPGetNextAvailableDeviceID();
- if (deviceID > 1) {
- // Let's use the last device that was paired
- deviceID--;
- NSError * error;
- self.chipDevice = [self.chipController getPairedDevice:deviceID error:&error];
- self.chipTempMeasurement = [[CHIPTemperatureMeasurement alloc] initWithDevice:self.chipDevice
- endpoint:1
- queue:callbackQueue];
- }
-
+ self.cluster = [[CHIPTemperatureMeasurement alloc] initWithDevice:GetPairedDevice() endpoint:1 queue:dispatch_get_main_queue()];
[self readCurrentTemperature];
}
@@ -183,51 +164,39 @@
- (void)readCurrentTemperature
{
- CHIPDeviceCallback completionHandler = ^(NSError * error) {
- NSLog(@"Status: Read temperature request completed with error %@", [error description]);
- };
-
- [self.chipTempMeasurement readAttributeMeasuredValue:completionHandler];
+ [self.cluster readAttributeMeasuredValue:^(NSError * _Nullable error, NSDictionary * _Nullable values) {
+ if (error != nil)
+ return;
+ NSNumber * value = values[@"value"];
+ [self updateTempInUI:value.shortValue];
+ }];
}
- (void)reportFromUserEnteredSettings
{
- CHIPDeviceCallback onCompletionCallback = ^(NSError * error) {
- NSLog(@"Status: update reportAttributeMeasuredValue completed with error %@", [error description]);
- };
-
- CHIPDeviceCallback onChangeCallback = ^(NSError * error) {
- NSLog(@"Status: Temp value changed with error %@", [error description]);
- };
- int minIntervalSeconds = [_minIntervalInSecondsTextField.text intValue] * 1000;
- int maxIntervalSeconds = [_maxIntervalInSecondsTextField.text intValue] * 1000;
+ int minIntervalSeconds = [_minIntervalInSecondsTextField.text intValue];
+ int maxIntervalSeconds = [_maxIntervalInSecondsTextField.text intValue];
int deltaInFahrenheit = [_deltaInFahrenheitTextField.text intValue];
NSLog(@"Sending temp reporting values: min %@ max %@ value %@", @(minIntervalSeconds), @(maxIntervalSeconds),
@(deltaInFahrenheit));
- [self.chipTempMeasurement reportAttributeMeasuredValue:onCompletionCallback
- onChange:onChangeCallback
- minInterval:minIntervalSeconds
- maxInterval:maxIntervalSeconds
- change:deltaInFahrenheit];
-}
+ [self.cluster
+ configureAttributeMeasuredValue:minIntervalSeconds
+ maxInterval:maxIntervalSeconds
+ change:deltaInFahrenheit
+ completionHandler:^(NSError * error, NSDictionary * values) {
+ if (error == nil)
+ return;
+ NSLog(@"Status: update reportAttributeMeasuredValue completed with error %@", [error description]);
+ }];
-// MARK: CHIPDeviceControllerDelegate
-- (void)deviceControllerOnConnected
-{
- NSLog(@"Status: Device connected");
-}
-
-- (void)deviceControllerOnError:(nonnull NSError *)error
-{
- NSLog(@"Status: Device Controller error %@", [error description]);
-}
-
-- (void)deviceControllerOnMessage:(nonnull NSData *)message
-{
- NSLog(@"Status: Received a message.");
- // TODO: Use callback APIs to show read response
+ [self.cluster reportAttributeMeasuredValue:^(NSError * error, NSDictionary * values) {
+ if (error != nil)
+ return;
+ NSNumber * value = values[@"value"];
+ [self updateTempInUI:value.shortValue];
+ }];
}
@end
diff --git a/src/darwin/Framework/CHIP.xcodeproj/project.pbxproj b/src/darwin/Framework/CHIP.xcodeproj/project.pbxproj
index 7e6b0ce..9c48a0a 100644
--- a/src/darwin/Framework/CHIP.xcodeproj/project.pbxproj
+++ b/src/darwin/Framework/CHIP.xcodeproj/project.pbxproj
@@ -7,17 +7,30 @@
objects = {
/* Begin PBXBuildFile section */
- 1EF8B75425782A9E009AA59C /* CHIPClustersObjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EF8B75325782A9E009AA59C /* CHIPClustersObjc.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EF8B75625782AAC009AA59C /* CHIPClustersObjc.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1EF8B75525782AAC009AA59C /* CHIPClustersObjc.mm */; };
+ 1EC4CE3A25CC263E00D7304F /* reporting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE3825CC263E00D7304F /* reporting.cpp */; };
+ 1EC4CE3B25CC263E00D7304F /* reporting-default-configuration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE3925CC263E00D7304F /* reporting-default-configuration.cpp */; };
+ 1EC4CE3D25CC265200D7304F /* DataModelHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE3C25CC265200D7304F /* DataModelHandler.cpp */; };
+ 1EC4CE4B25CC267700D7304F /* binding-table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE3E25CC267600D7304F /* binding-table.cpp */; };
+ 1EC4CE4C25CC267700D7304F /* ember-print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE3F25CC267600D7304F /* ember-print.cpp */; };
+ 1EC4CE4D25CC267700D7304F /* process-global-message.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4025CC267600D7304F /* process-global-message.cpp */; };
+ 1EC4CE4E25CC267700D7304F /* attribute-size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4125CC267600D7304F /* attribute-size.cpp */; };
+ 1EC4CE4F25CC267700D7304F /* process-cluster-message.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4225CC267600D7304F /* process-cluster-message.cpp */; };
+ 1EC4CE5025CC267700D7304F /* client-api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4325CC267600D7304F /* client-api.cpp */; };
+ 1EC4CE5125CC267700D7304F /* message.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4425CC267600D7304F /* message.cpp */; };
+ 1EC4CE5325CC267700D7304F /* chip-message-send.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4625CC267600D7304F /* chip-message-send.cpp */; };
+ 1EC4CE5425CC267700D7304F /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4725CC267600D7304F /* util.cpp */; };
+ 1EC4CE5525CC267700D7304F /* attribute-table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4825CC267600D7304F /* attribute-table.cpp */; };
+ 1EC4CE5625CC267700D7304F /* af-main-common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4925CC267700D7304F /* af-main-common.cpp */; };
+ 1EC4CE5725CC267700D7304F /* attribute-storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE4A25CC267700D7304F /* attribute-storage.cpp */; };
+ 1EC4CE5D25CC26E900D7304F /* CHIPClustersObjc.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE5925CC26E900D7304F /* CHIPClustersObjc.mm */; };
+ 1EC4CE5E25CC26E900D7304F /* call-command-handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE5A25CC26E900D7304F /* call-command-handler.cpp */; };
+ 1EC4CE5F25CC26E900D7304F /* callback-stub.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE5B25CC26E900D7304F /* callback-stub.cpp */; };
+ 1EC4CE6025CC26E900D7304F /* CHIPClientCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE5C25CC26E900D7304F /* CHIPClientCallbacks.cpp */; };
+ 1EC4CE6225CC271B00D7304F /* af-event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE6125CC271B00D7304F /* af-event.cpp */; };
+ 1EC4CE6425CC276600D7304F /* CHIPClustersObjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EC4CE6325CC276600D7304F /* CHIPClustersObjc.h */; settings = {ATTRIBUTES = (Public, ); }; };
2C222AD0255C620600E446B9 /* CHIPDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C222ACE255C620600E446B9 /* CHIPDevice.h */; settings = {ATTRIBUTES = (Public, ); }; };
2C222AD1255C620600E446B9 /* CHIPDevice.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C222ACF255C620600E446B9 /* CHIPDevice.mm */; };
- 2C222ADB255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C222AD8255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.mm */; };
- 2C222ADC255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C222AD9255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.h */; };
- 2C222ADD255C74D100E446B9 /* CHIPDeviceStatusDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C222ADA255C74D100E446B9 /* CHIPDeviceStatusDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
2C222ADF255C811800E446B9 /* CHIPDevice_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C222ADE255C811800E446B9 /* CHIPDevice_Internal.h */; };
- 2C222AED25634E5300E446B9 /* CHIPDeviceCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C222AEC25634E5300E446B9 /* CHIPDeviceCallback.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 2C222AF025646BB100E446B9 /* CHIPCallbackBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C222AEE25646BB100E446B9 /* CHIPCallbackBridge.mm */; };
- 2C222AF125646BB100E446B9 /* CHIPCallbackBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C222AEF25646BB100E446B9 /* CHIPCallbackBridge.h */; };
2C4DF09E248B2C60009307CB /* libmbedtls.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C4DF09D248B2C60009307CB /* libmbedtls.a */; settings = {ATTRIBUTES = (Required, ); }; };
2C8C8FC0253E0C2100797F05 /* CHIPPersistentStorageDelegateBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C8C8FBD253E0C2100797F05 /* CHIPPersistentStorageDelegateBridge.h */; };
2C8C8FC1253E0C2100797F05 /* CHIPPersistentStorageDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C8C8FBE253E0C2100797F05 /* CHIPPersistentStorageDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -53,17 +66,30 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
- 1EF8B75325782A9E009AA59C /* CHIPClustersObjc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPClustersObjc.h; sourceTree = "<group>"; };
- 1EF8B75525782AAC009AA59C /* CHIPClustersObjc.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CHIPClustersObjc.mm; sourceTree = "<group>"; };
+ 1EC4CE3825CC263E00D7304F /* reporting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = reporting.cpp; path = ../../../app/reporting/reporting.cpp; sourceTree = "<group>"; };
+ 1EC4CE3925CC263E00D7304F /* reporting-default-configuration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "reporting-default-configuration.cpp"; path = "../../../app/reporting/reporting-default-configuration.cpp"; sourceTree = "<group>"; };
+ 1EC4CE3C25CC265200D7304F /* DataModelHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataModelHandler.cpp; path = ../../../app/server/DataModelHandler.cpp; sourceTree = "<group>"; };
+ 1EC4CE3E25CC267600D7304F /* binding-table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "binding-table.cpp"; path = "../../../app/util/binding-table.cpp"; sourceTree = "<group>"; };
+ 1EC4CE3F25CC267600D7304F /* ember-print.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ember-print.cpp"; path = "../../../app/util/ember-print.cpp"; sourceTree = "<group>"; };
+ 1EC4CE4025CC267600D7304F /* process-global-message.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "process-global-message.cpp"; path = "../../../app/util/process-global-message.cpp"; sourceTree = "<group>"; };
+ 1EC4CE4125CC267600D7304F /* attribute-size.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "attribute-size.cpp"; path = "../../../app/util/attribute-size.cpp"; sourceTree = "<group>"; };
+ 1EC4CE4225CC267600D7304F /* process-cluster-message.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "process-cluster-message.cpp"; path = "../../../app/util/process-cluster-message.cpp"; sourceTree = "<group>"; };
+ 1EC4CE4325CC267600D7304F /* client-api.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "client-api.cpp"; path = "../../../app/util/client-api.cpp"; sourceTree = "<group>"; };
+ 1EC4CE4425CC267600D7304F /* message.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = message.cpp; path = ../../../app/util/message.cpp; sourceTree = "<group>"; };
+ 1EC4CE4625CC267600D7304F /* chip-message-send.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "chip-message-send.cpp"; path = "../../../app/util/chip-message-send.cpp"; sourceTree = "<group>"; };
+ 1EC4CE4725CC267600D7304F /* util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = util.cpp; path = ../../../app/util/util.cpp; sourceTree = "<group>"; };
+ 1EC4CE4825CC267600D7304F /* attribute-table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "attribute-table.cpp"; path = "../../../app/util/attribute-table.cpp"; sourceTree = "<group>"; };
+ 1EC4CE4925CC267700D7304F /* af-main-common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "af-main-common.cpp"; path = "../../../app/util/af-main-common.cpp"; sourceTree = "<group>"; };
+ 1EC4CE4A25CC267700D7304F /* attribute-storage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "attribute-storage.cpp"; path = "../../../app/util/attribute-storage.cpp"; sourceTree = "<group>"; };
+ 1EC4CE5925CC26E900D7304F /* CHIPClustersObjc.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CHIPClustersObjc.mm; path = gen/CHIPClustersObjc.mm; sourceTree = "<group>"; };
+ 1EC4CE5A25CC26E900D7304F /* call-command-handler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "call-command-handler.cpp"; path = "gen/call-command-handler.cpp"; sourceTree = "<group>"; };
+ 1EC4CE5B25CC26E900D7304F /* callback-stub.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "callback-stub.cpp"; path = "gen/callback-stub.cpp"; sourceTree = "<group>"; };
+ 1EC4CE5C25CC26E900D7304F /* CHIPClientCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CHIPClientCallbacks.cpp; path = gen/CHIPClientCallbacks.cpp; sourceTree = "<group>"; };
+ 1EC4CE6125CC271B00D7304F /* af-event.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "af-event.cpp"; path = "../../../app/util/af-event.cpp"; sourceTree = "<group>"; };
+ 1EC4CE6325CC276600D7304F /* CHIPClustersObjc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CHIPClustersObjc.h; path = gen/CHIPClustersObjc.h; sourceTree = "<group>"; };
2C222ACE255C620600E446B9 /* CHIPDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPDevice.h; sourceTree = "<group>"; };
2C222ACF255C620600E446B9 /* CHIPDevice.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CHIPDevice.mm; sourceTree = "<group>"; };
- 2C222AD8255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CHIPDeviceStatusDelegateBridge.mm; sourceTree = "<group>"; };
- 2C222AD9255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPDeviceStatusDelegateBridge.h; sourceTree = "<group>"; };
- 2C222ADA255C74D100E446B9 /* CHIPDeviceStatusDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPDeviceStatusDelegate.h; sourceTree = "<group>"; };
2C222ADE255C811800E446B9 /* CHIPDevice_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPDevice_Internal.h; sourceTree = "<group>"; };
- 2C222AEC25634E5300E446B9 /* CHIPDeviceCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPDeviceCallback.h; sourceTree = "<group>"; };
- 2C222AEE25646BB100E446B9 /* CHIPCallbackBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CHIPCallbackBridge.mm; sourceTree = "<group>"; };
- 2C222AEF25646BB100E446B9 /* CHIPCallbackBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPCallbackBridge.h; sourceTree = "<group>"; };
2C4DF09D248B2C60009307CB /* libmbedtls.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmbedtls.a; path = lib/libmbedtls.a; sourceTree = BUILT_PRODUCTS_DIR; };
2C8C8FBD253E0C2100797F05 /* CHIPPersistentStorageDelegateBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPPersistentStorageDelegateBridge.h; sourceTree = "<group>"; };
2C8C8FBE253E0C2100797F05 /* CHIPPersistentStorageDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPPersistentStorageDelegate.h; sourceTree = "<group>"; };
@@ -113,6 +139,42 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 1EC4CE3525CC259700D7304F /* CHIPApp */ = {
+ isa = PBXGroup;
+ children = (
+ 1EC4CE6125CC271B00D7304F /* af-event.cpp */,
+ 1EC4CE4925CC267700D7304F /* af-main-common.cpp */,
+ 1EC4CE4125CC267600D7304F /* attribute-size.cpp */,
+ 1EC4CE4A25CC267700D7304F /* attribute-storage.cpp */,
+ 1EC4CE4825CC267600D7304F /* attribute-table.cpp */,
+ 1EC4CE3E25CC267600D7304F /* binding-table.cpp */,
+ 1EC4CE4625CC267600D7304F /* chip-message-send.cpp */,
+ 1EC4CE4325CC267600D7304F /* client-api.cpp */,
+ 1EC4CE3F25CC267600D7304F /* ember-print.cpp */,
+ 1EC4CE4425CC267600D7304F /* message.cpp */,
+ 1EC4CE4225CC267600D7304F /* process-cluster-message.cpp */,
+ 1EC4CE4025CC267600D7304F /* process-global-message.cpp */,
+ 1EC4CE4725CC267600D7304F /* util.cpp */,
+ 1EC4CE3C25CC265200D7304F /* DataModelHandler.cpp */,
+ 1EC4CE3925CC263E00D7304F /* reporting-default-configuration.cpp */,
+ 1EC4CE3825CC263E00D7304F /* reporting.cpp */,
+ );
+ name = CHIPApp;
+ path = CHIP;
+ sourceTree = SOURCE_ROOT;
+ };
+ 1EC4CE5825CC26AB00D7304F /* CHIPGeneratedFiles */ = {
+ isa = PBXGroup;
+ children = (
+ 1EC4CE6325CC276600D7304F /* CHIPClustersObjc.h */,
+ 1EC4CE5A25CC26E900D7304F /* call-command-handler.cpp */,
+ 1EC4CE5B25CC26E900D7304F /* callback-stub.cpp */,
+ 1EC4CE5C25CC26E900D7304F /* CHIPClientCallbacks.cpp */,
+ 1EC4CE5925CC26E900D7304F /* CHIPClustersObjc.mm */,
+ );
+ name = CHIPGeneratedFiles;
+ sourceTree = "<group>";
+ };
B20252832459E34F00F97062 = {
isa = PBXGroup;
children = (
@@ -136,15 +198,9 @@
B202528F2459E34F00F97062 /* CHIP */ = {
isa = PBXGroup;
children = (
- 1EF8B75525782AAC009AA59C /* CHIPClustersObjc.mm */,
- 1EF8B75325782A9E009AA59C /* CHIPClustersObjc.h */,
- 2C222AEF25646BB100E446B9 /* CHIPCallbackBridge.h */,
- 2C222AEE25646BB100E446B9 /* CHIPCallbackBridge.mm */,
- 2C222AEC25634E5300E446B9 /* CHIPDeviceCallback.h */,
+ 1EC4CE5825CC26AB00D7304F /* CHIPGeneratedFiles */,
+ 1EC4CE3525CC259700D7304F /* CHIPApp */,
2C222ADE255C811800E446B9 /* CHIPDevice_Internal.h */,
- 2C222ADA255C74D100E446B9 /* CHIPDeviceStatusDelegate.h */,
- 2C222AD9255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.h */,
- 2C222AD8255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.mm */,
2C222ACE255C620600E446B9 /* CHIPDevice.h */,
2C222ACF255C620600E446B9 /* CHIPDevice.mm */,
2C8C8FBE253E0C2100797F05 /* CHIPPersistentStorageDelegate.h */,
@@ -201,15 +257,11 @@
991DC0842475F45400C13860 /* CHIPDeviceController.h in Headers */,
B2E0D7B2245B0B5C003C5B48 /* CHIPManualSetupPayloadParser.h in Headers */,
B2E0D7B1245B0B5C003C5B48 /* CHIP.h in Headers */,
- 2C222ADC255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.h in Headers */,
B2E0D7B8245B0B5C003C5B48 /* CHIPSetupPayload.h in Headers */,
- 2C222ADD255C74D100E446B9 /* CHIPDeviceStatusDelegate.h in Headers */,
- 2C222AED25634E5300E446B9 /* CHIPDeviceCallback.h in Headers */,
2C8C8FC1253E0C2100797F05 /* CHIPPersistentStorageDelegate.h in Headers */,
B2E0D7B5245B0B5C003C5B48 /* CHIPQRCodeSetupPayloadParser.h in Headers */,
- 2C222AF125646BB100E446B9 /* CHIPCallbackBridge.h in Headers */,
+ 1EC4CE6425CC276600D7304F /* CHIPClustersObjc.h in Headers */,
2C8C8FC0253E0C2100797F05 /* CHIPPersistentStorageDelegateBridge.h in Headers */,
- 1EF8B75425782A9E009AA59C /* CHIPClustersObjc.h in Headers */,
2C222ADF255C811800E446B9 /* CHIPDevice_Internal.h in Headers */,
991DC08B247704DC00C13860 /* CHIPLogging.h in Headers */,
B2E0D7B4245B0B5C003C5B48 /* CHIPError.h in Headers */,
@@ -337,16 +389,33 @@
buildActionMask = 2147483647;
files = (
2C8C8FC2253E0C2100797F05 /* CHIPPersistentStorageDelegateBridge.mm in Sources */,
+ 1EC4CE5025CC267700D7304F /* client-api.cpp in Sources */,
2CB7163C252E8A7C0026E2BB /* CHIPDevicePairingDelegateBridge.mm in Sources */,
+ 1EC4CE5625CC267700D7304F /* af-main-common.cpp in Sources */,
+ 1EC4CE5425CC267700D7304F /* util.cpp in Sources */,
2C222AD1255C620600E446B9 /* CHIPDevice.mm in Sources */,
+ 1EC4CE4C25CC267700D7304F /* ember-print.cpp in Sources */,
991DC0892475F47D00C13860 /* CHIPDeviceController.mm in Sources */,
- 2C222AF025646BB100E446B9 /* CHIPCallbackBridge.mm in Sources */,
- 1EF8B75625782AAC009AA59C /* CHIPClustersObjc.mm in Sources */,
+ 1EC4CE3A25CC263E00D7304F /* reporting.cpp in Sources */,
+ 1EC4CE5325CC267700D7304F /* chip-message-send.cpp in Sources */,
B2E0D7B7245B0B5C003C5B48 /* CHIPQRCodeSetupPayloadParser.mm in Sources */,
+ 1EC4CE5F25CC26E900D7304F /* callback-stub.cpp in Sources */,
+ 1EC4CE4B25CC267700D7304F /* binding-table.cpp in Sources */,
+ 1EC4CE6225CC271B00D7304F /* af-event.cpp in Sources */,
+ 1EC4CE4E25CC267700D7304F /* attribute-size.cpp in Sources */,
+ 1EC4CE4D25CC267700D7304F /* process-global-message.cpp in Sources */,
+ 1EC4CE5125CC267700D7304F /* message.cpp in Sources */,
+ 1EC4CE5D25CC26E900D7304F /* CHIPClustersObjc.mm in Sources */,
B2E0D7B3245B0B5C003C5B48 /* CHIPError.mm in Sources */,
- 2C222ADB255C74D100E446B9 /* CHIPDeviceStatusDelegateBridge.mm in Sources */,
+ 1EC4CE5E25CC26E900D7304F /* call-command-handler.cpp in Sources */,
+ 1EC4CE3B25CC263E00D7304F /* reporting-default-configuration.cpp in Sources */,
+ 1EC4CE4F25CC267700D7304F /* process-cluster-message.cpp in Sources */,
+ 1EC4CE3D25CC265200D7304F /* DataModelHandler.cpp in Sources */,
+ 1EC4CE5725CC267700D7304F /* attribute-storage.cpp in Sources */,
+ 1EC4CE5525CC267700D7304F /* attribute-table.cpp in Sources */,
B2E0D7B9245B0B5C003C5B48 /* CHIPSetupPayload.mm in Sources */,
B2E0D7B6245B0B5C003C5B48 /* CHIPManualSetupPayloadParser.mm in Sources */,
+ 1EC4CE6025CC26E900D7304F /* CHIPClientCallbacks.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -464,6 +533,9 @@
"$(CHIP_ROOT)/src/app",
"$(CHIP_ROOT)/config/ios",
"$(CHIP_ROOT)/third_party/nlassert/repo/include",
+ "$(CHIP_ROOT)/src/darwin/Framework/CHIP/",
+ "$(CHIP_ROOT)/src/app/util",
+ "$(CHIP_ROOT)/third_party/nlio/repo/include",
);
INFOPLIST_FILE = CHIP/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -590,6 +662,7 @@
"$(CHIP_ROOT)/src/app",
"$(CHIP_ROOT)/config/ios",
"$(CHIP_ROOT)/third_party/nlassert/repo/include",
+ .,
);
INFOPLIST_FILE = CHIP/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
diff --git a/src/darwin/Framework/CHIP/CHIP.h b/src/darwin/Framework/CHIP/CHIP.h
index 3a8126a..25b9e37 100644
--- a/src/darwin/Framework/CHIP/CHIP.h
+++ b/src/darwin/Framework/CHIP/CHIP.h
@@ -18,7 +18,6 @@
// pull together CHIP headers
#import <CHIP/CHIPClustersObjc.h>
#import <CHIP/CHIPDevice.h>
-#import <CHIP/CHIPDeviceCallback.h>
#import <CHIP/CHIPDeviceController.h>
#import <CHIP/CHIPDevicePairingDelegate.h>
#import <CHIP/CHIPError.h>
diff --git a/src/darwin/Framework/CHIP/CHIPCallbackBridge.h b/src/darwin/Framework/CHIP/CHIPCallbackBridge.h
deleted file mode 100644
index 1b1f1a4..0000000
--- a/src/darwin/Framework/CHIP/CHIPCallbackBridge.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- *
- * Copyright (c) 2020 Project CHIP Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "CHIPDeviceCallback.h"
-#import "CHIPError.h"
-
-#include <controller/CHIPDevice.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-class CHIPCallbackBridge : public chip::Callback::Callback<>
-{
-public:
- CHIPCallbackBridge(CHIPDeviceCallback handler, dispatch_queue_t queue);
- ~CHIPCallbackBridge();
-
- static void CallbackFn(void * context);
-
-private:
- CHIPDeviceCallback mHandler;
- dispatch_queue_t mQueue;
-};
-
-NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/CHIPCallbackBridge.mm b/src/darwin/Framework/CHIP/CHIPCallbackBridge.mm
deleted file mode 100644
index f78c697..0000000
--- a/src/darwin/Framework/CHIP/CHIPCallbackBridge.mm
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- *
- * Copyright (c) 2020 Project CHIP Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "CHIPCallbackBridge.h"
-#import "CHIPError.h"
-#import <Foundation/Foundation.h>
-
-CHIPCallbackBridge::CHIPCallbackBridge(CHIPDeviceCallback handler, dispatch_queue_t queue)
- : Callback::Callback<>(CallbackFn, this)
- , mHandler(handler)
- , mQueue(queue)
-{
-}
-
-CHIPCallbackBridge::~CHIPCallbackBridge() {}
-
-void CHIPCallbackBridge::CallbackFn(void * context)
-{
- CHIPCallbackBridge * callback = reinterpret_cast<CHIPCallbackBridge *>(context);
- if (callback && callback->mQueue) {
- dispatch_async(callback->mQueue, ^{
- callback->mHandler([CHIPError errorForCHIPErrorCode:CHIP_NO_ERROR]);
- callback->Cancel();
- delete callback;
- });
- }
-}
diff --git a/src/darwin/Framework/CHIP/CHIPClustersObjc.h b/src/darwin/Framework/CHIP/CHIPClustersObjc.h
deleted file mode 100644
index 75ad6a6..0000000
--- a/src/darwin/Framework/CHIP/CHIPClustersObjc.h
+++ /dev/null
@@ -1,531 +0,0 @@
-/*
- *
- * Copyright (c) 2021 Project CHIP Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// THIS FILE IS GENERATED BY ZAP
-
-#ifndef CHIP_CLUSTERS_H
-#define CHIP_CLUSTERS_H
-
-#import <CHIP/CHIPDeviceCallback.h>
-#import <Foundation/Foundation.h>
-
-@class CHIPDevice;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPBarrierControl : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)barrierControlGoToPercent:(CHIPDeviceCallback)onCompletion percentOpen:(uint8_t)percentOpen;
-- (BOOL)barrierControlStop:(CHIPDeviceCallback)onCompletion;
-
-- (BOOL)readAttributeBarrierMovingState:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeBarrierSafetyStatus:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeBarrierCapabilities:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeBarrierPosition:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPBasic : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)mfgSpecificPing:(CHIPDeviceCallback)onCompletion;
-- (BOOL)resetToFactoryDefaults:(CHIPDeviceCallback)onCompletion;
-
-- (BOOL)readAttributeZclVersion:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePowerSource:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPBinding : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)bind:(CHIPDeviceCallback)onCompletion
- nodeId:(uint64_t)nodeId
- groupId:(uint16_t)groupId
- endpointId:(uint8_t)endpointId
- clusterId:(uint16_t)clusterId;
-- (BOOL)unbind:(CHIPDeviceCallback)onCompletion
- nodeId:(uint64_t)nodeId
- groupId:(uint16_t)groupId
- endpointId:(uint8_t)endpointId
- clusterId:(uint16_t)clusterId;
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPColorControl : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)moveColor:(CHIPDeviceCallback)onCompletion
- rateX:(int16_t)rateX
- rateY:(int16_t)rateY
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)moveColorTemperature:(CHIPDeviceCallback)onCompletion
- moveMode:(uint8_t)moveMode
- rate:(uint16_t)rate
- colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
- colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)moveHue:(CHIPDeviceCallback)onCompletion
- moveMode:(uint8_t)moveMode
- rate:(uint8_t)rate
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)moveSaturation:(CHIPDeviceCallback)onCompletion
- moveMode:(uint8_t)moveMode
- rate:(uint8_t)rate
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)moveToColor:(CHIPDeviceCallback)onCompletion
- colorX:(uint16_t)colorX
- colorY:(uint16_t)colorY
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)moveToColorTemperature:(CHIPDeviceCallback)onCompletion
- colorTemperature:(uint16_t)colorTemperature
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)moveToHue:(CHIPDeviceCallback)onCompletion
- hue:(uint8_t)hue
- direction:(uint8_t)direction
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)moveToHueAndSaturation:(CHIPDeviceCallback)onCompletion
- hue:(uint8_t)hue
- saturation:(uint8_t)saturation
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)moveToSaturation:(CHIPDeviceCallback)onCompletion
- saturation:(uint8_t)saturation
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)stepColor:(CHIPDeviceCallback)onCompletion
- stepX:(int16_t)stepX
- stepY:(int16_t)stepY
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)stepColorTemperature:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint16_t)stepSize
- transitionTime:(uint16_t)transitionTime
- colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
- colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)stepHue:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint8_t)stepSize
- transitionTime:(uint8_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)stepSaturation:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint8_t)stepSize
- transitionTime:(uint8_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride;
-- (BOOL)stopMoveStep:(CHIPDeviceCallback)onCompletion optionsMask:(uint8_t)optionsMask optionsOverride:(uint8_t)optionsOverride;
-
-- (BOOL)readAttributeCurrentHue:(CHIPDeviceCallback)onCompletion;
-- (BOOL)reportAttributeCurrentHue:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint8_t)change;
-- (BOOL)readAttributeCurrentSaturation:(CHIPDeviceCallback)onCompletion;
-- (BOOL)reportAttributeCurrentSaturation:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint8_t)change;
-- (BOOL)readAttributeRemainingTime:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeCurrentX:(CHIPDeviceCallback)onCompletion;
-- (BOOL)reportAttributeCurrentX:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint16_t)change;
-- (BOOL)readAttributeCurrentY:(CHIPDeviceCallback)onCompletion;
-- (BOOL)reportAttributeCurrentY:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint16_t)change;
-- (BOOL)readAttributeDriftCompensation:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeCompensationText:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeColorTemperature:(CHIPDeviceCallback)onCompletion;
-- (BOOL)reportAttributeColorTemperature:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint16_t)change;
-- (BOOL)readAttributeColorMode:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeColorControlOptions:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorControlOptions:(CHIPDeviceCallback)onCompletion value:(uint8_t)value;
-- (BOOL)readAttributeNumberOfPrimaries:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary1X:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary1Y:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary1Intensity:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary2X:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary2Y:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary2Intensity:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary3X:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary3Y:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary3Intensity:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary4X:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary4Y:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary4Intensity:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary5X:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary5Y:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary5Intensity:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary6X:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary6Y:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributePrimary6Intensity:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeWhitePointX:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeWhitePointX:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeWhitePointY:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeWhitePointY:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeColorPointRX:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorPointRX:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeColorPointRY:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorPointRY:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeColorPointRIntensity:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorPointRIntensity:(CHIPDeviceCallback)onCompletion value:(uint8_t)value;
-- (BOOL)readAttributeColorPointGX:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorPointGX:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeColorPointGY:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorPointGY:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeColorPointGIntensity:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorPointGIntensity:(CHIPDeviceCallback)onCompletion value:(uint8_t)value;
-- (BOOL)readAttributeColorPointBX:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorPointBX:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeColorPointBY:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorPointBY:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeColorPointBIntensity:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeColorPointBIntensity:(CHIPDeviceCallback)onCompletion value:(uint8_t)value;
-- (BOOL)readAttributeEnhancedCurrentHue:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeEnhancedColorMode:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeColorLoopActive:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeColorLoopDirection:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeColorLoopTime:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeColorCapabilities:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeColorTempPhysicalMin:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeColorTempPhysicalMax:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeCoupleColorTempToLevelMinMireds:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeStartUpColorTemperatureMireds:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeStartUpColorTemperatureMireds:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPDoorLock : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)clearAllPins:(CHIPDeviceCallback)onCompletion;
-- (BOOL)clearAllRfids:(CHIPDeviceCallback)onCompletion;
-- (BOOL)clearHolidaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId;
-- (BOOL)clearPin:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId;
-- (BOOL)clearRfid:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId;
-- (BOOL)clearWeekdaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId userId:(uint16_t)userId;
-- (BOOL)clearYeardaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId userId:(uint16_t)userId;
-- (BOOL)getHolidaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId;
-- (BOOL)getLogRecord:(CHIPDeviceCallback)onCompletion logIndex:(uint16_t)logIndex;
-- (BOOL)getPin:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId;
-- (BOOL)getRfid:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId;
-- (BOOL)getUserType:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId;
-- (BOOL)getWeekdaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId userId:(uint16_t)userId;
-- (BOOL)getYeardaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId userId:(uint16_t)userId;
-- (BOOL)lockDoor:(CHIPDeviceCallback)onCompletion pin:(char *)pin;
-- (BOOL)setHolidaySchedule:(CHIPDeviceCallback)onCompletion
- scheduleId:(uint8_t)scheduleId
- localStartTime:(uint32_t)localStartTime
- localEndTime:(uint32_t)localEndTime
- operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday;
-- (BOOL)setPin:(CHIPDeviceCallback)onCompletion
- userId:(uint16_t)userId
- userStatus:(uint8_t)userStatus
- userType:(uint8_t)userType
- pin:(char *)pin;
-- (BOOL)setRfid:(CHIPDeviceCallback)onCompletion
- userId:(uint16_t)userId
- userStatus:(uint8_t)userStatus
- userType:(uint8_t)userType
- id:(char *)id;
-- (BOOL)setUserType:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId userType:(uint8_t)userType;
-- (BOOL)setWeekdaySchedule:(CHIPDeviceCallback)onCompletion
- scheduleId:(uint8_t)scheduleId
- userId:(uint16_t)userId
- daysMask:(uint8_t)daysMask
- startHour:(uint8_t)startHour
- startMinute:(uint8_t)startMinute
- endHour:(uint8_t)endHour
- endMinute:(uint8_t)endMinute;
-- (BOOL)setYeardaySchedule:(CHIPDeviceCallback)onCompletion
- scheduleId:(uint8_t)scheduleId
- userId:(uint16_t)userId
- localStartTime:(uint32_t)localStartTime
- localEndTime:(uint32_t)localEndTime;
-- (BOOL)unlockDoor:(CHIPDeviceCallback)onCompletion pin:(char *)pin;
-- (BOOL)unlockWithTimeout:(CHIPDeviceCallback)onCompletion timeoutInSeconds:(uint16_t)timeoutInSeconds pin:(char *)pin;
-
-- (BOOL)readAttributeLockState:(CHIPDeviceCallback)onCompletion;
-- (BOOL)reportAttributeLockState:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval;
-- (BOOL)readAttributeLockType:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeActuatorEnabled:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPGroups : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)addGroup:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId groupName:(char *)groupName;
-- (BOOL)addGroupIfIdentifying:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId groupName:(char *)groupName;
-- (BOOL)getGroupMembership:(CHIPDeviceCallback)onCompletion groupCount:(uint8_t)groupCount groupList:(uint16_t)groupList;
-- (BOOL)removeAllGroups:(CHIPDeviceCallback)onCompletion;
-- (BOOL)removeGroup:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId;
-- (BOOL)viewGroup:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId;
-
-- (BOOL)readAttributeNameSupport:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPIasZone : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-
-- (BOOL)readAttributeZoneState:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeZoneType:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeZoneStatus:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeIasCieAddress:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeIasCieAddress:(CHIPDeviceCallback)onCompletion value:(uint64_t)value;
-- (BOOL)readAttributeZoneId:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPIdentify : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)identify:(CHIPDeviceCallback)onCompletion identifyTime:(uint16_t)identifyTime;
-- (BOOL)identifyQuery:(CHIPDeviceCallback)onCompletion;
-
-- (BOOL)readAttributeIdentifyTime:(CHIPDeviceCallback)onCompletion;
-- (BOOL)writeAttributeIdentifyTime:(CHIPDeviceCallback)onCompletion value:(uint16_t)value;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPLevelControl : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)move:(CHIPDeviceCallback)onCompletion
- moveMode:(uint8_t)moveMode
- rate:(uint8_t)rate
- optionMask:(uint8_t)optionMask
- optionOverride:(uint8_t)optionOverride;
-- (BOOL)moveToLevel:(CHIPDeviceCallback)onCompletion
- level:(uint8_t)level
- transitionTime:(uint16_t)transitionTime
- optionMask:(uint8_t)optionMask
- optionOverride:(uint8_t)optionOverride;
-- (BOOL)moveToLevelWithOnOff:(CHIPDeviceCallback)onCompletion level:(uint8_t)level transitionTime:(uint16_t)transitionTime;
-- (BOOL)moveWithOnOff:(CHIPDeviceCallback)onCompletion moveMode:(uint8_t)moveMode rate:(uint8_t)rate;
-- (BOOL)step:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint8_t)stepSize
- transitionTime:(uint16_t)transitionTime
- optionMask:(uint8_t)optionMask
- optionOverride:(uint8_t)optionOverride;
-- (BOOL)stepWithOnOff:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint8_t)stepSize
- transitionTime:(uint16_t)transitionTime;
-- (BOOL)stop:(CHIPDeviceCallback)onCompletion optionMask:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride;
-- (BOOL)stopWithOnOff:(CHIPDeviceCallback)onCompletion;
-
-- (BOOL)readAttributeCurrentLevel:(CHIPDeviceCallback)onCompletion;
-- (BOOL)reportAttributeCurrentLevel:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint8_t)change;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPOnOff : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)off:(CHIPDeviceCallback)onCompletion;
-- (BOOL)on:(CHIPDeviceCallback)onCompletion;
-- (BOOL)toggle:(CHIPDeviceCallback)onCompletion;
-
-- (BOOL)readAttributeOnOff:(CHIPDeviceCallback)onCompletion;
-- (BOOL)reportAttributeOnOff:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPScenes : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-- (BOOL)addScene:(CHIPDeviceCallback)onCompletion
- groupId:(uint16_t)groupId
- sceneId:(uint8_t)sceneId
- transitionTime:(uint16_t)transitionTime
- sceneName:(char *)sceneName
- clusterId:(uint16_t)clusterId
- length:(uint8_t)length
- value:(uint8_t)value;
-- (BOOL)getSceneMembership:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId;
-- (BOOL)recallScene:(CHIPDeviceCallback)onCompletion
- groupId:(uint16_t)groupId
- sceneId:(uint8_t)sceneId
- transitionTime:(uint16_t)transitionTime;
-- (BOOL)removeAllScenes:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId;
-- (BOOL)removeScene:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId sceneId:(uint8_t)sceneId;
-- (BOOL)storeScene:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId sceneId:(uint8_t)sceneId;
-- (BOOL)viewScene:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId sceneId:(uint8_t)sceneId;
-
-- (BOOL)readAttributeSceneCount:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeCurrentScene:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeCurrentGroup:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeSceneValid:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeNameSupport:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CHIPTemperatureMeasurement : NSObject
-
-- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
-
-- (BOOL)readAttributeMeasuredValue:(CHIPDeviceCallback)onCompletion;
-- (BOOL)reportAttributeMeasuredValue:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(int16_t)change;
-- (BOOL)readAttributeMinMeasuredValue:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeMaxMeasuredValue:(CHIPDeviceCallback)onCompletion;
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion;
-
-- (instancetype)init NS_UNAVAILABLE;
-+ (instancetype)new NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-#endif /* CHIP_CLUSTERS_H */
diff --git a/src/darwin/Framework/CHIP/CHIPClustersObjc.mm b/src/darwin/Framework/CHIP/CHIPClustersObjc.mm
deleted file mode 100644
index bfd56f0..0000000
--- a/src/darwin/Framework/CHIP/CHIPClustersObjc.mm
+++ /dev/null
@@ -1,3380 +0,0 @@
-/*
- *
- * Copyright (c) 2021 Project CHIP Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// THIS FILE IS GENERATED BY ZAP
-
-#import <Foundation/Foundation.h>
-
-#import "CHIPCallbackBridge.h"
-#import "CHIPClustersObjc.h"
-#import "CHIPDevice.h"
-#import "CHIPDevice_Internal.h"
-
-#include <controller/CHIPClusters.h>
-
-@interface CHIPBarrierControl ()
-
-@property (readonly) chip::Controller::BarrierControlCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPBarrierControl
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)barrierControlGoToPercent:(CHIPDeviceCallback)onCompletion percentOpen:(uint8_t)percentOpen
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.BarrierControlGoToPercent(callback, percentOpen);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)barrierControlStop:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.BarrierControlStop(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeBarrierMovingState:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierMovingState(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeBarrierSafetyStatus:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierSafetyStatus(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeBarrierCapabilities:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierCapabilities(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeBarrierPosition:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierPosition(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPBasic ()
-
-@property (readonly) chip::Controller::BasicCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPBasic
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)mfgSpecificPing:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MfgSpecificPing(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)resetToFactoryDefaults:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ResetToFactoryDefaults(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeZclVersion:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeZclVersion(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePowerSource:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePowerSource(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPBinding ()
-
-@property (readonly) chip::Controller::BindingCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPBinding
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)bind:(CHIPDeviceCallback)onCompletion
- nodeId:(chip::NodeId)nodeId
- groupId:(chip::GroupId)groupId
- endpointId:(chip::EndpointId)endpointId
- clusterId:(chip::ClusterId)clusterId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.Bind(callback, nodeId, groupId, endpointId, clusterId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)unbind:(CHIPDeviceCallback)onCompletion
- nodeId:(chip::NodeId)nodeId
- groupId:(chip::GroupId)groupId
- endpointId:(chip::EndpointId)endpointId
- clusterId:(chip::ClusterId)clusterId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.Unbind(callback, nodeId, groupId, endpointId, clusterId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPColorControl ()
-
-@property (readonly) chip::Controller::ColorControlCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPColorControl
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)moveColor:(CHIPDeviceCallback)onCompletion
- rateX:(int16_t)rateX
- rateY:(int16_t)rateY
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveColor(callback, rateX, rateY, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveColorTemperature:(CHIPDeviceCallback)onCompletion
- moveMode:(uint8_t)moveMode
- rate:(uint16_t)rate
- colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
- colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveColorTemperature(
- callback, moveMode, rate, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveHue:(CHIPDeviceCallback)onCompletion
- moveMode:(uint8_t)moveMode
- rate:(uint8_t)rate
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveHue(callback, moveMode, rate, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveSaturation:(CHIPDeviceCallback)onCompletion
- moveMode:(uint8_t)moveMode
- rate:(uint8_t)rate
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveSaturation(callback, moveMode, rate, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveToColor:(CHIPDeviceCallback)onCompletion
- colorX:(uint16_t)colorX
- colorY:(uint16_t)colorY
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveToColor(callback, colorX, colorY, transitionTime, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveToColorTemperature:(CHIPDeviceCallback)onCompletion
- colorTemperature:(uint16_t)colorTemperature
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err
- = self.cppCluster.MoveToColorTemperature(callback, colorTemperature, transitionTime, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveToHue:(CHIPDeviceCallback)onCompletion
- hue:(uint8_t)hue
- direction:(uint8_t)direction
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveToHue(callback, hue, direction, transitionTime, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveToHueAndSaturation:(CHIPDeviceCallback)onCompletion
- hue:(uint8_t)hue
- saturation:(uint8_t)saturation
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err
- = self.cppCluster.MoveToHueAndSaturation(callback, hue, saturation, transitionTime, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveToSaturation:(CHIPDeviceCallback)onCompletion
- saturation:(uint8_t)saturation
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveToSaturation(callback, saturation, transitionTime, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)stepColor:(CHIPDeviceCallback)onCompletion
- stepX:(int16_t)stepX
- stepY:(int16_t)stepY
- transitionTime:(uint16_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.StepColor(callback, stepX, stepY, transitionTime, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)stepColorTemperature:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint16_t)stepSize
- transitionTime:(uint16_t)transitionTime
- colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
- colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.StepColorTemperature(callback, stepMode, stepSize, transitionTime, colorTemperatureMinimum,
- colorTemperatureMaximum, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)stepHue:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint8_t)stepSize
- transitionTime:(uint8_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.StepHue(callback, stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)stepSaturation:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint8_t)stepSize
- transitionTime:(uint8_t)transitionTime
- optionsMask:(uint8_t)optionsMask
- optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.StepSaturation(callback, stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)stopMoveStep:(CHIPDeviceCallback)onCompletion optionsMask:(uint8_t)optionsMask optionsOverride:(uint8_t)optionsOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.StopMoveStep(callback, optionsMask, optionsOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeCurrentHue:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentHue(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)reportAttributeCurrentHue:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint8_t)change
-{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
- return NO;
- }
-
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
- return NO;
- }
-
- CHIP_ERROR err
- = self.cppCluster.ReportAttributeCurrentHue(completionCallback, changeCallback, minInterval, maxInterval, change);
- if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeCurrentSaturation:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentSaturation(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)reportAttributeCurrentSaturation:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint8_t)change
-{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
- return NO;
- }
-
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
- return NO;
- }
-
- CHIP_ERROR err
- = self.cppCluster.ReportAttributeCurrentSaturation(completionCallback, changeCallback, minInterval, maxInterval, change);
- if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeRemainingTime:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeRemainingTime(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeCurrentX:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentX(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)reportAttributeCurrentX:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint16_t)change
-{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
- return NO;
- }
-
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentX(completionCallback, changeCallback, minInterval, maxInterval, change);
- if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeCurrentY:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentY(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)reportAttributeCurrentY:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint16_t)change
-{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
- return NO;
- }
-
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentY(completionCallback, changeCallback, minInterval, maxInterval, change);
- if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeDriftCompensation:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeDriftCompensation(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeCompensationText:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeCompensationText(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorTemperature:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorTemperature(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)reportAttributeColorTemperature:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint16_t)change
-{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
- return NO;
- }
-
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
- return NO;
- }
-
- CHIP_ERROR err
- = self.cppCluster.ReportAttributeColorTemperature(completionCallback, changeCallback, minInterval, maxInterval, change);
- if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorMode:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorMode(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorControlOptions:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorControlOptions(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorControlOptions:(CHIPDeviceCallback)onCompletion value:(uint8_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorControlOptions(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeNumberOfPrimaries:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPrimaries(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary1X:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1X(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary1Y:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Y(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary1Intensity:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Intensity(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary2X:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2X(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary2Y:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Y(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary2Intensity:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Intensity(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary3X:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3X(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary3Y:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Y(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary3Intensity:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Intensity(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary4X:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4X(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary4Y:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Y(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary4Intensity:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Intensity(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary5X:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5X(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary5Y:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Y(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary5Intensity:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Intensity(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary6X:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6X(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary6Y:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Y(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributePrimary6Intensity:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Intensity(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeWhitePointX:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointX(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeWhitePointX:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointX(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeWhitePointY:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointY(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeWhitePointY:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointY(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorPointRX:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRX(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorPointRX:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRX(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorPointRY:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRY(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorPointRY:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRY(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorPointRIntensity:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRIntensity(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorPointRIntensity:(CHIPDeviceCallback)onCompletion value:(uint8_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRIntensity(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorPointGX:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGX(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorPointGX:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGX(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorPointGY:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGY(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorPointGY:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGY(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorPointGIntensity:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGIntensity(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorPointGIntensity:(CHIPDeviceCallback)onCompletion value:(uint8_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGIntensity(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorPointBX:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBX(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorPointBX:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBX(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorPointBY:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBY(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorPointBY:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBY(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorPointBIntensity:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBIntensity(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeColorPointBIntensity:(CHIPDeviceCallback)onCompletion value:(uint8_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBIntensity(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeEnhancedCurrentHue:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedCurrentHue(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeEnhancedColorMode:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedColorMode(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorLoopActive:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopActive(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorLoopDirection:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopDirection(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorLoopTime:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopTime(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorCapabilities:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorCapabilities(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorTempPhysicalMin:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMin(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeColorTempPhysicalMax:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMax(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeCoupleColorTempToLevelMinMireds:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeCoupleColorTempToLevelMinMireds(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeStartUpColorTemperatureMireds:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpColorTemperatureMireds(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeStartUpColorTemperatureMireds:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpColorTemperatureMireds(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPDoorLock ()
-
-@property (readonly) chip::Controller::DoorLockCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPDoorLock
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)clearAllPins:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ClearAllPins(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)clearAllRfids:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ClearAllRfids(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)clearHolidaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ClearHolidaySchedule(callback, scheduleId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)clearPin:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ClearPin(callback, userId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)clearRfid:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ClearRfid(callback, userId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)clearWeekdaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId userId:(uint16_t)userId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ClearWeekdaySchedule(callback, scheduleId, userId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)clearYeardaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId userId:(uint16_t)userId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ClearYeardaySchedule(callback, scheduleId, userId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)getHolidaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.GetHolidaySchedule(callback, scheduleId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)getLogRecord:(CHIPDeviceCallback)onCompletion logIndex:(uint16_t)logIndex
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.GetLogRecord(callback, logIndex);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)getPin:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.GetPin(callback, userId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)getRfid:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.GetRfid(callback, userId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)getUserType:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.GetUserType(callback, userId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)getWeekdaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId userId:(uint16_t)userId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.GetWeekdaySchedule(callback, scheduleId, userId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)getYeardaySchedule:(CHIPDeviceCallback)onCompletion scheduleId:(uint8_t)scheduleId userId:(uint16_t)userId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.GetYeardaySchedule(callback, scheduleId, userId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)lockDoor:(CHIPDeviceCallback)onCompletion pin:(char *)pin
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.LockDoor(callback, pin);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)setHolidaySchedule:(CHIPDeviceCallback)onCompletion
- scheduleId:(uint8_t)scheduleId
- localStartTime:(uint32_t)localStartTime
- localEndTime:(uint32_t)localEndTime
- operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err
- = self.cppCluster.SetHolidaySchedule(callback, scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)setPin:(CHIPDeviceCallback)onCompletion
- userId:(uint16_t)userId
- userStatus:(uint8_t)userStatus
- userType:(uint8_t)userType
- pin:(char *)pin
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.SetPin(callback, userId, userStatus, userType, pin);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)setRfid:(CHIPDeviceCallback)onCompletion
- userId:(uint16_t)userId
- userStatus:(uint8_t)userStatus
- userType:(uint8_t)userType
- id:(char *)id
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.SetRfid(callback, userId, userStatus, userType, id);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)setUserType:(CHIPDeviceCallback)onCompletion userId:(uint16_t)userId userType:(uint8_t)userType
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.SetUserType(callback, userId, userType);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)setWeekdaySchedule:(CHIPDeviceCallback)onCompletion
- scheduleId:(uint8_t)scheduleId
- userId:(uint16_t)userId
- daysMask:(uint8_t)daysMask
- startHour:(uint8_t)startHour
- startMinute:(uint8_t)startMinute
- endHour:(uint8_t)endHour
- endMinute:(uint8_t)endMinute
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err
- = self.cppCluster.SetWeekdaySchedule(callback, scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)setYeardaySchedule:(CHIPDeviceCallback)onCompletion
- scheduleId:(uint8_t)scheduleId
- userId:(uint16_t)userId
- localStartTime:(uint32_t)localStartTime
- localEndTime:(uint32_t)localEndTime
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.SetYeardaySchedule(callback, scheduleId, userId, localStartTime, localEndTime);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)unlockDoor:(CHIPDeviceCallback)onCompletion pin:(char *)pin
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.UnlockDoor(callback, pin);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)unlockWithTimeout:(CHIPDeviceCallback)onCompletion timeoutInSeconds:(uint16_t)timeoutInSeconds pin:(char *)pin
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.UnlockWithTimeout(callback, timeoutInSeconds, pin);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeLockState:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeLockState(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)reportAttributeLockState:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
-{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
- return NO;
- }
-
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReportAttributeLockState(completionCallback, changeCallback, minInterval, maxInterval);
- if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeLockType:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeLockType(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeActuatorEnabled:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeActuatorEnabled(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPGroups ()
-
-@property (readonly) chip::Controller::GroupsCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPGroups
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)addGroup:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId groupName:(char *)groupName
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.AddGroup(callback, groupId, groupName);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)addGroupIfIdentifying:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId groupName:(char *)groupName
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.AddGroupIfIdentifying(callback, groupId, groupName);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)getGroupMembership:(CHIPDeviceCallback)onCompletion groupCount:(uint8_t)groupCount groupList:(uint16_t)groupList
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.GetGroupMembership(callback, groupCount, groupList);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)removeAllGroups:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.RemoveAllGroups(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)removeGroup:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.RemoveGroup(callback, groupId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)viewGroup:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ViewGroup(callback, groupId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeNameSupport:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPIasZone ()
-
-@property (readonly) chip::Controller::IasZoneCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPIasZone
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)readAttributeZoneState:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeZoneState(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeZoneType:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeZoneType(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeZoneStatus:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeZoneStatus(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeIasCieAddress:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeIasCieAddress(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeIasCieAddress:(CHIPDeviceCallback)onCompletion value:(uint64_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeIasCieAddress(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeZoneId:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeZoneId(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPIdentify ()
-
-@property (readonly) chip::Controller::IdentifyCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPIdentify
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)identify:(CHIPDeviceCallback)onCompletion identifyTime:(uint16_t)identifyTime
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.Identify(callback, identifyTime);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)identifyQuery:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.IdentifyQuery(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeIdentifyTime:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeIdentifyTime(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)writeAttributeIdentifyTime:(CHIPDeviceCallback)onCompletion value:(uint16_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.WriteAttributeIdentifyTime(callback, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPLevelControl ()
-
-@property (readonly) chip::Controller::LevelControlCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPLevelControl
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)move:(CHIPDeviceCallback)onCompletion
- moveMode:(uint8_t)moveMode
- rate:(uint8_t)rate
- optionMask:(uint8_t)optionMask
- optionOverride:(uint8_t)optionOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.Move(callback, moveMode, rate, optionMask, optionOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveToLevel:(CHIPDeviceCallback)onCompletion
- level:(uint8_t)level
- transitionTime:(uint16_t)transitionTime
- optionMask:(uint8_t)optionMask
- optionOverride:(uint8_t)optionOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveToLevel(callback, level, transitionTime, optionMask, optionOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveToLevelWithOnOff:(CHIPDeviceCallback)onCompletion level:(uint8_t)level transitionTime:(uint16_t)transitionTime
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(callback, level, transitionTime);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)moveWithOnOff:(CHIPDeviceCallback)onCompletion moveMode:(uint8_t)moveMode rate:(uint8_t)rate
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.MoveWithOnOff(callback, moveMode, rate);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)step:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint8_t)stepSize
- transitionTime:(uint16_t)transitionTime
- optionMask:(uint8_t)optionMask
- optionOverride:(uint8_t)optionOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.Step(callback, stepMode, stepSize, transitionTime, optionMask, optionOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)stepWithOnOff:(CHIPDeviceCallback)onCompletion
- stepMode:(uint8_t)stepMode
- stepSize:(uint8_t)stepSize
- transitionTime:(uint16_t)transitionTime
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.StepWithOnOff(callback, stepMode, stepSize, transitionTime);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)stop:(CHIPDeviceCallback)onCompletion optionMask:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.Stop(callback, optionMask, optionOverride);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)stopWithOnOff:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.StopWithOnOff(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeCurrentLevel:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)reportAttributeCurrentLevel:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(uint8_t)change
-{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
- return NO;
- }
-
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
- return NO;
- }
-
- CHIP_ERROR err
- = self.cppCluster.ReportAttributeCurrentLevel(completionCallback, changeCallback, minInterval, maxInterval, change);
- if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPOnOff ()
-
-@property (readonly) chip::Controller::OnOffCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPOnOff
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)off:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.Off(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)on:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.On(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)toggle:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.Toggle(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeOnOff:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)reportAttributeOnOff:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
-{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
- return NO;
- }
-
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(completionCallback, changeCallback, minInterval, maxInterval);
- if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPScenes ()
-
-@property (readonly) chip::Controller::ScenesCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPScenes
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)addScene:(CHIPDeviceCallback)onCompletion
- groupId:(uint16_t)groupId
- sceneId:(uint8_t)sceneId
- transitionTime:(uint16_t)transitionTime
- sceneName:(char *)sceneName
- clusterId:(chip::ClusterId)clusterId
- length:(uint8_t)length
- value:(uint8_t)value
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.AddScene(callback, groupId, sceneId, transitionTime, sceneName, clusterId, length, value);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)getSceneMembership:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.GetSceneMembership(callback, groupId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)recallScene:(CHIPDeviceCallback)onCompletion
- groupId:(uint16_t)groupId
- sceneId:(uint8_t)sceneId
- transitionTime:(uint16_t)transitionTime
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.RecallScene(callback, groupId, sceneId, transitionTime);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)removeAllScenes:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.RemoveAllScenes(callback, groupId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)removeScene:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId sceneId:(uint8_t)sceneId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.RemoveScene(callback, groupId, sceneId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)storeScene:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId sceneId:(uint8_t)sceneId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.StoreScene(callback, groupId, sceneId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-- (BOOL)viewScene:(CHIPDeviceCallback)onCompletion groupId:(uint16_t)groupId sceneId:(uint8_t)sceneId
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ViewScene(callback, groupId, sceneId);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeSceneCount:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeSceneCount(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeCurrentScene:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentScene(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeCurrentGroup:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentGroup(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeSceneValid:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeSceneValid(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeNameSupport:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
-
-@interface CHIPTemperatureMeasurement ()
-
-@property (readonly) chip::Controller::TemperatureMeasurementCluster cppCluster;
-@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
-@end
-
-@implementation CHIPTemperatureMeasurement
-
-- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(chip::EndpointId)endpoint queue:(dispatch_queue_t)queue
-{
- CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
-
- if (err != CHIP_NO_ERROR) {
- return nil;
- }
-
- if (self = [super init]) {
- _callbackQueue = queue;
- }
- return self;
-}
-
-- (BOOL)readAttributeMeasuredValue:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeMeasuredValue(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)reportAttributeMeasuredValue:(CHIPDeviceCallback)onCompletion
- onChange:(CHIPDeviceCallback)onChange
- minInterval:(uint16_t)minInterval
- maxInterval:(uint16_t)maxInterval
- change:(int16_t)change
-{
- CHIPCallbackBridge * completionCallback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!completionCallback) {
- return NO;
- }
-
- CHIPCallbackBridge * changeCallback = new CHIPCallbackBridge(onChange, _callbackQueue);
- if (!changeCallback) {
- return NO;
- }
-
- CHIP_ERROR err
- = self.cppCluster.ReportAttributeMeasuredValue(completionCallback, changeCallback, minInterval, maxInterval, change);
- if (err != CHIP_NO_ERROR) {
- completionCallback->Cancel();
- changeCallback->Cancel();
- delete completionCallback;
- delete changeCallback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeMinMeasuredValue:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeMinMeasuredValue(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeMaxMeasuredValue:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeMaxMeasuredValue(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-- (BOOL)readAttributeClusterRevision:(CHIPDeviceCallback)onCompletion
-{
- CHIPCallbackBridge * callback = new CHIPCallbackBridge(onCompletion, _callbackQueue);
- if (!callback) {
- return NO;
- }
-
- CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(callback);
- if (err != CHIP_NO_ERROR) {
- callback->Cancel();
- delete callback;
- return NO;
- }
- return YES;
-}
-
-@end
diff --git a/src/darwin/Framework/CHIP/CHIPDevice.h b/src/darwin/Framework/CHIP/CHIPDevice.h
index e959fbd..7cf77a8 100644
--- a/src/darwin/Framework/CHIP/CHIPDevice.h
+++ b/src/darwin/Framework/CHIP/CHIPDevice.h
@@ -20,28 +20,12 @@
#import <Foundation/Foundation.h>
-#import <CHIP/CHIPError.h>
-
NS_ASSUME_NONNULL_BEGIN
@interface CHIPDevice : NSObject
-- (BOOL)sendMessage:(NSData *)message error:(NSError * __autoreleasing *)error;
-- (BOOL)sendIdentifyCommandWithDuration:(NSTimeInterval)duration;
-- (BOOL)disconnect:(NSError * __autoreleasing *)error;
- (BOOL)isActive;
-/**
- * Test whether a given message is likely to be a data model command.
- */
-+ (BOOL)isDataModelCommand:(NSData * _Nonnull)message;
-
-/**
- * Given a data model command, convert it to some sort of human-readable
- * string that describes what it is, as far as we can tell.
- */
-+ (NSString *)commandToString:(NSData * _Nonnull)command;
-
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)new NS_UNAVAILABLE;
diff --git a/src/darwin/Framework/CHIP/CHIPDevice.mm b/src/darwin/Framework/CHIP/CHIPDevice.mm
index fc72110..8c6b1be 100644
--- a/src/darwin/Framework/CHIP/CHIPDevice.mm
+++ b/src/darwin/Framework/CHIP/CHIPDevice.mm
@@ -15,17 +15,7 @@
* limitations under the License.
*/
-#import <Foundation/Foundation.h>
-
-#include <app/chip-zcl-zpro-codec.h>
-#include <controller/CHIPDevice.h>
-
-#import "CHIPDevice.h"
#import "CHIPDevice_Internal.h"
-#import "CHIPError.h"
-#import "CHIPLogging.h"
-
-#include <system/SystemPacketBuffer.h>
@interface CHIPDevice ()
@@ -57,70 +47,6 @@
return _cppDevice;
}
-- (BOOL)sendMessage:(NSData *)message error:(NSError * __autoreleasing *)error
-{
- CHIP_ERROR err = CHIP_NO_ERROR;
-
- [self.lock lock];
- size_t messageLen = [message length];
- const void * messageChars = [message bytes];
-
- chip::System::PacketBufferHandle buffer = chip::System::PacketBufferHandle::NewWithData(messageChars, messageLen);
- if (buffer.IsNull()) {
- err = CHIP_ERROR_NO_MEMORY;
- } else {
- err = self.cppDevice->SendMessage(std::move(buffer));
- }
- [self.lock unlock];
-
- if (err != CHIP_NO_ERROR) {
- CHIP_LOG_ERROR("Error(%d): %@, send failed", err, [CHIPError errorForCHIPErrorCode:err]);
- if (error) {
- *error = [CHIPError errorForCHIPErrorCode:err];
- }
- return NO;
- }
-
- return YES;
-}
-
-- (BOOL)sendCHIPCommand:(chip::System::PacketBufferHandle (^)())encodeCommandBlock
-{
- CHIP_ERROR err = CHIP_NO_ERROR;
-
- [self.lock lock];
- chip::System::PacketBufferHandle buffer = encodeCommandBlock();
- if (buffer.IsNull()) {
- err = CHIP_ERROR_NO_MEMORY;
- } else {
- err = self.cppDevice->SendMessage(std::move(buffer));
- }
- [self.lock unlock];
- if (err != CHIP_NO_ERROR) {
- CHIP_LOG_ERROR("Error(%d): %@, send failed", err, [CHIPError errorForCHIPErrorCode:err]);
- return NO;
- }
-
- return YES;
-}
-
-- (BOOL)sendIdentifyCommandWithDuration:(NSTimeInterval)duration
-{
- if (duration > UINT16_MAX) {
- duration = UINT16_MAX;
- }
-
- return [self sendCHIPCommand:^chip::System::PacketBufferHandle() {
- // Hardcode endpoint to 1 for now
- return encodeIdentifyClusterIdentifyCommand(1, duration);
- }];
-}
-
-- (BOOL)disconnect:(NSError * __autoreleasing *)error
-{
- return YES;
-}
-
- (BOOL)isActive
{
bool isActive = false;
@@ -131,73 +57,4 @@
return isActive ? YES : NO;
}
-
-+ (BOOL)isDataModelCommand:(NSData * _Nonnull)message
-{
- if (message.length == 0) {
- return NO;
- }
-
- UInt8 * bytes = (UInt8 *) message.bytes;
- return bytes[0] < 0x04 ? YES : NO;
-}
-
-+ (NSString *)commandToString:(NSData * _Nonnull)response
-{
- if ([CHIPDevice isDataModelCommand:response] == NO) {
- return @"Response is not a CHIP command";
- }
-
- uint8_t * bytes = (uint8_t *) response.bytes;
-
- EmberApsFrame frame;
- if (extractApsFrame(bytes, (uint32_t) response.length, &frame) == 0) {
- return @"Response is not an APS frame";
- }
-
- uint8_t * message;
- uint16_t messageLen = extractMessage(bytes, response.length, &message);
- if (messageLen != 5) {
- // Not a Default Response command for sure.
- return @"Unexpected response length";
- }
-
- if (message[0] != 8) {
- // Unexpected control byte
- return [NSString stringWithFormat:@"Control byte value '0x%02x' is not expected", message[0]];
- }
-
- // message[1] is the sequence counter; just ignore it for now.
-
- if (message[2] != 0x0b) {
- // Not a Default Response command id
- return [NSString stringWithFormat:@"Command id '0x%02x' is not the Default Response command id (0x0b)", message[2]];
- }
-
- if (frame.clusterId != 0x06) {
- // Not On/Off cluster
- return [NSString stringWithFormat:@"Cluster id '0x%02x' is not the on/off cluster id (0x06)", frame.clusterId];
- }
-
- NSString * command;
- if (message[3] == 0) {
- command = @"off";
- } else if (message[3] == 1) {
- command = @"on";
- } else if (message[3] == 2) {
- command = @"toggle";
- } else {
- return [NSString stringWithFormat:@"Command '0x%02x' is unknown", message[3]];
- }
-
- NSString * status;
- if (message[4] == 0) {
- status = @"succeeded";
- } else {
- status = @"failed";
- }
-
- return [NSString stringWithFormat:@"Sending '%@' command %@", command, status];
-}
-
@end
diff --git a/src/darwin/Framework/CHIP/CHIPDeviceController.h b/src/darwin/Framework/CHIP/CHIPDeviceController.h
index 04a2ee5..9dba5f5 100644
--- a/src/darwin/Framework/CHIP/CHIPDeviceController.h
+++ b/src/darwin/Framework/CHIP/CHIPDeviceController.h
@@ -18,29 +18,16 @@
#ifndef CHIP_DEVICE_CONTROLLER_H
#define CHIP_DEVICE_CONTROLLER_H
-#import <CHIP/CHIPDeviceStatusDelegate.h>
#import <Foundation/Foundation.h>
@class CHIPDevice;
NS_ASSUME_NONNULL_BEGIN
-typedef void (^ControllerOnConnectedBlock)(void);
-typedef void (^ControllerOnMessageBlock)(NSData * message);
-typedef void (^ControllerOnErrorBlock)(NSError * error);
-
-@protocol CHIPDeviceControllerDelegate;
@protocol CHIPDevicePairingDelegate;
@protocol CHIPPersistentStorageDelegate;
-@interface AddressInfo : NSObject
-
-@property (readonly, copy) NSString * ip;
-- (instancetype)initWithIP:(NSString *)ip;
-
-@end
-
-@interface CHIPDeviceController : NSObject <CHIPDeviceStatusDelegate>
+@interface CHIPDeviceController : NSObject
- (BOOL)pairDevice:(uint64_t)deviceID
discriminator:(uint16_t)discriminator
@@ -51,8 +38,6 @@
- (CHIPDevice *)getPairedDevice:(uint64_t)deviceID error:(NSError * __autoreleasing *)error;
-- (BOOL)disconnect:(NSError * __autoreleasing *)error;
-
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)new NS_UNAVAILABLE;
@@ -62,15 +47,6 @@
+ (CHIPDeviceController *)sharedController;
/**
- * Set the Delegate for the Device Controller as well as the Queue on which the Delegate callbacks will be triggered
- *
- * @param[in] delegate The delegate the Device Controller should use
- *
- * @param[in] queue The queue on which the Device Controller will deliver callbacks
- */
-- (void)setDelegate:(id<CHIPDeviceControllerDelegate>)delegate queue:(dispatch_queue_t)queue;
-
-/**
* Set the Delegate for the Device Pairing as well as the Queue on which the Delegate callbacks will be triggered
*
* @param[in] delegate The delegate the pairing process should use
@@ -90,35 +66,6 @@
@end
-/**
- * The protocol definition for the CHIPDeviceControllerDelegate
- *
- * All delegate methods will be called on the supplied Delegate Queue.
- */
-@protocol CHIPDeviceControllerDelegate <NSObject>
-
-/**
- * Notify the delegate when a connection request succeeds
- *
- */
-- (void)deviceControllerOnConnected;
-
-/**
- * Notify the delegate that a message was received
- *
- * @param[in] message The received message
- */
-- (void)deviceControllerOnMessage:(NSData *)message;
-
-/**
- * Notify the Delegate that an error occurred
- *
- * @param[in] error The error that occurred
- */
-- (void)deviceControllerOnError:(NSError *)error;
-
-@end
-
NS_ASSUME_NONNULL_END
#endif /* CHIP_DEVICE_CONTROLLER_H */
diff --git a/src/darwin/Framework/CHIP/CHIPDeviceController.mm b/src/darwin/Framework/CHIP/CHIPDeviceController.mm
index ae41cae..8ebafde 100644
--- a/src/darwin/Framework/CHIP/CHIPDeviceController.mm
+++ b/src/darwin/Framework/CHIP/CHIPDeviceController.mm
@@ -14,37 +14,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-#import <Foundation/Foundation.h>
-
-#include <app/chip-zcl-zpro-codec.h>
-
#import "CHIPDeviceController.h"
+
#import "CHIPDevicePairingDelegateBridge.h"
-#import "CHIPDeviceStatusDelegateBridge.h"
#import "CHIPDevice_Internal.h"
#import "CHIPError.h"
#import "CHIPLogging.h"
#import "CHIPPersistentStorageDelegateBridge.h"
#include <controller/CHIPDeviceController.h>
-#include <inet/IPAddress.h>
#include <support/CHIPMem.h>
-#include <system/SystemPacketBuffer.h>
static const char * const CHIP_SELECT_QUEUE = "com.zigbee.chip.select";
constexpr chip::NodeId kLocalDeviceId = chip::kTestControllerNodeId;
-@implementation AddressInfo
-- (instancetype)initWithIP:(NSString *)ip
-{
- if (self = [super init]) {
- _ip = ip;
- }
- return self;
-}
-@end
+static NSString * const kErrorMemoryInit = @"Init Memory failure";
+static NSString * const kErrorCommissionerCreate = @"Init failure while creating a commissioner";
+static NSString * const kErrorCommissionerInit = @"Init failure while initializing a commissioner";
+static NSString * const kErrorPairingInit = @"Init failure while creating a pairing delegate";
+static NSString * const kErrorPersistentStorageInit = @"Init failure while creating a persistent storage delegate";
+static NSString * const kErrorNetworkDispatchQueueInit = @"Init failure while initializing a dispatch queue for the network events";
+static NSString * const kErrorPairDevice = @"Failure while pairing the device";
+static NSString * const kErrorUnpairDevice = @"Failure while unpairing the device";
+static NSString * const kErrorStopPairing = @"Failure while trying to stop the pairing process";
+static NSString * const kErrorGetPairedDevice = @"Failure while trying to retrieve a paired device";
@interface CHIPDeviceController ()
@@ -53,19 +47,9 @@
// queue used to call select on the system and inet layer fds., remove this with NW Framework.
// primarily used to not block the work queue
@property (atomic, readonly) dispatch_queue_t chipSelectQueue;
-/**
- * The Controller delegate.
- * Note: Getter is not thread safe.
- */
-@property (readonly, weak, nonatomic) id<CHIPDeviceControllerDelegate> delegate;
-/**
- * The delegate queue where delegate callbacks will run
- */
-@property (readonly, nonatomic) dispatch_queue_t delegateQueue;
-@property (readonly) chip::Controller::DeviceCommissioner * cppController;
+@property (readonly) chip::Controller::DeviceCommissioner * cppCommissioner;
@property (readonly) CHIPDevicePairingDelegateBridge * pairingDelegateBridge;
-@property (readonly) CHIPDeviceStatusDelegateBridge * deviceStatusDelegateBridge;
@property (readonly) CHIPPersistentStorageDelegateBridge * persistentStorageDelegateBridge;
@end
@@ -86,184 +70,97 @@
- (instancetype)init
{
if (self = [super init]) {
+ CHIP_ERROR errorCode = CHIP_NO_ERROR;
_lock = [[NSRecursiveLock alloc] init];
- _chipSelectQueue = dispatch_queue_create(CHIP_SELECT_QUEUE, DISPATCH_QUEUE_SERIAL);
- if (!_chipSelectQueue) {
+ errorCode = chip::Platform::MemoryInit();
+ if ([self checkForInitError:(CHIP_NO_ERROR == errorCode) logMsg:kErrorMemoryInit]) {
return nil;
}
- if (CHIP_NO_ERROR != chip::Platform::MemoryInit()) {
- CHIP_LOG_ERROR("Error: Failed in memory init");
- return nil;
- }
-
- _deviceStatusDelegateBridge = new CHIPDeviceStatusDelegateBridge();
- if (!_deviceStatusDelegateBridge) {
- CHIP_LOG_ERROR("Error: couldn't create device status delegate bridge");
- return nil;
- }
- dispatch_queue_t callbackQueue = dispatch_queue_create("com.zigbee.chip.controller.callback", DISPATCH_QUEUE_SERIAL);
- _deviceStatusDelegateBridge->setDelegate(self, callbackQueue);
-
- _cppController = new chip::Controller::DeviceCommissioner();
- if (!_cppController) {
- CHIP_LOG_ERROR("Error: couldn't create c++ controller");
+ _cppCommissioner = new chip::Controller::DeviceCommissioner();
+ if ([self checkForInitError:(_cppCommissioner) logMsg:kErrorCommissionerCreate]) {
return nil;
}
_pairingDelegateBridge = new CHIPDevicePairingDelegateBridge();
- if (!_pairingDelegateBridge) {
- CHIP_LOG_ERROR("Error: couldn't create pairing delegate");
- delete _cppController;
- _cppController = NULL;
+ if ([self checkForInitError:(_pairingDelegateBridge) logMsg:kErrorPairingInit]) {
return nil;
}
_persistentStorageDelegateBridge = new CHIPPersistentStorageDelegateBridge();
- if (!_persistentStorageDelegateBridge) {
- CHIP_LOG_ERROR("Error: couldn't create persistent storage delegate");
- delete _cppController;
- _cppController = NULL;
- delete _pairingDelegateBridge;
- _pairingDelegateBridge = NULL;
+ if ([self checkForInitError:(_persistentStorageDelegateBridge) logMsg:kErrorPersistentStorageInit]) {
return nil;
}
- if (CHIP_NO_ERROR != _cppController->Init(kLocalDeviceId, _persistentStorageDelegateBridge, _pairingDelegateBridge)) {
- CHIP_LOG_ERROR("Error: couldn't initialize c++ controller");
- delete _cppController;
- _cppController = NULL;
- delete _pairingDelegateBridge;
- _pairingDelegateBridge = NULL;
- delete _persistentStorageDelegateBridge;
- _persistentStorageDelegateBridge = NULL;
+ errorCode = _cppCommissioner->Init(kLocalDeviceId, _persistentStorageDelegateBridge, _pairingDelegateBridge);
+ if ([self checkForInitError:(CHIP_NO_ERROR == errorCode) logMsg:kErrorCommissionerInit]) {
+ return nil;
+ }
+
+ _chipSelectQueue = dispatch_queue_create(CHIP_SELECT_QUEUE, DISPATCH_QUEUE_SERIAL);
+ if ([self checkForInitError:(_chipSelectQueue) logMsg:kErrorNetworkDispatchQueueInit]) {
return nil;
}
// Start the IO pump
dispatch_async(_chipSelectQueue, ^() {
- self.cppController->ServiceEvents();
+ self.cppCommissioner->ServiceEvents();
});
}
return self;
}
-// MARK: CHIPDeviceStatusDelegate
-- (void)onMessageReceived:(NSData *)message
-{
- CHIP_LOG_METHOD_ENTRY();
-
- id<CHIPDeviceControllerDelegate> strongDelegate = [self delegate];
- if (strongDelegate && [self delegateQueue]) {
- dispatch_async(self.delegateQueue, ^{
- [strongDelegate deviceControllerOnMessage:message];
- });
- }
-}
-
- (BOOL)pairDevice:(uint64_t)deviceID
discriminator:(uint16_t)discriminator
setupPINCode:(uint32_t)setupPINCode
error:(NSError * __autoreleasing *)error
{
- CHIP_ERROR err = CHIP_NO_ERROR;
-
[self.lock lock];
-
chip::RendezvousParameters params = chip::RendezvousParameters().SetSetupPINCode(setupPINCode).SetDiscriminator(discriminator);
- err = self.cppController->PairDevice(deviceID, params);
+ CHIP_ERROR err = self.cppCommissioner->PairDevice(deviceID, params);
[self.lock unlock];
- if (err != CHIP_NO_ERROR) {
- CHIP_LOG_ERROR("Error(%d): %@, failed in pairing the device", err, [CHIPError errorForCHIPErrorCode:err]);
- if (error) {
- *error = [CHIPError errorForCHIPErrorCode:err];
- }
- return NO;
- }
-
- return YES;
+ return ![self checkForError:err logMsg:kErrorPairDevice error:error];
}
- (BOOL)unpairDevice:(uint64_t)deviceID error:(NSError * __autoreleasing *)error
{
- CHIP_ERROR err = CHIP_NO_ERROR;
+ CHIP_ERROR errorCode = CHIP_NO_ERROR;
[self.lock lock];
-
- err = self.cppController->UnpairDevice(deviceID);
+ errorCode = self.cppCommissioner->UnpairDevice(deviceID);
[self.lock unlock];
- if (err != CHIP_NO_ERROR) {
- CHIP_LOG_ERROR("Error(%d): %@, failed in unpairing the device", err, [CHIPError errorForCHIPErrorCode:err]);
- if (error) {
- *error = [CHIPError errorForCHIPErrorCode:err];
- }
- return NO;
- }
-
- return YES;
+ return ![self checkForError:errorCode logMsg:kErrorUnpairDevice error:error];
}
- (BOOL)stopDevicePairing:(uint64_t)deviceID error:(NSError * __autoreleasing *)error
{
- CHIP_ERROR err = CHIP_NO_ERROR;
+ CHIP_ERROR errorCode = CHIP_NO_ERROR;
[self.lock lock];
- err = self.cppController->StopPairing(deviceID);
+ errorCode = self.cppCommissioner->StopPairing(deviceID);
[self.lock unlock];
- if (err != CHIP_NO_ERROR) {
- CHIP_LOG_ERROR("Error(%d): %@, failed in stopping the pairing process", err, [CHIPError errorForCHIPErrorCode:err]);
- if (error) {
- *error = [CHIPError errorForCHIPErrorCode:err];
- }
- return NO;
- }
-
- return YES;
+ return ![self checkForError:errorCode logMsg:kErrorStopPairing error:error];
}
- (CHIPDevice *)getPairedDevice:(uint64_t)deviceID error:(NSError * __autoreleasing *)error
{
- CHIP_ERROR err = CHIP_NO_ERROR;
- chip::Controller::Device * cppDevice = nil;
+ CHIP_ERROR errorCode = CHIP_NO_ERROR;
+ chip::Controller::Device * device = nil;
[self.lock lock];
- err = self.cppController->GetDevice(deviceID, &cppDevice);
+ errorCode = self.cppCommissioner->GetDevice(deviceID, &device);
[self.lock unlock];
- if (err != CHIP_NO_ERROR || !cppDevice) {
- CHIP_LOG_ERROR("Error(%d): %@, failed in getting device instance", err, [CHIPError errorForCHIPErrorCode:err]);
- if (error) {
- *error = [CHIPError errorForCHIPErrorCode:err];
- }
+ if ([self checkForError:errorCode logMsg:kErrorGetPairedDevice error:error]) {
return nil;
}
- cppDevice->SetDelegate(_deviceStatusDelegateBridge);
-
- return [[CHIPDevice alloc] initWithDevice:cppDevice];
-}
-
-- (BOOL)disconnect:(NSError * __autoreleasing *)error
-{
- return YES;
-}
-
-- (void)setDelegate:(id<CHIPDeviceControllerDelegate>)delegate queue:(dispatch_queue_t)queue
-{
- [self.lock lock];
- if (delegate && queue) {
- self->_delegate = delegate;
- self->_delegateQueue = queue;
- } else {
- self->_delegate = nil;
- self->_delegateQueue = NULL;
- }
- [self.lock unlock];
+ return [[CHIPDevice alloc] initWithDevice:device];
}
- (void)setPairingDelegate:(id<CHIPDevicePairingDelegate>)delegate queue:(dispatch_queue_t)queue
@@ -280,4 +177,44 @@
[self.lock unlock];
}
+- (BOOL)checkForInitError:(BOOL)condition logMsg:(NSString *)logMsg
+{
+ if (condition) {
+ return NO;
+ }
+
+ CHIP_LOG_ERROR("Error: %@", logMsg);
+
+ if (_cppCommissioner) {
+ delete _cppCommissioner;
+ _cppCommissioner = NULL;
+ }
+
+ if (_pairingDelegateBridge) {
+ delete _pairingDelegateBridge;
+ _pairingDelegateBridge = NULL;
+ }
+
+ if (_persistentStorageDelegateBridge) {
+ delete _persistentStorageDelegateBridge;
+ _persistentStorageDelegateBridge = NULL;
+ }
+
+ return YES;
+}
+
+- (BOOL)checkForError:(CHIP_ERROR)errorCode logMsg:(NSString *)logMsg error:(NSError * __autoreleasing *)error
+{
+ if (CHIP_NO_ERROR == errorCode) {
+ return NO;
+ }
+
+ CHIP_LOG_ERROR("Error(%d): %@, %@", errorCode, [CHIPError errorForCHIPErrorCode:errorCode], logMsg);
+ if (error) {
+ *error = [CHIPError errorForCHIPErrorCode:errorCode];
+ }
+
+ return YES;
+}
+
@end
diff --git a/src/darwin/Framework/CHIP/CHIPDevicePairingDelegateBridge.h b/src/darwin/Framework/CHIP/CHIPDevicePairingDelegateBridge.h
index 884c17b..aebf818 100644
--- a/src/darwin/Framework/CHIP/CHIPDevicePairingDelegateBridge.h
+++ b/src/darwin/Framework/CHIP/CHIPDevicePairingDelegateBridge.h
@@ -16,7 +16,6 @@
*/
#import "CHIPDevicePairingDelegate.h"
-#import <Foundation/Foundation.h>
#include <controller/CHIPDeviceController.h>
diff --git a/src/darwin/Framework/CHIP/CHIPDevicePairingDelegateBridge.mm b/src/darwin/Framework/CHIP/CHIPDevicePairingDelegateBridge.mm
index c44c889..6a3d85b 100644
--- a/src/darwin/Framework/CHIP/CHIPDevicePairingDelegateBridge.mm
+++ b/src/darwin/Framework/CHIP/CHIPDevicePairingDelegateBridge.mm
@@ -17,7 +17,6 @@
#import "CHIPDevicePairingDelegateBridge.h"
#import "CHIPError.h"
-#import <Foundation/Foundation.h>
CHIPDevicePairingDelegateBridge::CHIPDevicePairingDelegateBridge(void)
: mDelegate(nil)
diff --git a/src/darwin/Framework/CHIP/CHIPDeviceStatusDelegate.h b/src/darwin/Framework/CHIP/CHIPDeviceStatusDelegate.h
deleted file mode 100644
index efa618b..0000000
--- a/src/darwin/Framework/CHIP/CHIPDeviceStatusDelegate.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- *
- * Copyright (c) 2020 Project CHIP Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * The protocol definition for the CHIPDevicePairingDelegate
- *
- * All delegate methods will be called on the supplied Delegate Queue.
- */
-@protocol CHIPDeviceStatusDelegate <NSObject>
-@required
-/**
- * Notify the delegate when a message is received from the device
- *
- */
-- (void)onMessageReceived:(NSData *)message;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/CHIPDeviceStatusDelegateBridge.h b/src/darwin/Framework/CHIP/CHIPDeviceStatusDelegateBridge.h
deleted file mode 100644
index c15cc93..0000000
--- a/src/darwin/Framework/CHIP/CHIPDeviceStatusDelegateBridge.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- *
- * Copyright (c) 2020 Project CHIP Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "CHIPDeviceStatusDelegate.h"
-#import <Foundation/Foundation.h>
-
-#include <controller/CHIPDevice.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-class CHIPDeviceStatusDelegateBridge : public chip::Controller::DeviceStatusDelegate
-{
-public:
- CHIPDeviceStatusDelegateBridge();
- ~CHIPDeviceStatusDelegateBridge();
-
- void setDelegate(id<CHIPDeviceStatusDelegate> delegate, dispatch_queue_t queue);
-
- void OnMessage(chip::System::PacketBufferHandle message) override;
-
- void OnStatusChange() override;
-
-private:
- id<CHIPDeviceStatusDelegate> mDelegate;
- dispatch_queue_t mQueue;
-};
-
-NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/CHIPDeviceStatusDelegateBridge.mm b/src/darwin/Framework/CHIP/CHIPDeviceStatusDelegateBridge.mm
deleted file mode 100644
index fb020fb..0000000
--- a/src/darwin/Framework/CHIP/CHIPDeviceStatusDelegateBridge.mm
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- *
- * Copyright (c) 2020 Project CHIP Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "CHIPDeviceStatusDelegateBridge.h"
-#import <Foundation/Foundation.h>
-
-CHIPDeviceStatusDelegateBridge::CHIPDeviceStatusDelegateBridge(void)
- : mDelegate(nil)
-{
-}
-
-CHIPDeviceStatusDelegateBridge::~CHIPDeviceStatusDelegateBridge() {}
-
-void CHIPDeviceStatusDelegateBridge::setDelegate(id<CHIPDeviceStatusDelegate> delegate, dispatch_queue_t queue)
-{
- if (delegate && queue) {
- mDelegate = delegate;
- mQueue = queue;
- } else {
- mDelegate = nil;
- mQueue = nil;
- }
-}
-
-void CHIPDeviceStatusDelegateBridge::OnMessage(chip::System::PacketBufferHandle message)
-{
- NSLog(@"DeviceStatusDelegate received message from the device");
-
- size_t data_len = message->DataLength();
- // convert to NSData
- NSMutableData * dataBuffer = [[NSMutableData alloc] initWithBytes:message->Start() length:data_len];
- message.FreeHead();
-
- while (!message.IsNull()) {
- data_len = message->DataLength();
- [dataBuffer appendBytes:message->Start() length:data_len];
- message.FreeHead();
- }
-
- id<CHIPDeviceStatusDelegate> strongDelegate = mDelegate;
- if (strongDelegate && mQueue) {
- dispatch_async(mQueue, ^{
- [strongDelegate onMessageReceived:dataBuffer];
- });
- }
-}
-
-void CHIPDeviceStatusDelegateBridge::OnStatusChange() { NSLog(@"CHIPDeviceStatusDelegateBridge device status changed"); }
diff --git a/src/darwin/Framework/CHIP/CHIPPersistentStorageDelegateBridge.h b/src/darwin/Framework/CHIP/CHIPPersistentStorageDelegateBridge.h
index 3468ecf..ff2fec0a 100644
--- a/src/darwin/Framework/CHIP/CHIPPersistentStorageDelegateBridge.h
+++ b/src/darwin/Framework/CHIP/CHIPPersistentStorageDelegateBridge.h
@@ -16,8 +16,8 @@
*/
#import "CHIPPersistentStorageDelegate.h"
-#import <Foundation/Foundation.h>
+#import "CHIPError.h"
#include <controller/CHIPPersistentStorageDelegate.h>
NS_ASSUME_NONNULL_BEGIN
diff --git a/src/darwin/Framework/CHIP/CHIPPersistentStorageDelegateBridge.mm b/src/darwin/Framework/CHIP/CHIPPersistentStorageDelegateBridge.mm
index 294cc53..51ec2fa 100644
--- a/src/darwin/Framework/CHIP/CHIPPersistentStorageDelegateBridge.mm
+++ b/src/darwin/Framework/CHIP/CHIPPersistentStorageDelegateBridge.mm
@@ -16,8 +16,6 @@
*/
#import "CHIPPersistentStorageDelegateBridge.h"
-#import "CHIPError.h"
-#import <Foundation/Foundation.h>
CHIPPersistentStorageDelegateBridge::CHIPPersistentStorageDelegateBridge(void)
: mDelegate(nil)
diff --git a/src/darwin/Framework/CHIP/chip-tool.zap b/src/darwin/Framework/CHIP/chip-tool.zap
new file mode 100644
index 0000000..55f4d7e
--- /dev/null
+++ b/src/darwin/Framework/CHIP/chip-tool.zap
@@ -0,0 +1,3087 @@
+{
+ "writeTime": "Wed Feb 03 2021 16:25:50 GMT+0100 (Central European Standard Time)",
+ "featureLevel": 6,
+ "creator": "zap",
+ "keyValuePairs": [
+ {
+ "key": "commandDiscovery",
+ "value": "1"
+ },
+ {
+ "key": "defaultResponsePolicy",
+ "value": "always"
+ },
+ {
+ "key": "manufacturerCodes",
+ "value": "0x1002"
+ }
+ ],
+ "package": [
+ {
+ "pathRelativity": "relativeToZap",
+ "path": "../../../src/app/zap-templates/zcl/zcl.json",
+ "version": "ZCL Test Data",
+ "type": "zcl-properties"
+ },
+ {
+ "pathRelativity": "relativeToZap",
+ "path": "../../../src/app/zap-templates/app-templates.json",
+ "version": "chip-v1",
+ "type": "gen-templates-json"
+ }
+ ],
+ "endpointTypes": [
+ {
+ "name": "Anonymous Endpoint Type",
+ "deviceTypeName": "CHIP-All-Clusters-Server",
+ "deviceTypeCode": 0,
+ "deviceTypeProfileId": 259,
+ "clusters": [
+ {
+ "name": "Basic",
+ "code": 0,
+ "mfgCode": null,
+ "define": "BASIC_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "ResetToFactoryDefaults",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MfgSpecificPing",
+ "code": 0,
+ "mfgCode": "0x1002",
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Basic",
+ "code": 0,
+ "mfgCode": null,
+ "define": "BASIC_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "ZCL version",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x08",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "power source",
+ "code": 7,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Identify",
+ "code": 3,
+ "mfgCode": null,
+ "define": "IDENTIFY_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "Identify",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "IdentifyQuery",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Identify",
+ "code": 3,
+ "mfgCode": null,
+ "define": "IDENTIFY_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "identify time",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ],
+ "commands": [
+ {
+ "name": "IdentifyQueryResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ]
+ },
+ {
+ "name": "Groups",
+ "code": 4,
+ "mfgCode": null,
+ "define": "GROUPS_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "AddGroup",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ViewGroup",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetGroupMembership",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveGroup",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveAllGroups",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "AddGroupIfIdentifying",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Groups",
+ "code": 4,
+ "mfgCode": null,
+ "define": "GROUPS_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "AddGroupResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ViewGroupResponse",
+ "code": 1,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetGroupMembershipResponse",
+ "code": 2,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveGroupResponse",
+ "code": 3,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "name support",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Scenes",
+ "code": 5,
+ "mfgCode": null,
+ "define": "SCENES_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "AddScene",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ViewScene",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveScene",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveAllScenes",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StoreScene",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RecallScene",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetSceneMembership",
+ "code": 6,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Scenes",
+ "code": 5,
+ "mfgCode": null,
+ "define": "SCENES_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "AddSceneResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ViewSceneResponse",
+ "code": 1,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveSceneResponse",
+ "code": 2,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "RemoveAllScenesResponse",
+ "code": 3,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StoreSceneResponse",
+ "code": 4,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetSceneMembershipResponse",
+ "code": 6,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "scene count",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current scene",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current group",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "scene valid",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "name support",
+ "code": 4,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "On/off",
+ "code": 6,
+ "mfgCode": null,
+ "define": "ON_OFF_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "Off",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "On",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Toggle",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "On/off",
+ "code": 6,
+ "mfgCode": null,
+ "define": "ON_OFF_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "on/off",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Level Control",
+ "code": 8,
+ "mfgCode": null,
+ "define": "LEVEL_CONTROL_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "MoveToLevel",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Move",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Step",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Stop",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToLevelWithOnOff",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveWithOnOff",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepWithOnOff",
+ "code": 6,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StopWithOnOff",
+ "code": 7,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Level Control",
+ "code": 8,
+ "mfgCode": null,
+ "define": "LEVEL_CONTROL_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current level",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Door Lock",
+ "code": 257,
+ "mfgCode": null,
+ "define": "DOOR_LOCK_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "LockDoor",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "UnlockDoor",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "UnlockWithTimeout",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetLogRecord",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetPin",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetPin",
+ "code": 6,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearPin",
+ "code": 7,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearAllPins",
+ "code": 8,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetWeekdaySchedule",
+ "code": 11,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetWeekdaySchedule",
+ "code": 12,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearWeekdaySchedule",
+ "code": 13,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetYeardaySchedule",
+ "code": 14,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetYeardaySchedule",
+ "code": 15,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearYeardaySchedule",
+ "code": 16,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetHolidaySchedule",
+ "code": 17,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetHolidaySchedule",
+ "code": 18,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearHolidaySchedule",
+ "code": 19,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetUserType",
+ "code": 20,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetUserType",
+ "code": 21,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetRfid",
+ "code": 22,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetRfid",
+ "code": 23,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearRfid",
+ "code": 24,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearAllRfids",
+ "code": 25,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Door Lock",
+ "code": 257,
+ "mfgCode": null,
+ "define": "DOOR_LOCK_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "LockDoorResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "UnlockDoorResponse",
+ "code": 1,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "UnlockWithTimeoutResponse",
+ "code": 3,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetLogRecordResponse",
+ "code": 4,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetPinResponse",
+ "code": 5,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetPinResponse",
+ "code": 6,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearPinResponse",
+ "code": 7,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearAllPinsResponse",
+ "code": 8,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetUserStatusResponse",
+ "code": 9,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 0,
+ "outgoing": 0
+ },
+ {
+ "name": "GetUserStatusResponse",
+ "code": 10,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 0,
+ "outgoing": 0
+ },
+ {
+ "name": "SetWeekdayScheduleResponse",
+ "code": 11,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetWeekdayScheduleResponse",
+ "code": 12,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearWeekdayScheduleResponse",
+ "code": 13,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetYeardayScheduleResponse",
+ "code": 14,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetYeardayScheduleResponse",
+ "code": 15,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearYeardayScheduleResponse",
+ "code": 16,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetHolidayScheduleResponse",
+ "code": 17,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetHolidayScheduleResponse",
+ "code": 18,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearHolidayScheduleResponse",
+ "code": 19,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetUserTypeResponse",
+ "code": 20,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetUserTypeResponse",
+ "code": 21,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "SetRfidResponse",
+ "code": 22,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "GetRfidResponse",
+ "code": 23,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearRfidResponse",
+ "code": 24,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ClearAllRfidsResponse",
+ "code": 25,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "lock state",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "lock type",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "actuator enabled",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "door state",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable logging",
+ "code": 32,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "language",
+ "code": 33,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "led settings",
+ "code": 34,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "auto relock time",
+ "code": 35,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "sound volume",
+ "code": 36,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "operating mode",
+ "code": 37,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "default configuration register",
+ "code": 39,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable local programming",
+ "code": 40,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x01",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable one touch locking",
+ "code": 41,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable inside status led",
+ "code": 42,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enable privacy mode button",
+ "code": 43,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "wrong code entry limit",
+ "code": 48,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "user code temporary disable time",
+ "code": 49,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "send pin over the air",
+ "code": 50,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "require pin for rf operation",
+ "code": 51,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "zigbee security level",
+ "code": 52,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "alarm mask",
+ "code": 64,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "keypad operation event mask",
+ "code": 65,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "RF operation event mask",
+ "code": 66,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "manual operation event mask",
+ "code": 67,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "rfid operation event mask",
+ "code": 68,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "keypad programming event mask",
+ "code": 69,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "rf programming event mask",
+ "code": 70,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "rfid programming event mask",
+ "code": 71,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Barrier Control",
+ "code": 259,
+ "mfgCode": null,
+ "define": "BARRIER_CONTROL_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "BarrierControlGoToPercent",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "BarrierControlStop",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Barrier Control",
+ "code": 259,
+ "mfgCode": null,
+ "define": "BARRIER_CONTROL_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "barrier moving state",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "barrier safety status",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "barrier capabilities",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "barrier position",
+ "code": 10,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Color Control",
+ "code": 768,
+ "mfgCode": null,
+ "define": "COLOR_CONTROL_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "MoveToHue",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveHue",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepHue",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToSaturation",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveSaturation",
+ "code": 4,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepSaturation",
+ "code": 5,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToHueAndSaturation",
+ "code": 6,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToColor",
+ "code": 7,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveColor",
+ "code": 8,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepColor",
+ "code": 9,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveToColorTemperature",
+ "code": 10,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StopMoveStep",
+ "code": 71,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "MoveColorTemperature",
+ "code": 75,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "StepColorTemperature",
+ "code": 76,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Color Control",
+ "code": 768,
+ "mfgCode": null,
+ "define": "COLOR_CONTROL_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current hue",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current saturation",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "remaining time",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current x",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x616B",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "current y",
+ "code": 4,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x607D",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "drift compensation",
+ "code": 5,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "compensation text",
+ "code": 6,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color temperature",
+ "code": 7,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00FA",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color mode",
+ "code": 8,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x01",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color control options",
+ "code": 15,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "number of primaries",
+ "code": 16,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 1 x",
+ "code": 17,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 1 y",
+ "code": 18,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 1 intensity",
+ "code": 19,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 2 x",
+ "code": 21,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 2 y",
+ "code": 22,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 2 intensity",
+ "code": 23,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 3 x",
+ "code": 25,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 3 y",
+ "code": 26,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 3 intensity",
+ "code": 27,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 4 x",
+ "code": 32,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 4 y",
+ "code": 33,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 4 intensity",
+ "code": 34,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 5 x",
+ "code": 36,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 5 y",
+ "code": 37,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 5 intensity",
+ "code": 38,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 6 x",
+ "code": 40,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 6 y",
+ "code": 41,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "primary 6 intensity",
+ "code": 42,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "white point x",
+ "code": 48,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "white point y",
+ "code": 49,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point r x",
+ "code": 50,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point r y",
+ "code": 51,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point r intensity",
+ "code": 52,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point g x",
+ "code": 54,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point g y",
+ "code": 55,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point g intensity",
+ "code": 56,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point b x",
+ "code": 58,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point b y",
+ "code": 59,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color point b intensity",
+ "code": 60,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "couple color temp to level min-mireds",
+ "code": 16397,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "start up color temperature mireds",
+ "code": 16400,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enhanced current hue",
+ "code": 16384,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "enhanced color mode",
+ "code": 16385,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x01",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color loop active",
+ "code": 16386,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color loop direction",
+ "code": 16387,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color loop time",
+ "code": 16388,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0019",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color capabilities",
+ "code": 16394,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color temp physical min",
+ "code": 16395,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "color temp physical max",
+ "code": 16396,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0xFEFF",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Temperature Measurement",
+ "code": 1026,
+ "mfgCode": null,
+ "define": "TEMP_MEASUREMENT_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Temperature Measurement",
+ "code": 1026,
+ "mfgCode": null,
+ "define": "TEMP_MEASUREMENT_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "measured value",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x8000",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "min measured value",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x8000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "max measured value",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x8000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "tolerance",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "IAS Zone",
+ "code": 1280,
+ "mfgCode": null,
+ "define": "IAS_ZONE_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "ZoneEnrollResponse",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "IAS Zone",
+ "code": 1280,
+ "mfgCode": null,
+ "define": "IAS_ZONE_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "ZoneStatusChangeNotification",
+ "code": 0,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "ZoneEnrollRequest",
+ "code": 1,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "2",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "zone state",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x00",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "zone type",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "zone status",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0000",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "IAS CIE address",
+ "code": 16,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "Zone ID",
+ "code": 17,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0xff",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Binding",
+ "code": 61440,
+ "mfgCode": null,
+ "define": "BINDING_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "Bind",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Unbind",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Binding",
+ "code": 61440,
+ "mfgCode": null,
+ "define": "BINDING_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "cluster revision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 0,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "endpoints": [
+ {
+ "endpointTypeName": "Anonymous Endpoint Type",
+ "endpointTypeIndex": 0,
+ "endpointTypeRef": 1,
+ "profileId": "0x0103",
+ "endpointId": 1,
+ "networkId": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/darwin/Framework/CHIP/gen/CHIPClientCallbacks.cpp b/src/darwin/Framework/CHIP/gen/CHIPClientCallbacks.cpp
new file mode 100644
index 0000000..58b3d84
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/CHIPClientCallbacks.cpp
@@ -0,0 +1,1567 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include "gen/CHIPClientCallbacks.h"
+
+#include "gen/enums.h"
+#include <app/util/CHIPDeviceCallbacksMgr.h>
+#include <app/util/af-enums.h>
+#include <app/util/af.h>
+#include <app/util/basic-types.h>
+#include <core/CHIPEncoding.h>
+#include <support/SafeInt.h>
+#include <support/logging/CHIPLogging.h>
+
+using namespace ::chip;
+
+#define CHECK_MESSAGE_LENGTH(value) \
+ if (!chip::CanCastTo<uint16_t>(value)) \
+ { \
+ ChipLogError(Zcl, "CHECK_MESSAGE_LENGTH expects a uint16_t value, got: %d", value); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ if (messageLen < value) \
+ { \
+ ChipLogError(Zcl, "Unexpected response length: %d", messageLen); \
+ if (onFailureCallback != nullptr) \
+ { \
+ Callback::Callback<DefaultFailureCallback> * cb = \
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback); \
+ cb->mCall(cb->mContext, static_cast<uint8_t>(EMBER_ZCL_STATUS_INVALID_VALUE)); \
+ } \
+ return true; \
+ } \
+ \
+ messageLen = static_cast<uint16_t>(messageLen - static_cast<uint16_t>(value));
+
+#define GET_RESPONSE_CALLBACKS(name) \
+ Callback::Cancelable * onSuccessCallback = nullptr; \
+ Callback::Cancelable * onFailureCallback = nullptr; \
+ NodeId sourceId = emberAfCurrentCommand()->source; \
+ uint8_t sequenceNumber = emberAfCurrentCommand()->seqNum; \
+ CHIP_ERROR err = gCallbacks.GetResponseCallback(sourceId, sequenceNumber, &onSuccessCallback, &onFailureCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onSuccessCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing success callback", name); \
+ } \
+ \
+ if (onFailureCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing failure callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+#define GET_REPORT_CALLBACK(name) \
+ Callback::Cancelable * onReportCallback = nullptr; \
+ CHIP_ERROR err = gCallbacks.GetReportCallback(sourceId, endpointId, clusterId, attributeId, &onReportCallback); \
+ \
+ if (CHIP_NO_ERROR != err) \
+ { \
+ if (onReportCallback == nullptr) \
+ { \
+ ChipLogDetail(Zcl, "%s: Missing report callback", name); \
+ } \
+ \
+ return true; \
+ }
+
+void LogStatus(uint8_t status)
+{
+ switch (status)
+ {
+ case EMBER_ZCL_STATUS_SUCCESS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SUCCESS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_AUTHORIZED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_AUTHORIZED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_MALFORMED_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_MALFORMED_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_FIELD:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_FIELD (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_VALUE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_VALUE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_READ_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_READ_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INSUFFICIENT_SPACE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INSUFFICIENT_SPACE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DUPLICATE_EXISTS:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DUPLICATE_EXISTS (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NOT_FOUND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NOT_FOUND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_DATA_TYPE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_DATA_TYPE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_SELECTOR:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_SELECTOR (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WRITE_ONLY:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WRITE_ONLY (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_DEFINED_OUT_Of_BAND (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ACTION_DENIED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ACTION_DENIED (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_TIMEOUT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_TIMEOUT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_ABORT:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_ABORT (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_INVALID_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_INVALID_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_WAIT_FOR_DATA:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_WAIT_FOR_DATA (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_HARDWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_HARDWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_SOFTWARE_FAILURE:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_SOFTWARE_FAILURE (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER (0x%02x)", status);
+ break;
+ case EMBER_ZCL_STATUS_LIMIT_REACHED:
+ ChipLogProgress(Zcl, " status: EMBER_ZCL_STATUS_LIMIT_REACHED (0x%02x)", status);
+ break;
+ default:
+ ChipLogError(Zcl, "Unknow status: 0x%02x", status);
+ break;
+ }
+}
+
+// Singleton instance of the callbacks manager
+app::CHIPDeviceCallbacksMgr & gCallbacks = app::CHIPDeviceCallbacksMgr::GetInstance();
+
+bool emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ ChipLogProgress(Zcl, "DefaultResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " CommandId: 0x%02x", commandId);
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("emberAfDefaultResponseCallback");
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, static_cast<uint8_t>(status));
+ }
+
+ return true;
+}
+
+bool emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadAttributesResponseCallback");
+
+ // struct readAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+ else
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute read
+ // per read command. So if multiple attributes are read at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes read at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "WriteAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfWriteAttributesResponseCallback");
+
+ // struct writeAttributeResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute written
+ // per write command. So if multiple attributes are written at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes written at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ConfigureReportingResponseCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfConfigureReportingResponseCallback");
+
+ // struct configureReportingResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t status = chip::Encoding::Read8(message); // zclStatus
+ LogStatus(status);
+
+ if (status == EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultSuccessCallback> * cb =
+ Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ }
+
+ // The current code is written matching the current API where there is a single attribute report
+ // per configure command. So if multiple attributes are configured at the same time, something is wrong
+ // somewhere.
+ if (messageLen)
+ {
+ ChipLogError(Zcl, "Multiple attributes reports configured at the same time. Something went wrong.");
+ break;
+ }
+ }
+
+ return true;
+}
+
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "ReadReportingConfigurationResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ GET_RESPONSE_CALLBACKS("emberAfReadReportingConfigurationResponseCallback");
+
+ // struct readReportingConfigurationResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t direction = chip::Encoding::Read8(message); // reportingRole
+ ChipLogProgress(Zcl, " direction: 0x%02x", direction);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ if (direction == EMBER_ZCL_REPORTING_DIRECTION_REPORTED)
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t minimumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " minimumReportingInterval: %" PRIu16, minimumReportingInterval);
+
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t maximumReportingInterval = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " maximumReportingInterval: %" PRIu16, maximumReportingInterval);
+
+ // FIXME: unk is not supported yet.
+
+ Callback::Callback<ReadReportingConfigurationReportedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReportedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, minimumReportingInterval, maximumReportingInterval);
+ }
+ else
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t timeout = chip::Encoding::LittleEndian::Read16(message); // uint16
+ ChipLogProgress(Zcl, " timeout: %" PRIu16, timeout);
+
+ Callback::Callback<ReadReportingConfigurationReceivedCallback> * cb =
+ Callback::Callback<ReadReportingConfigurationReceivedCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ }
+ }
+
+ return true;
+}
+
+bool emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * message, uint16_t messageLen,
+ bool extended)
+{
+ ChipLogProgress(Zcl, "DiscoverAttributesResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " extended: %d", extended);
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverAttributesCallback");
+
+ // struct discoverAttributesResponseRecord[]
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message); // zclType
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+ }
+
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsGeneratedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ ChipLogProgress(Zcl, "DiscoverCommandsReceivedResponse:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+ ChipLogProgress(Zcl, " manufacturerCode: 0x%04x", manufacturerCode);
+ ChipLogProgress(Zcl, " discoveryComplete: %d", discoveryComplete);
+ ChipLogProgress(Zcl, " commandIdCount: %" PRIu16, commandIdCount);
+
+ for (uint16_t i = 0; i < commandIdCount; i++)
+ {
+ ChipLogProgress(Zcl, " commandId: 0x%02x", commandIds++);
+ }
+
+ GET_RESPONSE_CALLBACKS("emberAfDiscoverCommandsGeneratedResponseCallback");
+ Callback::Callback<DefaultSuccessCallback> * cb = Callback::Callback<DefaultSuccessCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearAllPinsResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearAllPinsResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearAllPinsResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearAllPinsResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearAllPinsResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearAllRfidsResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearAllRfidsResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearAllRfidsResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearHolidayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearHolidayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearHolidayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearPinResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearPinResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearPinResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearPinResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearPinResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearRfidResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearRfidResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearRfidResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearRfidResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearRfidResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearWeekdayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearWeekdayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterClearYeardayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "ClearYeardayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterClearYeardayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetHolidayScheduleResponseCallback(uint8_t scheduleId, uint8_t status, uint32_t localStartTime,
+ uint32_t localEndTime, uint8_t operatingModeDuringHoliday)
+{
+ ChipLogProgress(Zcl, "GetHolidayScheduleResponse:");
+ ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId);
+ LogStatus(status);
+ ChipLogProgress(Zcl, " localStartTime: %" PRIu32 "", localStartTime);
+ ChipLogProgress(Zcl, " localEndTime: %" PRIu32 "", localEndTime);
+ ChipLogProgress(Zcl, " operatingModeDuringHoliday: %" PRIu8 "", operatingModeDuringHoliday);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetHolidayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetLogRecordResponseCallback(uint16_t logEntryId, uint32_t timestamp, uint8_t eventType, uint8_t source,
+ uint8_t eventIdOrAlarmCode, uint16_t userId, uint8_t * pin)
+{
+ ChipLogProgress(Zcl, "GetLogRecordResponse:");
+ ChipLogProgress(Zcl, " logEntryId: %" PRIu16 "", logEntryId);
+ ChipLogProgress(Zcl, " timestamp: %" PRIu32 "", timestamp);
+ ChipLogProgress(Zcl, " eventType: %" PRIu8 "", eventType);
+ ChipLogProgress(Zcl, " source: %" PRIu8 "", source);
+ ChipLogProgress(Zcl, " eventIdOrAlarmCode: %" PRIu8 "", eventIdOrAlarmCode);
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ ChipLogProgress(Zcl, " pin: %s", pin);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetLogRecordResponseCallback");
+
+ Callback::Callback<DoorLockClusterGetLogRecordResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetLogRecordResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, logEntryId, timestamp, eventType, source, eventIdOrAlarmCode, userId, pin);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetPinResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * pin)
+{
+ ChipLogProgress(Zcl, "GetPinResponse:");
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ ChipLogProgress(Zcl, " userStatus: %" PRIu8 "", userStatus);
+ ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType);
+ ChipLogProgress(Zcl, " pin: %s", pin);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetPinResponseCallback");
+
+ Callback::Callback<DoorLockClusterGetPinResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetPinResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, userId, userStatus, userType, pin);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetRfidResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid)
+{
+ ChipLogProgress(Zcl, "GetRfidResponse:");
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ ChipLogProgress(Zcl, " userStatus: %" PRIu8 "", userStatus);
+ ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType);
+ ChipLogProgress(Zcl, " rfid: %s", rfid);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetRfidResponseCallback");
+
+ Callback::Callback<DoorLockClusterGetRfidResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetRfidResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, userId, userStatus, userType, rfid);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetUserTypeResponseCallback(uint16_t userId, uint8_t userType)
+{
+ ChipLogProgress(Zcl, "GetUserTypeResponse:");
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ ChipLogProgress(Zcl, " userType: %" PRIu8 "", userType);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetUserTypeResponseCallback");
+
+ Callback::Callback<DoorLockClusterGetUserTypeResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetUserTypeResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, userId, userType);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status, uint8_t daysMask,
+ uint8_t startHour, uint8_t startMinute, uint8_t endHour,
+ uint8_t endMinute)
+{
+ ChipLogProgress(Zcl, "GetWeekdayScheduleResponse:");
+ ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId);
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ LogStatus(status);
+ ChipLogProgress(Zcl, " daysMask: %" PRIu8 "", daysMask);
+ ChipLogProgress(Zcl, " startHour: %" PRIu8 "", startHour);
+ ChipLogProgress(Zcl, " startMinute: %" PRIu8 "", startMinute);
+ ChipLogProgress(Zcl, " endHour: %" PRIu8 "", endHour);
+ ChipLogProgress(Zcl, " endMinute: %" PRIu8 "", endMinute);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetWeekdayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute);
+ return true;
+}
+
+bool emberAfDoorLockClusterGetYeardayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status,
+ uint32_t localStartTime, uint32_t localEndTime)
+{
+ ChipLogProgress(Zcl, "GetYeardayScheduleResponse:");
+ ChipLogProgress(Zcl, " scheduleId: %" PRIu8 "", scheduleId);
+ ChipLogProgress(Zcl, " userId: %" PRIu16 "", userId);
+ LogStatus(status);
+ ChipLogProgress(Zcl, " localStartTime: %" PRIu32 "", localStartTime);
+ ChipLogProgress(Zcl, " localEndTime: %" PRIu32 "", localEndTime);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterGetYeardayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, scheduleId, userId, localStartTime, localEndTime);
+ return true;
+}
+
+bool emberAfDoorLockClusterLockDoorResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "LockDoorResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterLockDoorResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterLockDoorResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterLockDoorResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetHolidayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetHolidayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetHolidayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetPinResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetPinResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetPinResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetPinResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetPinResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetRfidResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetRfidResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetRfidResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetRfidResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetRfidResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetUserTypeResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetUserTypeResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetUserTypeResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetUserTypeResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetUserTypeResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetWeekdayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetWeekdayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterSetYeardayScheduleResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "SetYeardayScheduleResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterSetYeardayScheduleResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterUnlockDoorResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "UnlockDoorResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterUnlockDoorResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterUnlockDoorResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterUnlockDoorResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(uint8_t status)
+{
+ ChipLogProgress(Zcl, "UnlockWithTimeoutResponse:");
+ LogStatus(status);
+
+ GET_RESPONSE_CALLBACKS("DoorLockClusterUnlockWithTimeoutResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback> * cb =
+ Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext);
+ return true;
+}
+
+bool emberAfGroupsClusterAddGroupResponseCallback(uint8_t status, uint16_t groupId)
+{
+ ChipLogProgress(Zcl, "AddGroupResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+
+ GET_RESPONSE_CALLBACKS("GroupsClusterAddGroupResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<GroupsClusterAddGroupResponseCallback> * cb =
+ Callback::Callback<GroupsClusterAddGroupResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId);
+ return true;
+}
+
+bool emberAfGroupsClusterGetGroupMembershipResponseCallback(uint8_t capacity, uint8_t groupCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * groupList)
+{
+ ChipLogProgress(Zcl, "GetGroupMembershipResponse:");
+ ChipLogProgress(Zcl, " capacity: %" PRIu8 "", capacity);
+ ChipLogProgress(Zcl, " groupCount: %" PRIu8 "", groupCount);
+ ChipLogProgress(Zcl, " groupList: %p", groupList);
+
+ GET_RESPONSE_CALLBACKS("GroupsClusterGetGroupMembershipResponseCallback");
+
+ Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback> * cb =
+ Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, capacity, groupCount, groupList);
+ return true;
+}
+
+bool emberAfGroupsClusterRemoveGroupResponseCallback(uint8_t status, uint16_t groupId)
+{
+ ChipLogProgress(Zcl, "RemoveGroupResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+
+ GET_RESPONSE_CALLBACKS("GroupsClusterRemoveGroupResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<GroupsClusterRemoveGroupResponseCallback> * cb =
+ Callback::Callback<GroupsClusterRemoveGroupResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId);
+ return true;
+}
+
+bool emberAfGroupsClusterViewGroupResponseCallback(uint8_t status, uint16_t groupId, uint8_t * groupName)
+{
+ ChipLogProgress(Zcl, "ViewGroupResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " groupName: %s", groupName);
+
+ GET_RESPONSE_CALLBACKS("GroupsClusterViewGroupResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<GroupsClusterViewGroupResponseCallback> * cb =
+ Callback::Callback<GroupsClusterViewGroupResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, groupName);
+ return true;
+}
+
+bool emberAfIdentifyClusterIdentifyQueryResponseCallback(uint16_t timeout)
+{
+ ChipLogProgress(Zcl, "IdentifyQueryResponse:");
+ ChipLogProgress(Zcl, " timeout: %" PRIu16 "", timeout);
+
+ GET_RESPONSE_CALLBACKS("IdentifyClusterIdentifyQueryResponseCallback");
+
+ Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback> * cb =
+ Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, timeout);
+ return true;
+}
+
+bool emberAfScenesClusterAddSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId)
+{
+ ChipLogProgress(Zcl, "AddSceneResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterAddSceneResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterAddSceneResponseCallback> * cb =
+ Callback::Callback<ScenesClusterAddSceneResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, sceneId);
+ return true;
+}
+
+bool emberAfScenesClusterGetSceneMembershipResponseCallback(uint8_t status, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList)
+{
+ ChipLogProgress(Zcl, "GetSceneMembershipResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " capacity: %" PRIu8 "", capacity);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneCount: %" PRIu8 "", sceneCount);
+ ChipLogProgress(Zcl, " sceneList: %p", sceneList);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterGetSceneMembershipResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback> * cb =
+ Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, capacity, groupId, sceneCount, sceneList);
+ return true;
+}
+
+bool emberAfScenesClusterRemoveAllScenesResponseCallback(uint8_t status, uint16_t groupId)
+{
+ ChipLogProgress(Zcl, "RemoveAllScenesResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterRemoveAllScenesResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback> * cb =
+ Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId);
+ return true;
+}
+
+bool emberAfScenesClusterRemoveSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId)
+{
+ ChipLogProgress(Zcl, "RemoveSceneResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterRemoveSceneResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterRemoveSceneResponseCallback> * cb =
+ Callback::Callback<ScenesClusterRemoveSceneResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, sceneId);
+ return true;
+}
+
+bool emberAfScenesClusterStoreSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId)
+{
+ ChipLogProgress(Zcl, "StoreSceneResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterStoreSceneResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterStoreSceneResponseCallback> * cb =
+ Callback::Callback<ScenesClusterStoreSceneResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, sceneId);
+ return true;
+}
+
+bool emberAfScenesClusterViewSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
+ uint8_t * sceneName,
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets)
+{
+ ChipLogProgress(Zcl, "ViewSceneResponse:");
+ LogStatus(status);
+ ChipLogProgress(Zcl, " groupId: %" PRIu16 "", groupId);
+ ChipLogProgress(Zcl, " sceneId: %" PRIu8 "", sceneId);
+ ChipLogProgress(Zcl, " transitionTime: %" PRIu16 "", transitionTime);
+ ChipLogProgress(Zcl, " sceneName: %s", sceneName);
+ ChipLogProgress(Zcl, " extensionFieldSets: %p", extensionFieldSets);
+
+ GET_RESPONSE_CALLBACKS("ScenesClusterViewSceneResponseCallback");
+
+ if (status != EMBER_ZCL_STATUS_SUCCESS)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, status);
+ return true;
+ }
+
+ Callback::Callback<ScenesClusterViewSceneResponseCallback> * cb =
+ Callback::Callback<ScenesClusterViewSceneResponseCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, groupId, sceneId, transitionTime, sceneName, extensionFieldSets);
+ return true;
+}
+
+bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen)
+{
+ ChipLogProgress(Zcl, "emberAfReportAttributeCallback:");
+ ChipLogProgress(Zcl, " ClusterId: 0x%04x", clusterId);
+
+ NodeId sourceId = emberAfCurrentCommand()->source;
+ ChipLogProgress(Zcl, " Source NodeId: %" PRIu64, sourceId);
+
+ EndpointId endpointId = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
+ ChipLogProgress(Zcl, " Source EndpointId: 0x%04x", endpointId);
+
+ // TODO onFailureCallback is just here because of the CHECK_MESSAGE_LENGTH macro. It needs to be removed.
+ Callback::Cancelable * onFailureCallback = nullptr;
+
+ while (messageLen)
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t attributeId = chip::Encoding::LittleEndian::Read16(message); // attribId
+ ChipLogProgress(Zcl, " attributeId: 0x%04x", attributeId);
+
+ GET_REPORT_CALLBACK("emberAfReportAttributesCallback");
+
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t attributeType = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " attributeType: 0x%02x", attributeType);
+
+ switch (attributeType)
+ {
+ case 0x00: // nodata / No data
+ case 0x0A: // data24 / 24-bit data
+ case 0x0C: // data40 / 40-bit data
+ case 0x0D: // data48 / 48-bit data
+ case 0x0E: // data56 / 56-bit data
+ case 0x1A: // map24 / 24-bit bitmap
+ case 0x1C: // map40 / 40-bit bitmap
+ case 0x1D: // map48 / 48-bit bitmap
+ case 0x1E: // map56 / 56-bit bitmap
+ case 0x22: // uint24 / Unsigned 24-bit integer
+ case 0x24: // uint40 / Unsigned 40-bit integer
+ case 0x25: // uint48 / Unsigned 48-bit integer
+ case 0x26: // uint56 / Unsigned 56-bit integer
+ case 0x2A: // int24 / Signed 24-bit integer
+ case 0x2C: // int40 / Signed 40-bit integer
+ case 0x2D: // int48 / Signed 48-bit integer
+ case 0x2E: // int56 / Signed 56-bit integer
+ case 0x38: // semi / Semi-precision
+ case 0x39: // single / Single precision
+ case 0x3A: // double / Double precision
+ case 0x41: // octstr / Octet string
+ case 0x42: // string / Character string
+ case 0x43: // octstr16 / Long octet string
+ case 0x44: // string16 / Long character string
+ case 0x48: // array / Array
+ case 0x49: // struct / Structure
+ case 0x50: // set / Set
+ case 0x51: // bag / Bag
+ case 0xE0: // ToD / Time of day
+ {
+ ChipLogError(Zcl, "attributeType 0x%02x is not supported", attributeType);
+ return true;
+ }
+
+ case 0x08: // data8 / 8-bit data
+ case 0x18: // map8 / 8-bit bitmap
+ case 0x20: // uint8 / Unsigned 8-bit integer
+ case 0x30: // enum8 / 8-bit enumeration
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: 0x%02x", value);
+
+ Callback::Callback<Int8uAttributeCallback> * cb =
+ Callback::Callback<Int8uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x09: // data16 / 16-bit data
+ case 0x19: // map16 / 16-bit bitmap
+ case 0x21: // uint16 / Unsigned 16-bit integer
+ case 0x31: // enum16 / 16-bit enumeration
+ case 0xE8: // clusterId / Cluster ID
+ case 0xE9: // attribId / Attribute ID
+ case 0xEA: // bacOID / BACnet OID
+ case 0xF1: // key128 / 128-bit security key
+ case 0xFF: // unk / Unknown
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ uint16_t value = chip::Encoding::LittleEndian::Read16(message);
+ ChipLogProgress(Zcl, " value: 0x%04x", value);
+
+ Callback::Callback<Int16uAttributeCallback> * cb =
+ Callback::Callback<Int16uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0B: // data32 / 32-bit data
+ case 0x1B: // map32 / 32-bit bitmap
+ case 0x23: // uint32 / Unsigned 32-bit integer
+ case 0xE1: // date / Date
+ case 0xE2: // UTC / UTCTime
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ uint32_t value = chip::Encoding::LittleEndian::Read32(message);
+ ChipLogProgress(Zcl, " value: 0x%08x", value);
+
+ Callback::Callback<Int32uAttributeCallback> * cb =
+ Callback::Callback<Int32uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x0F: // data64 / 64-bit data
+ case 0x1F: // map64 / 64-bit bitmap
+ case 0x27: // uint64 / Unsigned 64-bit integer
+ case 0xF0: // EUI64 / IEEE address
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ uint64_t value = chip::Encoding::LittleEndian::Read64(message);
+ ChipLogProgress(Zcl, " value: 0x%16x", value);
+
+ Callback::Callback<Int64uAttributeCallback> * cb =
+ Callback::Callback<Int64uAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x10: // bool / Boolean
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ uint8_t value = chip::Encoding::Read8(message);
+ ChipLogProgress(Zcl, " value: %d", value);
+
+ Callback::Callback<BooleanAttributeCallback> * cb =
+ Callback::Callback<BooleanAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x28: // int8 / Signed 8-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(1);
+ int8_t value = chip::CastToSigned(chip::Encoding::Read8(message));
+ ChipLogProgress(Zcl, " value: %" PRId8, value);
+
+ Callback::Callback<Int8sAttributeCallback> * cb =
+ Callback::Callback<Int8sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x29: // int16 / Signed 16-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(2);
+ int16_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read16(message));
+ ChipLogProgress(Zcl, " value: %" PRId16, value);
+
+ Callback::Callback<Int16sAttributeCallback> * cb =
+ Callback::Callback<Int16sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2B: // int32 / Signed 32-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(4);
+ int32_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read32(message));
+ ChipLogProgress(Zcl, " value: %" PRId32, value);
+
+ Callback::Callback<Int32sAttributeCallback> * cb =
+ Callback::Callback<Int32sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+
+ case 0x2F: // int64 / Signed 64-bit integer
+ {
+ CHECK_MESSAGE_LENGTH(8);
+ int64_t value = chip::CastToSigned(chip::Encoding::LittleEndian::Read64(message));
+ ChipLogProgress(Zcl, " value: %" PRId64, value);
+
+ Callback::Callback<Int64sAttributeCallback> * cb =
+ Callback::Callback<Int64sAttributeCallback>::FromCancelable(onReportCallback);
+ cb->mCall(cb->mContext, value);
+ break;
+ }
+ }
+ }
+
+ return true;
+}
diff --git a/src/darwin/Framework/CHIP/gen/CHIPClientCallbacks.h b/src/darwin/Framework/CHIP/gen/CHIPClientCallbacks.h
new file mode 100644
index 0000000..3e88cfc
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/CHIPClientCallbacks.h
@@ -0,0 +1,86 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#pragma once
+
+#include <inttypes.h>
+
+// Global Response Callbacks
+typedef void (*DefaultSuccessCallback)(void * context);
+typedef void (*DefaultFailureCallback)(void * context, uint8_t status);
+typedef void (*BooleanAttributeCallback)(void * context, bool value);
+typedef void (*Int8uAttributeCallback)(void * context, uint8_t value);
+typedef void (*Int8sAttributeCallback)(void * context, int8_t value);
+typedef void (*Int16uAttributeCallback)(void * context, uint16_t value);
+typedef void (*Int16sAttributeCallback)(void * context, int16_t value);
+typedef void (*Int32uAttributeCallback)(void * context, uint32_t value);
+typedef void (*Int32sAttributeCallback)(void * context, int32_t value);
+typedef void (*Int64uAttributeCallback)(void * context, uint64_t value);
+typedef void (*Int64sAttributeCallback)(void * context, int64_t value);
+typedef void (*ReadReportingConfigurationReportedCallback)(void * context, uint16_t minInterval, uint16_t maxInterval);
+typedef void (*ReadReportingConfigurationReceivedCallback)(void * context, uint16_t timeout);
+
+// Cluster Specific Response Callbacks
+typedef void (*DoorLockClusterClearAllPinsResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearAllRfidsResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearHolidayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearPinResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearRfidResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearWeekdayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterClearYeardayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterGetHolidayScheduleResponseCallback)(void * context, uint8_t scheduleId, uint32_t localStartTime,
+ uint32_t localEndTime, uint8_t operatingModeDuringHoliday);
+typedef void (*DoorLockClusterGetLogRecordResponseCallback)(void * context, uint16_t logEntryId, uint32_t timestamp,
+ uint8_t eventType, uint8_t source, uint8_t eventIdOrAlarmCode,
+ uint16_t userId, uint8_t * pin);
+typedef void (*DoorLockClusterGetPinResponseCallback)(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType,
+ uint8_t * pin);
+typedef void (*DoorLockClusterGetRfidResponseCallback)(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType,
+ uint8_t * rfid);
+typedef void (*DoorLockClusterGetUserTypeResponseCallback)(void * context, uint16_t userId, uint8_t userType);
+typedef void (*DoorLockClusterGetWeekdayScheduleResponseCallback)(void * context, uint8_t scheduleId, uint16_t userId,
+ uint8_t daysMask, uint8_t startHour, uint8_t startMinute,
+ uint8_t endHour, uint8_t endMinute);
+typedef void (*DoorLockClusterGetYeardayScheduleResponseCallback)(void * context, uint8_t scheduleId, uint16_t userId,
+ uint32_t localStartTime, uint32_t localEndTime);
+typedef void (*DoorLockClusterLockDoorResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetHolidayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetPinResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetRfidResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetUserTypeResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetWeekdayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterSetYeardayScheduleResponseCallback)(void * context);
+typedef void (*DoorLockClusterUnlockDoorResponseCallback)(void * context);
+typedef void (*DoorLockClusterUnlockWithTimeoutResponseCallback)(void * context);
+typedef void (*GroupsClusterAddGroupResponseCallback)(void * context, uint16_t groupId);
+typedef void (*GroupsClusterGetGroupMembershipResponseCallback)(void * context, uint8_t capacity, uint8_t groupCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * groupList);
+typedef void (*GroupsClusterRemoveGroupResponseCallback)(void * context, uint16_t groupId);
+typedef void (*GroupsClusterViewGroupResponseCallback)(void * context, uint16_t groupId, uint8_t * groupName);
+typedef void (*IdentifyClusterIdentifyQueryResponseCallback)(void * context, uint16_t timeout);
+typedef void (*ScenesClusterAddSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId);
+typedef void (*ScenesClusterGetSceneMembershipResponseCallback)(void * context, uint8_t capacity, uint16_t groupId,
+ uint8_t sceneCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList);
+typedef void (*ScenesClusterRemoveAllScenesResponseCallback)(void * context, uint16_t groupId);
+typedef void (*ScenesClusterRemoveSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId);
+typedef void (*ScenesClusterStoreSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId);
+typedef void (*ScenesClusterViewSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
+ uint8_t * sceneName,
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets);
diff --git a/src/darwin/Framework/CHIP/gen/CHIPClustersObjc.h b/src/darwin/Framework/CHIP/gen/CHIPClustersObjc.h
new file mode 100644
index 0000000..e0a5978
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/CHIPClustersObjc.h
@@ -0,0 +1,515 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#ifndef CHIP_CLUSTERS_H
+#define CHIP_CLUSTERS_H
+
+#import <Foundation/Foundation.h>
+
+typedef void (^ResponseHandler)(NSError * _Nullable error, NSDictionary * _Nullable values);
+
+@class CHIPDevice;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBarrierControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)barrierControlStop:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeBarrierMovingState:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeBarrierPosition:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBasic : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)mfgSpecificPing:(ResponseHandler)completionHandler;
+- (BOOL)resetToFactoryDefaults:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeZclVersion:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePowerSource:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPBinding : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)bind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)unbind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPColorControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)moveColor:(int16_t)rateX
+ rateY:(int16_t)rateY
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveColorTemperature:(uint8_t)moveMode
+ rate:(uint16_t)rate
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveHue:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveSaturation:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToColor:(uint16_t)colorX
+ colorY:(uint16_t)colorY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToColorTemperature:(uint16_t)colorTemperature
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToHue:(uint8_t)hue
+ direction:(uint8_t)direction
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToHueAndSaturation:(uint8_t)hue
+ saturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToSaturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepColor:(int16_t)stepX
+ stepY:(int16_t)stepY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepColorTemperature:(uint8_t)stepMode
+ stepSize:(uint16_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepHue:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepSaturation:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stopMoveStep:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeCurrentHue:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentHue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentHue:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeCurrentSaturation:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentSaturation:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeRemainingTime:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCurrentX:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentX:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentX:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeCurrentY:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentY:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentY:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeDriftCompensation:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCompensationText:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorTemperature:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeColorTemperature:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeColorTemperature:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeColorMode:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorControlOptions:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary1X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary1Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary1Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary2X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary2Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary2Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary3X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary3Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary3Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary4X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary4Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary4Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary5X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary5Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary5Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary6X:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary6Y:(ResponseHandler)completionHandler;
+- (BOOL)readAttributePrimary6Intensity:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeWhitePointX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeWhitePointY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointRX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointRY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointGX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointGY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointBX:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointBY:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorLoopActive:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorLoopDirection:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorLoopTime:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorCapabilities:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPDoorLock : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)clearAllPins:(ResponseHandler)completionHandler;
+- (BOOL)clearAllRfids:(ResponseHandler)completionHandler;
+- (BOOL)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)lockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setHolidaySchedule:(uint8_t)scheduleId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setPin:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ pin:(char *)pin
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setRfid:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ id:(char *)id
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setWeekdaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ daysMask:(uint8_t)daysMask
+ startHour:(uint8_t)startHour
+ startMinute:(uint8_t)startMinute
+ endHour:(uint8_t)endHour
+ endMinute:(uint8_t)endMinute
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)setYeardaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)unlockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(char *)pin completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeLockState:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeLockState:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeLockState:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeLockType:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeActuatorEnabled:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPGroups : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)addGroup:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)addGroupIfIdentifying:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)removeAllGroups:(ResponseHandler)completionHandler;
+- (BOOL)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPIdentify : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)identifyQuery:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeIdentifyTime:(ResponseHandler)completionHandler;
+- (BOOL)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPLevelControl : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPOnOff : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)off:(ResponseHandler)completionHandler;
+- (BOOL)on:(ResponseHandler)completionHandler;
+- (BOOL)toggle:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPScenes : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+- (BOOL)addScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ sceneName:(char *)sceneName
+ clusterId:(uint16_t)clusterId
+ length:(uint8_t)length
+ value:(uint8_t)value
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)recallScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler;
+
+- (BOOL)readAttributeSceneCount:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCurrentScene:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeCurrentGroup:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeSceneValid:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CHIPTemperatureMeasurement : NSObject
+
+- (nullable instancetype)initWithDevice:(CHIPDevice *)device endpoint:(uint8_t)endpoint queue:(dispatch_queue_t)queue;
+
+- (BOOL)readAttributeMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)configureAttributeMeasuredValue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(int16_t)change
+ completionHandler:(ResponseHandler)completionHandler;
+- (BOOL)reportAttributeMeasuredValue:(ResponseHandler)reportHandler;
+- (BOOL)readAttributeMinMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeMaxMeasuredValue:(ResponseHandler)completionHandler;
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* CHIP_CLUSTERS_H */
diff --git a/src/darwin/Framework/CHIP/gen/CHIPClustersObjc.mm b/src/darwin/Framework/CHIP/gen/CHIPClustersObjc.mm
new file mode 100644
index 0000000..179c28b
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/CHIPClustersObjc.mm
@@ -0,0 +1,5760 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#import <Foundation/Foundation.h>
+
+#import "CHIPDevice.h"
+#import "CHIPDevice_Internal.h"
+#import "gen/CHIPClientCallbacks.h"
+#import "gen/CHIPClustersObjc.h"
+
+#include <controller/CHIPClusters.h>
+
+using namespace ::chip;
+
+class CHIPDefaultSuccessCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPDefaultSuccessCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultSuccessCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDefaultSuccessCallbackBridge * callback = reinterpret_cast<CHIPDefaultSuccessCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDefaultFailureCallbackBridge : public Callback::Callback<DefaultFailureCallback> {
+public:
+ CHIPDefaultFailureCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultFailureCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDefaultFailureCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t status)
+ {
+ CHIPDefaultFailureCallbackBridge * callback = reinterpret_cast<CHIPDefaultFailureCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL" code:status userInfo:@ { NSLocalizedDescriptionKey : @"" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPUnsupportedAttributeCallbackBridge : public Callback::Callback<DefaultSuccessCallback> {
+public:
+ CHIPUnsupportedAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DefaultSuccessCallback>(CallbackFn, this)
+ {
+ }
+
+ ~CHIPUnsupportedAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPUnsupportedAttributeCallbackBridge * callback = reinterpret_cast<CHIPUnsupportedAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ NSError * error = [NSError errorWithDomain:@"ZCL"
+ code:0
+ userInfo:@ { NSLocalizedDescriptionKey : @"Unsuported attribute type" }];
+ callback->mHandler(error, nil);
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPBooleanAttributeCallbackBridge : public Callback::Callback<BooleanAttributeCallback> {
+public:
+ CHIPBooleanAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<BooleanAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPBooleanAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, bool value)
+ {
+ CHIPBooleanAttributeCallbackBridge * callback = reinterpret_cast<CHIPBooleanAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithBool:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8uAttributeCallbackBridge : public Callback::Callback<Int8uAttributeCallback> {
+public:
+ CHIPInt8uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t value)
+ {
+ CHIPInt8uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt8sAttributeCallbackBridge : public Callback::Callback<Int8sAttributeCallback> {
+public:
+ CHIPInt8sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int8sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt8sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int8_t value)
+ {
+ CHIPInt8sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt8sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithChar:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16uAttributeCallbackBridge : public Callback::Callback<Int16uAttributeCallback> {
+public:
+ CHIPInt16uAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16uAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16uAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t value)
+ {
+ CHIPInt16uAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16uAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithUnsignedShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPInt16sAttributeCallbackBridge : public Callback::Callback<Int16sAttributeCallback> {
+public:
+ CHIPInt16sAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue, bool keepAlive = false)
+ : Callback::Callback<Int16sAttributeCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ , mKeepAlive(keepAlive)
+ {
+ }
+
+ ~CHIPInt16sAttributeCallbackBridge() {};
+
+ static void CallbackFn(void * context, int16_t value)
+ {
+ CHIPInt16sAttributeCallbackBridge * callback = reinterpret_cast<CHIPInt16sAttributeCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ { @"value" : [NSNumber numberWithShort:value] });
+ if (!callback->mKeepAlive) {
+ callback->Cancel();
+ delete callback;
+ }
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+ bool mKeepAlive;
+};
+
+class CHIPDoorLockClusterClearAllPinsResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearAllPinsResponseCallback> {
+public:
+ CHIPDoorLockClusterClearAllPinsResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearAllPinsResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearAllPinsResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearAllPinsResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearAllPinsResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback> {
+public:
+ CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearAllRfidsResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearHolidayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearPinResponseCallbackBridge : public Callback::Callback<DoorLockClusterClearPinResponseCallback> {
+public:
+ CHIPDoorLockClusterClearPinResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearPinResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearPinResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearPinResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearPinResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearRfidResponseCallbackBridge : public Callback::Callback<DoorLockClusterClearRfidResponseCallback> {
+public:
+ CHIPDoorLockClusterClearRfidResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearRfidResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearRfidResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearRfidResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearRfidResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearWeekdayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterClearYeardayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetHolidayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(
+ void * context, uint8_t scheduleId, uint32_t localStartTime, uint32_t localEndTime, uint8_t operatingModeDuringHoliday)
+ {
+ CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"scheduleId" : [NSNumber numberWithUnsignedChar:scheduleId],
+ @"localStartTime" : [NSNumber numberWithUnsignedLong:localStartTime],
+ @"localEndTime" : [NSNumber numberWithUnsignedLong:localEndTime],
+ @"operatingModeDuringHoliday" : [NSNumber numberWithUnsignedChar:operatingModeDuringHoliday],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetLogRecordResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterGetLogRecordResponseCallback> {
+public:
+ CHIPDoorLockClusterGetLogRecordResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetLogRecordResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetLogRecordResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t logEntryId, uint32_t timestamp, uint8_t eventType, uint8_t source,
+ uint8_t eventIdOrAlarmCode, uint16_t userId, uint8_t * pin)
+ {
+ CHIPDoorLockClusterGetLogRecordResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetLogRecordResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"logEntryId" : [NSNumber numberWithUnsignedShort:logEntryId],
+ @"timestamp" : [NSNumber numberWithUnsignedLong:timestamp],
+ @"eventType" : [NSNumber numberWithUnsignedChar:eventType],
+ @"source" : [NSNumber numberWithUnsignedChar:source],
+ @"eventIdOrAlarmCode" : [NSNumber numberWithUnsignedChar:eventIdOrAlarmCode],
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"pin" : [NSString stringWithFormat:@"%s", pin],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetPinResponseCallbackBridge : public Callback::Callback<DoorLockClusterGetPinResponseCallback> {
+public:
+ CHIPDoorLockClusterGetPinResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetPinResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetPinResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * pin)
+ {
+ CHIPDoorLockClusterGetPinResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetPinResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"userStatus" : [NSNumber numberWithUnsignedChar:userStatus],
+ @"userType" : [NSNumber numberWithUnsignedChar:userType],
+ @"pin" : [NSString stringWithFormat:@"%s", pin],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetRfidResponseCallbackBridge : public Callback::Callback<DoorLockClusterGetRfidResponseCallback> {
+public:
+ CHIPDoorLockClusterGetRfidResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetRfidResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetRfidResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid)
+ {
+ CHIPDoorLockClusterGetRfidResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetRfidResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"userStatus" : [NSNumber numberWithUnsignedChar:userStatus],
+ @"userType" : [NSNumber numberWithUnsignedChar:userType],
+ @"rfid" : [NSString stringWithFormat:@"%s", rfid],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetUserTypeResponseCallbackBridge : public Callback::Callback<DoorLockClusterGetUserTypeResponseCallback> {
+public:
+ CHIPDoorLockClusterGetUserTypeResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetUserTypeResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetUserTypeResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t userId, uint8_t userType)
+ {
+ CHIPDoorLockClusterGetUserTypeResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetUserTypeResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"userType" : [NSNumber numberWithUnsignedChar:userType],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetWeekdayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t scheduleId, uint16_t userId, uint8_t daysMask, uint8_t startHour,
+ uint8_t startMinute, uint8_t endHour, uint8_t endMinute)
+ {
+ CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"scheduleId" : [NSNumber numberWithUnsignedChar:scheduleId],
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"daysMask" : [NSNumber numberWithUnsignedChar:daysMask],
+ @"startHour" : [NSNumber numberWithUnsignedChar:startHour],
+ @"startMinute" : [NSNumber numberWithUnsignedChar:startMinute],
+ @"endHour" : [NSNumber numberWithUnsignedChar:endHour],
+ @"endMinute" : [NSNumber numberWithUnsignedChar:endMinute],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterGetYeardayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t scheduleId, uint16_t userId, uint32_t localStartTime, uint32_t localEndTime)
+ {
+ CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"scheduleId" : [NSNumber numberWithUnsignedChar:scheduleId],
+ @"userId" : [NSNumber numberWithUnsignedShort:userId],
+ @"localStartTime" : [NSNumber numberWithUnsignedLong:localStartTime],
+ @"localEndTime" : [NSNumber numberWithUnsignedLong:localEndTime],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterLockDoorResponseCallbackBridge : public Callback::Callback<DoorLockClusterLockDoorResponseCallback> {
+public:
+ CHIPDoorLockClusterLockDoorResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterLockDoorResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterLockDoorResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterLockDoorResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterLockDoorResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetHolidayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetPinResponseCallbackBridge : public Callback::Callback<DoorLockClusterSetPinResponseCallback> {
+public:
+ CHIPDoorLockClusterSetPinResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetPinResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetPinResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetPinResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetPinResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetRfidResponseCallbackBridge : public Callback::Callback<DoorLockClusterSetRfidResponseCallback> {
+public:
+ CHIPDoorLockClusterSetRfidResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetRfidResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetRfidResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetRfidResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetRfidResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetUserTypeResponseCallbackBridge : public Callback::Callback<DoorLockClusterSetUserTypeResponseCallback> {
+public:
+ CHIPDoorLockClusterSetUserTypeResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetUserTypeResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetUserTypeResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetUserTypeResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetUserTypeResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetWeekdayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback> {
+public:
+ CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterSetYeardayScheduleResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterUnlockDoorResponseCallbackBridge : public Callback::Callback<DoorLockClusterUnlockDoorResponseCallback> {
+public:
+ CHIPDoorLockClusterUnlockDoorResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterUnlockDoorResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterUnlockDoorResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterUnlockDoorResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterUnlockDoorResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge
+ : public Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback> {
+public:
+ CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<DoorLockClusterUnlockWithTimeoutResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context)
+ {
+ CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {});
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPGroupsClusterAddGroupResponseCallbackBridge : public Callback::Callback<GroupsClusterAddGroupResponseCallback> {
+public:
+ CHIPGroupsClusterAddGroupResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<GroupsClusterAddGroupResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPGroupsClusterAddGroupResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId)
+ {
+ CHIPGroupsClusterAddGroupResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPGroupsClusterAddGroupResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge
+ : public Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback> {
+public:
+ CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<GroupsClusterGetGroupMembershipResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge() {};
+
+ static void CallbackFn(
+ void * context, uint8_t capacity, uint8_t groupCount, /* TYPE WARNING: array array defaults to */ uint8_t * groupList)
+ {
+ CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"capacity" : [NSNumber numberWithUnsignedChar:capacity],
+ @"groupCount" : [NSNumber numberWithUnsignedChar:groupCount],
+ // groupList: /* TYPE WARNING: array array defaults to */ uint8_t *
+ // Conversion from this type to Objc is not properly implemented yet
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPGroupsClusterRemoveGroupResponseCallbackBridge : public Callback::Callback<GroupsClusterRemoveGroupResponseCallback> {
+public:
+ CHIPGroupsClusterRemoveGroupResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<GroupsClusterRemoveGroupResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPGroupsClusterRemoveGroupResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId)
+ {
+ CHIPGroupsClusterRemoveGroupResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPGroupsClusterRemoveGroupResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPGroupsClusterViewGroupResponseCallbackBridge : public Callback::Callback<GroupsClusterViewGroupResponseCallback> {
+public:
+ CHIPGroupsClusterViewGroupResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<GroupsClusterViewGroupResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPGroupsClusterViewGroupResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t * groupName)
+ {
+ CHIPGroupsClusterViewGroupResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPGroupsClusterViewGroupResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"groupName" : [NSString stringWithFormat:@"%s", groupName],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge
+ : public Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback> {
+public:
+ CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<IdentifyClusterIdentifyQueryResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t timeout)
+ {
+ CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"timeout" : [NSNumber numberWithUnsignedShort:timeout],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterAddSceneResponseCallbackBridge : public Callback::Callback<ScenesClusterAddSceneResponseCallback> {
+public:
+ CHIPScenesClusterAddSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterAddSceneResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterAddSceneResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId)
+ {
+ CHIPScenesClusterAddSceneResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterAddSceneResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterGetSceneMembershipResponseCallbackBridge
+ : public Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback> {
+public:
+ CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterGetSceneMembershipResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterGetSceneMembershipResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList)
+ {
+ CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterGetSceneMembershipResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"capacity" : [NSNumber numberWithUnsignedChar:capacity],
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneCount" : [NSNumber numberWithUnsignedChar:sceneCount],
+ // sceneList: /* TYPE WARNING: array array defaults to */ uint8_t *
+ // Conversion from this type to Objc is not properly implemented yet
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterRemoveAllScenesResponseCallbackBridge
+ : public Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback> {
+public:
+ CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterRemoveAllScenesResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterRemoveAllScenesResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId)
+ {
+ CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterRemoveAllScenesResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterRemoveSceneResponseCallbackBridge : public Callback::Callback<ScenesClusterRemoveSceneResponseCallback> {
+public:
+ CHIPScenesClusterRemoveSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterRemoveSceneResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterRemoveSceneResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId)
+ {
+ CHIPScenesClusterRemoveSceneResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterRemoveSceneResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterStoreSceneResponseCallbackBridge : public Callback::Callback<ScenesClusterStoreSceneResponseCallback> {
+public:
+ CHIPScenesClusterStoreSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterStoreSceneResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterStoreSceneResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId)
+ {
+ CHIPScenesClusterStoreSceneResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterStoreSceneResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId],
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+class CHIPScenesClusterViewSceneResponseCallbackBridge : public Callback::Callback<ScenesClusterViewSceneResponseCallback> {
+public:
+ CHIPScenesClusterViewSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue)
+ : Callback::Callback<ScenesClusterViewSceneResponseCallback>(CallbackFn, this)
+ , mHandler(handler)
+ , mQueue(queue)
+ {
+ }
+
+ ~CHIPScenesClusterViewSceneResponseCallbackBridge() {};
+
+ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName,
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets)
+ {
+ CHIPScenesClusterViewSceneResponseCallbackBridge * callback
+ = reinterpret_cast<CHIPScenesClusterViewSceneResponseCallbackBridge *>(context);
+ if (callback && callback->mQueue) {
+ dispatch_async(callback->mQueue, ^{
+ callback->mHandler(nil, @ {
+ @"groupId" : [NSNumber numberWithUnsignedShort:groupId],
+ @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId],
+ @"transitionTime" : [NSNumber numberWithUnsignedShort:transitionTime],
+ @"sceneName" : [NSString stringWithFormat:@"%s", sceneName],
+ // extensionFieldSets: /* TYPE WARNING: array array defaults to */ uint8_t *
+ // Conversion from this type to Objc is not properly implemented yet
+ });
+ callback->Cancel();
+ delete callback;
+ });
+ }
+ };
+
+private:
+ ResponseHandler mHandler;
+ dispatch_queue_t mQueue;
+};
+
+@interface CHIPBarrierControl ()
+
+@property (readonly) Controller::BarrierControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBarrierControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.BarrierControlGoToPercent(onSuccess->Cancel(), onFailure->Cancel(), percentOpen);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)barrierControlStop:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.BarrierControlStop(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierMovingState:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierMovingState(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierSafetyStatus(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierCapabilities(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeBarrierPosition:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierPosition(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPBasic ()
+
+@property (readonly) Controller::BasicCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBasic
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)mfgSpecificPing:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MfgSpecificPing(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)resetToFactoryDefaults:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ResetToFactoryDefaults(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeZclVersion:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeZclVersion(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePowerSource:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePowerSource(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPBinding ()
+
+@property (readonly) Controller::BindingCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPBinding
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)bind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Bind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)unbind:(uint64_t)nodeId
+ groupId:(uint16_t)groupId
+ endpointId:(uint8_t)endpointId
+ clusterId:(uint16_t)clusterId
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Unbind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPColorControl ()
+
+@property (readonly) Controller::ColorControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPColorControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)moveColor:(int16_t)rateX
+ rateY:(int16_t)rateY
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveColor(onSuccess->Cancel(), onFailure->Cancel(), rateX, rateY, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveColorTemperature:(uint8_t)moveMode
+ rate:(uint16_t)rate
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate,
+ colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveHue:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveHue(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveSaturation:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveSaturation(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToColor:(uint16_t)colorX
+ colorY:(uint16_t)colorY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToColor(
+ onSuccess->Cancel(), onFailure->Cancel(), colorX, colorY, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToColorTemperature:(uint16_t)colorTemperature
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToColorTemperature(
+ onSuccess->Cancel(), onFailure->Cancel(), colorTemperature, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToHue:(uint8_t)hue
+ direction:(uint8_t)direction
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToHue(
+ onSuccess->Cancel(), onFailure->Cancel(), hue, direction, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToHueAndSaturation:(uint8_t)hue
+ saturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToHueAndSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), hue, saturation, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToSaturation:(uint8_t)saturation
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), saturation, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepColor:(int16_t)stepX
+ stepY:(int16_t)stepY
+ transitionTime:(uint16_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepColor(
+ onSuccess->Cancel(), onFailure->Cancel(), stepX, stepY, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepColorTemperature:(uint8_t)stepMode
+ stepSize:(uint16_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum
+ colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize,
+ transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepHue:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepHue(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepSaturation:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint8_t)transitionTime
+ optionsMask:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stopMoveStep:(uint8_t)optionsMask
+ optionsOverride:(uint8_t)optionsOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StopMoveStep(onSuccess->Cancel(), onFailure->Cancel(), optionsMask, optionsOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentHue:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentHue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentHue:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentHue(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentSaturation:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentSaturation(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentSaturation:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentSaturation(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentSaturation(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeRemainingTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeRemainingTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentX:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentX:(ResponseHandler)reportHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentX(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentY:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentY:(ResponseHandler)reportHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentY(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeDriftCompensation:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeDriftCompensation(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCompensationText:(ResponseHandler)completionHandler
+{
+ CHIPUnsupportedAttributeCallbackBridge * onSuccess
+ = new CHIPUnsupportedAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCompensationText(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorTemperature:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorTemperature(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeColorTemperature:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeColorTemperature(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeColorTemperature:(ResponseHandler)reportHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeColorTemperature(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeColorMode:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorMode(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorControlOptions:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPrimaries(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary1X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary1Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary1Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary2X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary2Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary2Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary3X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary3Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary3Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary4X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary4Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary4Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary5X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary5Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary5Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary6X:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6X(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary6Y:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Y(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributePrimary6Intensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Intensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeWhitePointX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeWhitePointY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointRX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointRY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointGX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointGY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointBX:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointBY:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedCurrentHue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedColorMode(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorLoopActive:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopActive(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorLoopDirection:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopDirection(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorLoopTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorCapabilities:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorCapabilities(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMin(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMax(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPDoorLock ()
+
+@property (readonly) Controller::DoorLockCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPDoorLock
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)clearAllPins:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearAllPinsResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearAllPinsResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearAllPins(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearAllRfids:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearAllRfids(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearPinResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearPinResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearPin(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearRfidResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearRfidResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearRfid(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ClearYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetLogRecordResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetLogRecordResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetLogRecord(onSuccess->Cancel(), onFailure->Cancel(), logIndex);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetPinResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetPinResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetPin(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetRfidResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetRfidResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetUserTypeResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetUserTypeResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)lockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterLockDoorResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterLockDoorResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.LockDoor(onSuccess->Cancel(), onFailure->Cancel(), pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setHolidaySchedule:(uint8_t)scheduleId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetHolidaySchedule(
+ onSuccess->Cancel(), onFailure->Cancel(), scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setPin:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ pin:(char *)pin
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetPinResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetPinResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetPin(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setRfid:(uint16_t)userId
+ userStatus:(uint8_t)userStatus
+ userType:(uint8_t)userType
+ id:(char *)id
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetRfidResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetRfidResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, id);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetUserTypeResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetUserTypeResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId, userType);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setWeekdaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ daysMask:(uint8_t)daysMask
+ startHour:(uint8_t)startHour
+ startMinute:(uint8_t)startMinute
+ endHour:(uint8_t)endHour
+ endMinute:(uint8_t)endMinute
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetWeekdaySchedule(
+ onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)setYeardaySchedule:(uint8_t)scheduleId
+ userId:(uint16_t)userId
+ localStartTime:(uint32_t)localStartTime
+ localEndTime:(uint32_t)localEndTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.SetYeardaySchedule(
+ onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, localStartTime, localEndTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)unlockDoor:(char *)pin completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterUnlockDoorResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterUnlockDoorResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.UnlockDoor(onSuccess->Cancel(), onFailure->Cancel(), pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(char *)pin completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge * onSuccess
+ = new CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.UnlockWithTimeout(onSuccess->Cancel(), onFailure->Cancel(), timeoutInSeconds, pin);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeLockState:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeLockState(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeLockState:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.ConfigureAttributeLockState(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeLockState:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeLockState(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeLockType:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeLockType(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeActuatorEnabled:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeActuatorEnabled(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPGroups ()
+
+@property (readonly) Controller::GroupsCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPGroups
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)addGroup:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterAddGroupResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterAddGroupResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.AddGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId, groupName);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)addGroupIfIdentifying:(uint16_t)groupId groupName:(char *)groupName completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.AddGroupIfIdentifying(onSuccess->Cancel(), onFailure->Cancel(), groupId, groupName);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetGroupMembership(onSuccess->Cancel(), onFailure->Cancel(), groupCount, groupList);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeAllGroups:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveAllGroups(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterRemoveGroupResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterRemoveGroupResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPGroupsClusterViewGroupResponseCallbackBridge * onSuccess
+ = new CHIPGroupsClusterViewGroupResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ViewGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPIdentify ()
+
+@property (readonly) Controller::IdentifyCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPIdentify
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Identify(onSuccess->Cancel(), onFailure->Cancel(), identifyTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)identifyQuery:(ResponseHandler)completionHandler
+{
+ CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge * onSuccess
+ = new CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.IdentifyQuery(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeIdentifyTime:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.WriteAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel(), value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPLevelControl ()
+
+@property (readonly) Controller::LevelControlCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPLevelControl
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)move:(uint8_t)moveMode
+ rate:(uint8_t)rate
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Move(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevel:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err
+ = self.cppCluster.MoveToLevel(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveToLevelWithOnOff:(uint8_t)level
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.MoveWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)step:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ optionMask:(uint8_t)optionMask
+ optionOverride:(uint8_t)optionOverride
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Step(
+ onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stepWithOnOff:(uint8_t)stepMode
+ stepSize:(uint8_t)stepSize
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StepWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Stop(onSuccess->Cancel(), onFailure->Cancel(), optionMask, optionOverride);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)stopWithOnOff:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StopWithOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentLevel:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeCurrentLevel:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(uint8_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentLevel(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeCurrentLevel:(ResponseHandler)reportHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentLevel(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPOnOff ()
+
+@property (readonly) Controller::OnOffCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPOnOff
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)off:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)on:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)toggle:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeOnOff:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeOnOff:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeOnOff:(ResponseHandler)reportHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onReport = new CHIPBooleanAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPScenes ()
+
+@property (readonly) Controller::ScenesCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPScenes
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)addScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ sceneName:(char *)sceneName
+ clusterId:(uint16_t)clusterId
+ length:(uint8_t)length
+ value:(uint8_t)value
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterAddSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterAddSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.AddScene(
+ onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime, sceneName, clusterId, length, value);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.GetSceneMembership(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)recallScene:(uint16_t)groupId
+ sceneId:(uint8_t)sceneId
+ transitionTime:(uint16_t)transitionTime
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RecallScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveAllScenes(onSuccess->Cancel(), onFailure->Cancel(), groupId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterRemoveSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterRemoveSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.RemoveScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterStoreSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterStoreSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.StoreScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+- (BOOL)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPScenesClusterViewSceneResponseCallbackBridge * onSuccess
+ = new CHIPScenesClusterViewSceneResponseCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ViewScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeSceneCount:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeSceneCount(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentScene:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentScene(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeCurrentGroup:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentGroup(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeSceneValid:(ResponseHandler)completionHandler
+{
+ CHIPBooleanAttributeCallbackBridge * onSuccess = new CHIPBooleanAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeSceneValid(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeNameSupport:(ResponseHandler)completionHandler
+{
+ CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
+
+@interface CHIPTemperatureMeasurement ()
+
+@property (readonly) Controller::TemperatureMeasurementCluster cppCluster;
+@property (readonly, nonatomic) dispatch_queue_t callbackQueue;
+@end
+
+@implementation CHIPTemperatureMeasurement
+
+- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue
+{
+ CHIP_ERROR err = _cppCluster.Associate([device internalDevice], endpoint);
+
+ if (err != CHIP_NO_ERROR) {
+ return nil;
+ }
+
+ if (self = [super init]) {
+ _callbackQueue = queue;
+ }
+
+ return self;
+}
+
+- (BOOL)readAttributeMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)configureAttributeMeasuredValue:(uint16_t)minInterval
+ maxInterval:(uint16_t)maxInterval
+ change:(int16_t)change
+ completionHandler:(ResponseHandler)completionHandler
+{
+ CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ConfigureAttributeMeasuredValue(
+ onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change);
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)reportAttributeMeasuredValue:(ResponseHandler)reportHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onReport = new CHIPInt16sAttributeCallbackBridge(reportHandler, _callbackQueue, true);
+ if (!onReport) {
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReportAttributeMeasuredValue(onReport->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onReport;
+ return NO;
+ }
+
+ return YES;
+}
+
+- (BOOL)readAttributeMinMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMinMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeMaxMeasuredValue:(ResponseHandler)completionHandler
+{
+ CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeMaxMeasuredValue(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+- (BOOL)readAttributeClusterRevision:(ResponseHandler)completionHandler
+{
+ CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, _callbackQueue);
+ if (!onSuccess) {
+ return NO;
+ }
+
+ CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, _callbackQueue);
+ if (!onFailure) {
+ delete onSuccess;
+ return NO;
+ }
+
+ CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel());
+ if (err != CHIP_NO_ERROR) {
+ delete onSuccess;
+ delete onFailure;
+ return NO;
+ }
+ return YES;
+}
+
+@end
diff --git a/src/darwin/Framework/CHIP/gen/af-gen-event.h b/src/darwin/Framework/CHIP/gen/af-gen-event.h
new file mode 100644
index 0000000..9dbfd3a
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/af-gen-event.h
@@ -0,0 +1,54 @@
+/**
+ *
+ * Copyright (c) 2020 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ *
+ * Copyright (c) 2020 Silicon Labs
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// This file is generated by Simplicity Studio. Please do not edit manually.
+//
+//
+
+// Enclosing macro to prevent multiple inclusion
+#ifndef __AF_GEN_EVENT__
+#define __AF_GEN_EVENT__
+
+// Code used to configure the cluster event mechanism
+#define EMBER_AF_GENERATED_EVENT_CODE
+// EmberEventData structs used to populate the EmberEventData table
+#define EMBER_AF_GENERATED_EVENTS
+#define EMBER_AF_GENERATED_EVENT_STRINGS
+
+// The length of the event context table used to track and retrieve cluster events
+#define EMBER_AF_EVENT_CONTEXT_LENGTH 4
+
+// EmberAfEventContext structs used to populate the EmberAfEventContext table
+#define EMBER_AF_GENERATED_EVENT_CONTEXT
+
+#endif // __AF_GEN_EVENT__
diff --git a/src/darwin/Framework/CHIP/gen/af-structs.h b/src/darwin/Framework/CHIP/gen/af-structs.h
new file mode 100644
index 0000000..c5cd195
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/af-structs.h
@@ -0,0 +1,440 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+#include "basic-types.h"
+#include "enums.h"
+#include <stdint.h>
+
+// Struct for BlockThreshold
+typedef struct _BlockThreshold
+{
+ uint8_t blockThreshold;
+ uint8_t priceControl;
+ uint32_t blockPeriodStartTime;
+ uint32_t blockPeriodDurationMinutes;
+ uint8_t fuelType;
+ uint32_t standingCharge;
+} EmberAfBlockThreshold;
+
+// Struct for BlockThresholdSubPayload
+typedef struct _BlockThresholdSubPayload
+{
+ uint8_t tierNumberOfBlockThresholds;
+ uint8_t * blockThreshold;
+} EmberAfBlockThresholdSubPayload;
+
+// Struct for ChatParticipant
+typedef struct _ChatParticipant
+{
+ uint16_t uid;
+ uint8_t * nickname;
+} EmberAfChatParticipant;
+
+// Struct for ChatRoom
+typedef struct _ChatRoom
+{
+ uint16_t cid;
+ uint8_t * name;
+} EmberAfChatRoom;
+
+// Struct for ConfigureReportingRecord
+typedef struct _ConfigureReportingRecord
+{
+ uint8_t direction;
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint16_t minimumReportingInterval;
+ uint16_t maximumReportingInterval;
+ uint8_t * reportableChangeLocation;
+ uint16_t timeoutPeriod;
+} EmberAfConfigureReportingRecord;
+
+// Struct for ConfigureReportingStatusRecord
+typedef struct _ConfigureReportingStatusRecord
+{
+ uint8_t status;
+ uint8_t direction;
+ chip::AttributeId attributeId;
+} EmberAfConfigureReportingStatusRecord;
+
+// Struct for DebtPayload
+typedef struct _DebtPayload
+{
+ uint32_t collectionTime;
+ uint32_t amountCollected;
+ uint8_t debtType;
+ uint32_t outstandingDebt;
+} EmberAfDebtPayload;
+
+// Struct for DeviceInformationRecord
+typedef struct _DeviceInformationRecord
+{
+ uint64_t ieeeAddress;
+ chip::EndpointId endpointId;
+ uint16_t profileId;
+ uint16_t deviceId;
+ uint8_t version;
+ uint8_t groupIdCount;
+ uint8_t sort;
+} EmberAfDeviceInformationRecord;
+
+// Struct for DiscoverAttributesInfoRecord
+typedef struct _DiscoverAttributesInfoRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+} EmberAfDiscoverAttributesInfoRecord;
+
+// Struct for EndpointInformationRecord
+typedef struct _EndpointInformationRecord
+{
+ uint16_t networkAddress;
+ chip::EndpointId endpointId;
+ uint16_t profileId;
+ uint16_t deviceId;
+ uint8_t version;
+} EmberAfEndpointInformationRecord;
+
+// Void typedef for EmberAfEphemeralData which is empty.
+// this will result in all the references to the data being as uint8_t*
+typedef uint8_t EmberAfEphemeralData;
+
+// Struct for EventConfigurationPayload
+typedef struct _EventConfigurationPayload
+{
+ uint16_t eventId;
+ uint8_t eventConfiguration;
+} EmberAfEventConfigurationPayload;
+
+// Struct for EventLogPayload
+typedef struct _EventLogPayload
+{
+ uint8_t logId;
+ uint16_t eventId;
+ uint32_t eventTime;
+ uint8_t * eventData;
+} EmberAfEventLogPayload;
+
+// Struct for ExtendedDiscoverAttributesInfoRecord
+typedef struct _ExtendedDiscoverAttributesInfoRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint8_t attributeAccessControl;
+} EmberAfExtendedDiscoverAttributesInfoRecord;
+
+// Struct for GpPairingConfigurationGroupList
+typedef struct _GpPairingConfigurationGroupList
+{
+ uint16_t SinkGroup;
+ uint16_t Alias;
+} EmberAfGpPairingConfigurationGroupList;
+
+// Struct for GpTranslationTableUpdateTranslation
+typedef struct _GpTranslationTableUpdateTranslation
+{
+ uint8_t index;
+ uint8_t gpdCommandId;
+ chip::EndpointId endpoint;
+ uint16_t profile;
+ uint16_t cluster;
+ uint8_t zigbeeCommandId;
+ uint8_t * zigbeeCommandPayload;
+ uint8_t * additionalInfoBlock;
+} EmberAfGpTranslationTableUpdateTranslation;
+
+// Struct for GroupInformationRecord
+typedef struct _GroupInformationRecord
+{
+ chip::GroupId groupId;
+ uint8_t groupType;
+} EmberAfGroupInformationRecord;
+
+// Struct for IasAceZoneStatusResult
+typedef struct _IasAceZoneStatusResult
+{
+ uint8_t zoneId;
+ uint16_t zoneStatus;
+} EmberAfIasAceZoneStatusResult;
+
+// Void typedef for EmberAfIdentity which is empty.
+// this will result in all the references to the data being as uint8_t*
+typedef uint8_t EmberAfIdentity;
+
+// Struct for NeighborInfo
+typedef struct _NeighborInfo
+{
+ uint64_t neighbor;
+ int16_t x;
+ int16_t y;
+ int16_t z;
+ int8_t rssi;
+ uint8_t numberRssiMeasurements;
+} EmberAfNeighborInfo;
+
+// Struct for NodeInformation
+typedef struct _NodeInformation
+{
+ uint16_t uid;
+ uint16_t address;
+ chip::EndpointId endpoint;
+ uint8_t * nickname;
+} EmberAfNodeInformation;
+
+// Struct for Notification
+typedef struct _Notification
+{
+ uint16_t contentId;
+ uint8_t statusFeedback;
+} EmberAfNotification;
+
+// Struct for PowerProfileRecord
+typedef struct _PowerProfileRecord
+{
+ uint8_t powerProfileId;
+ uint8_t energyPhaseId;
+ uint8_t powerProfileRemoteControl;
+ uint8_t powerProfileState;
+} EmberAfPowerProfileRecord;
+
+// Struct for PriceMatrixSubPayload
+typedef struct _PriceMatrixSubPayload
+{
+ uint8_t tierBlockId;
+ uint32_t price;
+} EmberAfPriceMatrixSubPayload;
+
+// Struct for Protocol
+typedef struct _Protocol
+{
+ uint16_t manufacturerCode;
+ uint8_t protocolId;
+} EmberAfProtocol;
+
+// Struct for ReadAttributeStatusRecord
+typedef struct _ReadAttributeStatusRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t status;
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfReadAttributeStatusRecord;
+
+// Struct for ReadReportingConfigurationAttributeRecord
+typedef struct _ReadReportingConfigurationAttributeRecord
+{
+ uint8_t direction;
+ chip::AttributeId attributeId;
+} EmberAfReadReportingConfigurationAttributeRecord;
+
+// Struct for ReadReportingConfigurationRecord
+typedef struct _ReadReportingConfigurationRecord
+{
+ uint8_t status;
+ uint8_t direction;
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint16_t minimumReportingInterval;
+ uint16_t maximumReportingInterval;
+ uint8_t * reportableChangeLocation;
+ uint16_t timeoutPeriod;
+} EmberAfReadReportingConfigurationRecord;
+
+// Struct for ReadStructuredAttributeRecord
+typedef struct _ReadStructuredAttributeRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t indicator;
+ uint16_t indicies;
+} EmberAfReadStructuredAttributeRecord;
+
+// Struct for ReportAttributeRecord
+typedef struct _ReportAttributeRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfReportAttributeRecord;
+
+// Struct for SceneExtensionAttributeInfo
+typedef struct _SceneExtensionAttributeInfo
+{
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfSceneExtensionAttributeInfo;
+
+// Struct for SceneExtensionFieldSet
+typedef struct _SceneExtensionFieldSet
+{
+ chip::ClusterId clusterId;
+ uint8_t length;
+ uint8_t value;
+} EmberAfSceneExtensionFieldSet;
+
+// Struct for ScheduleEntry
+typedef struct _ScheduleEntry
+{
+ uint16_t startTime;
+ uint8_t activePriceTierOrFriendlyCreditEnable;
+} EmberAfScheduleEntry;
+
+// Struct for ScheduleEntryAuxilliaryLoadSwitchTimes
+typedef struct _ScheduleEntryAuxilliaryLoadSwitchTimes
+{
+ uint16_t startTime;
+ uint8_t auxiliaryLoadSwitchState;
+} EmberAfScheduleEntryAuxilliaryLoadSwitchTimes;
+
+// Struct for ScheduleEntryFriendlyCreditSwitchTimes
+typedef struct _ScheduleEntryFriendlyCreditSwitchTimes
+{
+ uint16_t startTime;
+ uint8_t friendlyCreditEnable;
+} EmberAfScheduleEntryFriendlyCreditSwitchTimes;
+
+// Struct for ScheduleEntryRateSwitchTimes
+typedef struct _ScheduleEntryRateSwitchTimes
+{
+ uint16_t startTime;
+ uint8_t priceTier;
+} EmberAfScheduleEntryRateSwitchTimes;
+
+// Struct for ScheduledPhase
+typedef struct _ScheduledPhase
+{
+ uint8_t energyPhaseId;
+ uint16_t scheduledTime;
+} EmberAfScheduledPhase;
+
+// Struct for SeasonEntry
+typedef struct _SeasonEntry
+{
+ uint32_t seasonStartDate;
+ uint8_t weekIdRef;
+} EmberAfSeasonEntry;
+
+// Void typedef for EmberAfSignature which is empty.
+// this will result in all the references to the data being as uint8_t*
+typedef uint8_t EmberAfSignature;
+
+// Void typedef for EmberAfSmac which is empty.
+// this will result in all the references to the data being as uint8_t*
+typedef uint8_t EmberAfSmac;
+
+// Struct for SnapshotResponsePayload
+typedef struct _SnapshotResponsePayload
+{
+ uint8_t snapshotScheduleId;
+ uint8_t snapshotScheduleConfirmation;
+} EmberAfSnapshotResponsePayload;
+
+// Struct for SnapshotSchedulePayload
+typedef struct _SnapshotSchedulePayload
+{
+ uint8_t snapshotScheduleId;
+ uint32_t snapshotStartTime;
+ uint32_t snapshotSchedule;
+ uint8_t snapshotPayloadType;
+ uint32_t snapshotCause;
+} EmberAfSnapshotSchedulePayload;
+
+// Struct for SpecialDay
+typedef struct _SpecialDay
+{
+ uint32_t specialDayDate;
+ uint8_t dayIdRef;
+} EmberAfSpecialDay;
+
+// Struct for TierLabelsPayload
+typedef struct _TierLabelsPayload
+{
+ uint8_t tierId;
+ uint8_t * tierLabel;
+} EmberAfTierLabelsPayload;
+
+// Struct for TopUpPayload
+typedef struct _TopUpPayload
+{
+ uint8_t * topUpCode;
+ int32_t topUpAmount;
+ uint32_t topUpTime;
+} EmberAfTopUpPayload;
+
+// Struct for TransferredPhase
+typedef struct _TransferredPhase
+{
+ uint8_t energyPhaseId;
+ uint8_t macroPhaseId;
+ uint16_t expectedDuration;
+ uint16_t peakPower;
+ uint16_t energy;
+ uint16_t maxActivationDelay;
+} EmberAfTransferredPhase;
+
+// Struct for WriteAttributeRecord
+typedef struct _WriteAttributeRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfWriteAttributeRecord;
+
+// Struct for WriteAttributeStatusRecord
+typedef struct _WriteAttributeStatusRecord
+{
+ uint8_t status;
+ chip::AttributeId attributeId;
+} EmberAfWriteAttributeStatusRecord;
+
+// Struct for WriteStructuredAttributeRecord
+typedef struct _WriteStructuredAttributeRecord
+{
+ chip::AttributeId attributeId;
+ uint8_t indicator;
+ uint16_t indicies;
+ uint8_t attributeType;
+ uint8_t * attributeLocation;
+} EmberAfWriteStructuredAttributeRecord;
+
+// Struct for WriteStructuredAttributeStatusRecord
+typedef struct _WriteStructuredAttributeStatusRecord
+{
+ uint8_t status;
+ chip::AttributeId attributeId;
+ uint8_t indicator;
+ uint16_t indicies;
+} EmberAfWriteStructuredAttributeStatusRecord;
+
+// Struct for WwahBeaconSurvey
+typedef struct _WwahBeaconSurvey
+{
+ uint16_t deviceShort;
+ uint8_t rssi;
+ uint8_t classificationMask;
+} EmberAfWwahBeaconSurvey;
+
+// Struct for WwahClusterStatusToUseTC
+typedef struct _WwahClusterStatusToUseTC
+{
+ chip::ClusterId clusterId;
+ uint8_t status;
+} EmberAfWwahClusterStatusToUseTC;
diff --git a/src/darwin/Framework/CHIP/gen/att-storage.h b/src/darwin/Framework/CHIP/gen/att-storage.h
new file mode 100644
index 0000000..bd817b7
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/att-storage.h
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Attribute masks modify how attributes are used by the framework
+//
+// Attribute that has this mask is NOT read-only
+#define ATTRIBUTE_MASK_WRITABLE (0x01)
+// Attribute that has this mask is saved to a token
+#define ATTRIBUTE_MASK_TOKENIZE (0x02)
+// Attribute that has this mask has a min/max values
+#define ATTRIBUTE_MASK_MIN_MAX (0x04)
+// Manufacturer specific attribute
+#define ATTRIBUTE_MASK_MANUFACTURER_SPECIFIC (0x08)
+// Attribute deferred to external storage
+#define ATTRIBUTE_MASK_EXTERNAL_STORAGE (0x10)
+// Attribute is singleton
+#define ATTRIBUTE_MASK_SINGLETON (0x20)
+// Attribute is a client attribute
+#define ATTRIBUTE_MASK_CLIENT (0x40)
+
+// Cluster masks modify how clusters are used by the framework
+//
+// Does this cluster have init function?
+#define CLUSTER_MASK_INIT_FUNCTION (0x01)
+// Does this cluster have attribute changed function?
+#define CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION (0x02)
+// Does this cluster have default response function?
+#define CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION (0x04)
+// Does this cluster have message sent function?
+#define CLUSTER_MASK_MESSAGE_SENT_FUNCTION (0x08)
+// Does this cluster have manufacturer specific attribute changed function?
+#define CLUSTER_MASK_MANUFACTURER_SPECIFIC_ATTRIBUTE_CHANGED_FUNCTION (0x10)
+// Does this cluster have pre-attribute changed function?
+#define CLUSTER_MASK_PRE_ATTRIBUTE_CHANGED_FUNCTION (0x20)
+// Cluster is a server
+#define CLUSTER_MASK_SERVER (0x40)
+// Cluster is a client
+#define CLUSTER_MASK_CLIENT (0x80)
+
+// Command masks modify meanings of commands
+//
+// Is sending of this client command supported
+#define COMMAND_MASK_OUTGOING_CLIENT (0x01)
+// Is sending of this server command supported
+#define COMMAND_MASK_OUTGOING_SERVER (0x02)
+// Is receiving of this client command supported
+#define COMMAND_MASK_INCOMING_CLIENT (0x04)
+// Is receiving of this server command supported
+#define COMMAND_MASK_INCOMING_SERVER (0x08)
+// Is this command manufacturer specific?
+#define COMMAND_MASK_MANUFACTURER_SPECIFIC (0x10)
diff --git a/src/darwin/Framework/CHIP/gen/attribute-id.h b/src/darwin/Framework/CHIP/gen/attribute-id.h
new file mode 100644
index 0000000..0fd456c
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/attribute-id.h
@@ -0,0 +1,4121 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Global cluster attribute ids
+#define ZCL_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD)
+#define ZCL_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD)
+#define ZCL_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE)
+#define ZCL_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE)
+
+// Attribute ids for cluster: Basic
+
+// Client attributes
+
+// Server attributes
+#define ZCL_VERSION_ATTRIBUTE_ID (0x0000)
+#define ZCL_APPLICATION_VERSION_ATTRIBUTE_ID (0x0001)
+#define ZCL_STACK_VERSION_ATTRIBUTE_ID (0x0002)
+#define ZCL_HW_VERSION_ATTRIBUTE_ID (0x0003)
+#define ZCL_MANUFACTURER_NAME_ATTRIBUTE_ID (0x0004)
+#define ZCL_MODEL_IDENTIFIER_ATTRIBUTE_ID (0x0005)
+#define ZCL_DATE_CODE_ATTRIBUTE_ID (0x0006)
+#define ZCL_POWER_SOURCE_ATTRIBUTE_ID (0x0007)
+#define ZCL_GENERIC_DEVICE_CLASS_ATTRIBUTE_ID (0x0008)
+#define ZCL_GENERIC_DEVICE_TYPE_ATTRIBUTE_ID (0x0009)
+#define ZCL_PRODUCT_CODE_ATTRIBUTE_ID (0x000A)
+#define ZCL_PRODUCT_URL_ATTRIBUTE_ID (0x000B)
+#define ZCL_LOCATION_DESCRIPTION_ATTRIBUTE_ID (0x0010)
+#define ZCL_PHYSICAL_ENVIRONMENT_ATTRIBUTE_ID (0x0011)
+#define ZCL_DEVICE_ENABLED_ATTRIBUTE_ID (0x0012)
+#define ZCL_ALARM_MASK_ATTRIBUTE_ID (0x0013)
+#define ZCL_DISABLE_LOCAL_CONFIG_ATTRIBUTE_ID (0x0014)
+#define ZCL_SW_BUILD_ID_ATTRIBUTE_ID (0x4000)
+
+// Attribute ids for cluster: Power Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MAINS_VOLTAGE_ATTRIBUTE_ID (0x0000)
+#define ZCL_MAINS_FREQUENCY_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAINS_ALARM_MASK_ATTRIBUTE_ID (0x0010)
+#define ZCL_MAINS_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x0011)
+#define ZCL_MAINS_VOLTAGE_MAX_THRESHOLD_ATTRIBUTE_ID (0x0012)
+#define ZCL_MAINS_VOLTAGE_DWELL_TRIP_POINT_ATTRIBUTE_ID (0x0013)
+#define ZCL_BATTERY_VOLTAGE_ATTRIBUTE_ID (0x0020)
+#define ZCL_BATTERY_PERCENTAGE_REMAINING_ATTRIBUTE_ID (0x0021)
+#define ZCL_BATTERY_MANUFACTURER_ATTRIBUTE_ID (0x0030)
+#define ZCL_BATTERY_SIZE_ATTRIBUTE_ID (0x0031)
+#define ZCL_BATTERY_AHR_RATING_ATTRIBUTE_ID (0x0032)
+#define ZCL_BATTERY_QUANTITY_ATTRIBUTE_ID (0x0033)
+#define ZCL_BATTERY_RATED_VOLTAGE_ATTRIBUTE_ID (0x0034)
+#define ZCL_BATTERY_ALARM_MASK_ATTRIBUTE_ID (0x0035)
+#define ZCL_BATTERY_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x0036)
+#define ZCL_BATTERY_VOLTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x0037)
+#define ZCL_BATTERY_VOLTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x0038)
+#define ZCL_BATTERY_VOLTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x0039)
+#define ZCL_BATTERY_PERCENTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x003A)
+#define ZCL_BATTERY_PERCENTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x003B)
+#define ZCL_BATTERY_PERCENTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x003C)
+#define ZCL_BATTERY_PERCENTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x003D)
+#define ZCL_BATTERY_ALARM_STATE_ATTRIBUTE_ID (0x003E)
+#define ZCL_BATTERY_2_VOLTAGE_ATTRIBUTE_ID (0x0040)
+#define ZCL_BATTERY_2_PERCENTAGE_REMAINING_ATTRIBUTE_ID (0x0041)
+#define ZCL_BATTERY_2_MANUFACTURER_ATTRIBUTE_ID (0x0050)
+#define ZCL_BATTERY_2_SIZE_ATTRIBUTE_ID (0x0051)
+#define ZCL_BATTERY_2_AHR_RATING_ATTRIBUTE_ID (0x0052)
+#define ZCL_BATTERY_2_QUANTITY_ATTRIBUTE_ID (0x0053)
+#define ZCL_BATTERY_2_RATED_VOLTAGE_ATTRIBUTE_ID (0x0054)
+#define ZCL_BATTERY_2_ALARM_MASK_ATTRIBUTE_ID (0x0055)
+#define ZCL_BATTERY_2_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x0056)
+#define ZCL_BATTERY_2_VOLTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x0057)
+#define ZCL_BATTERY_2_VOLTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x0058)
+#define ZCL_BATTERY_2_VOLTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x0059)
+#define ZCL_BATTERY_2_PERCENTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x005A)
+#define ZCL_BATTERY_2_PERCENTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x005B)
+#define ZCL_BATTERY_2_PERCENTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x005C)
+#define ZCL_BATTERY_2_PERCENTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x005D)
+#define ZCL_BATTERY_2_ALARM_STATE_ATTRIBUTE_ID (0x005E)
+#define ZCL_BATTERY_3_VOLTAGE_ATTRIBUTE_ID (0x0060)
+#define ZCL_BATTERY_3_PERCENTAGE_REMAINING_ATTRIBUTE_ID (0x0061)
+#define ZCL_BATTERY_3_MANUFACTURER_ATTRIBUTE_ID (0x0070)
+#define ZCL_BATTERY_3_SIZE_ATTRIBUTE_ID (0x0071)
+#define ZCL_BATTERY_3_AHR_RATING_ATTRIBUTE_ID (0x0072)
+#define ZCL_BATTERY_3_QUANTITY_ATTRIBUTE_ID (0x0073)
+#define ZCL_BATTERY_3_RATED_VOLTAGE_ATTRIBUTE_ID (0x0074)
+#define ZCL_BATTERY_3_ALARM_MASK_ATTRIBUTE_ID (0x0075)
+#define ZCL_BATTERY_3_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x0076)
+#define ZCL_BATTERY_3_VOLTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x0077)
+#define ZCL_BATTERY_3_VOLTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x0078)
+#define ZCL_BATTERY_3_VOLTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x0079)
+#define ZCL_BATTERY_3_PERCENTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x007A)
+#define ZCL_BATTERY_3_PERCENTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x007B)
+#define ZCL_BATTERY_3_PERCENTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x007C)
+#define ZCL_BATTERY_3_PERCENTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x007D)
+#define ZCL_BATTERY_3_ALARM_STATE_ATTRIBUTE_ID (0x007E)
+
+// Attribute ids for cluster: Device Temperature Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CURRENT_TEMPERATURE_ATTRIBUTE_ID (0x0000)
+#define ZCL_MIN_TEMP_EXPERIENCED_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAX_TEMP_EXPERIENCED_ATTRIBUTE_ID (0x0002)
+#define ZCL_OVER_TEMP_TOTAL_DWELL_ATTRIBUTE_ID (0x0003)
+#define ZCL_DEVICE_TEMP_ALARM_MASK_ATTRIBUTE_ID (0x0010)
+#define ZCL_LOW_TEMP_THRESHOLD_ATTRIBUTE_ID (0x0011)
+#define ZCL_HIGH_TEMP_THRESHOLD_ATTRIBUTE_ID (0x0012)
+#define ZCL_LOW_TEMP_DWELL_TRIP_POINT_ATTRIBUTE_ID (0x0013)
+#define ZCL_HIGH_TEMP_DWELL_TRIP_POINT_ATTRIBUTE_ID (0x0014)
+
+// Attribute ids for cluster: Identify
+
+// Client attributes
+
+// Server attributes
+#define ZCL_IDENTIFY_TIME_ATTRIBUTE_ID (0x0000)
+#define ZCL_COMMISSION_STATE_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Groups
+
+// Client attributes
+
+// Server attributes
+#define ZCL_GROUP_NAME_SUPPORT_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Scenes
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SCENE_COUNT_ATTRIBUTE_ID (0x0000)
+#define ZCL_CURRENT_SCENE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CURRENT_GROUP_ATTRIBUTE_ID (0x0002)
+#define ZCL_SCENE_VALID_ATTRIBUTE_ID (0x0003)
+#define ZCL_SCENE_NAME_SUPPORT_ATTRIBUTE_ID (0x0004)
+#define ZCL_LAST_CONFIGURED_BY_ATTRIBUTE_ID (0x0005)
+
+// Attribute ids for cluster: On/off
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ON_OFF_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_2_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_3_ATTRIBUTE_ID (0x0001)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_4_ATTRIBUTE_ID (0x0001)
+#define ZCL_GLOBAL_SCENE_CONTROL_ATTRIBUTE_ID (0x4000)
+#define ZCL_ON_TIME_ATTRIBUTE_ID (0x4001)
+#define ZCL_OFF_WAIT_TIME_ATTRIBUTE_ID (0x4002)
+#define ZCL_START_UP_ON_OFF_ATTRIBUTE_ID (0x4003)
+
+// Attribute ids for cluster: On/off Switch Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SWITCH_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SWITCH_ACTIONS_ATTRIBUTE_ID (0x0010)
+
+// Attribute ids for cluster: Level Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CURRENT_LEVEL_ATTRIBUTE_ID (0x0000)
+#define ZCL_LEVEL_CONTROL_REMAINING_TIME_ATTRIBUTE_ID (0x0001)
+#define ZCL_OPTIONS_ATTRIBUTE_ID (0x000F)
+#define ZCL_ON_OFF_TRANSITION_TIME_ATTRIBUTE_ID (0x0010)
+#define ZCL_ON_LEVEL_ATTRIBUTE_ID (0x0011)
+#define ZCL_ON_TRANSITION_TIME_ATTRIBUTE_ID (0x0012)
+#define ZCL_OFF_TRANSITION_TIME_ATTRIBUTE_ID (0x0013)
+#define ZCL_DEFAULT_MOVE_RATE_ATTRIBUTE_ID (0x0014)
+#define ZCL_START_UP_CURRENT_LEVEL_ATTRIBUTE_ID (0x4000)
+
+// Attribute ids for cluster: Alarms
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ALARM_COUNT_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Time
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TIME_ATTRIBUTE_ID (0x0000)
+#define ZCL_TIME_STATUS_ATTRIBUTE_ID (0x0001)
+#define ZCL_TIME_ZONE_ATTRIBUTE_ID (0x0002)
+#define ZCL_DST_START_ATTRIBUTE_ID (0x0003)
+#define ZCL_DST_END_ATTRIBUTE_ID (0x0004)
+#define ZCL_DST_SHIFT_ATTRIBUTE_ID (0x0005)
+#define ZCL_STANDARD_TIME_ATTRIBUTE_ID (0x0006)
+#define ZCL_LOCAL_TIME_ATTRIBUTE_ID (0x0007)
+#define ZCL_LAST_SET_TIME_ATTRIBUTE_ID (0x0008)
+#define ZCL_VALID_UNTIL_TIME_ATTRIBUTE_ID (0x0009)
+
+// Attribute ids for cluster: RSSI Location
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOCATION_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LOCATION_METHOD_ATTRIBUTE_ID (0x0001)
+#define ZCL_LOCATION_AGE_ATTRIBUTE_ID (0x0002)
+#define ZCL_QUALITY_MEASURE_ATTRIBUTE_ID (0x0003)
+#define ZCL_NUMBER_OF_DEVICES_ATTRIBUTE_ID (0x0004)
+#define ZCL_COORDINATE1_ATTRIBUTE_ID (0x0010)
+#define ZCL_COORDINATE2_ATTRIBUTE_ID (0x0011)
+#define ZCL_COORDINATE3_ATTRIBUTE_ID (0x0012)
+#define ZCL_POWER_ATTRIBUTE_ID (0x0013)
+#define ZCL_PATH_LOSS_EXPONENT_ATTRIBUTE_ID (0x0014)
+#define ZCL_REPORTING_PERIOD_ATTRIBUTE_ID (0x0015)
+#define ZCL_CALCULATION_PERIOD_ATTRIBUTE_ID (0x0016)
+#define ZCL_NUMBER_RSSI_MEASUREMENTS_ATTRIBUTE_ID (0x0017)
+
+// Attribute ids for cluster: Binary Input (Basic)
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ACTIVE_TEXT_ATTRIBUTE_ID (0x0004)
+#define ZCL_DESCRIPTION_ATTRIBUTE_ID (0x001C)
+#define ZCL_INACTIVE_TEXT_ATTRIBUTE_ID (0x002E)
+#define ZCL_OUT_OF_SERVICE_ATTRIBUTE_ID (0x0051)
+#define ZCL_POLARITY_ATTRIBUTE_ID (0x0054)
+#define ZCL_PRESENT_VALUE_ATTRIBUTE_ID (0x0055)
+#define ZCL_RELIABILITY_ATTRIBUTE_ID (0x0067)
+#define ZCL_STATUS_FLAGS_ATTRIBUTE_ID (0x006F)
+#define ZCL_APPLICATION_TYPE_ATTRIBUTE_ID (0x0100)
+
+// Attribute ids for cluster: Commissioning
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SHORT_ADDRESS_ATTRIBUTE_ID (0x0000)
+#define ZCL_EXTENDED_PAN_ID_ATTRIBUTE_ID (0x0001)
+#define ZCL_PAN_ID_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHANNEL_MASK_ATTRIBUTE_ID (0x0003)
+#define ZCL_PROTOCOL_VERSION_ATTRIBUTE_ID (0x0004)
+#define ZCL_STACK_PROFILE_ATTRIBUTE_ID (0x0005)
+#define ZCL_STARTUP_CONTROL_ATTRIBUTE_ID (0x0006)
+#define ZCL_TRUST_CENTER_ADDRESS_ATTRIBUTE_ID (0x0010)
+#define ZCL_TRUST_CENTER_MASTER_KEY_ATTRIBUTE_ID (0x0011)
+#define ZCL_NETWORK_KEY_ATTRIBUTE_ID (0x0012)
+#define ZCL_USE_INSECURE_JOIN_ATTRIBUTE_ID (0x0013)
+#define ZCL_PRECONFIGURED_LINK_KEY_ATTRIBUTE_ID (0x0014)
+#define ZCL_NETWORK_KEY_SEQUENCE_NUMBER_ATTRIBUTE_ID (0x0015)
+#define ZCL_NETWORK_KEY_TYPE_ATTRIBUTE_ID (0x0016)
+#define ZCL_NETWORK_MANAGER_ADDRESS_ATTRIBUTE_ID (0x0017)
+#define ZCL_SCAN_ATTEMPTS_ATTRIBUTE_ID (0x0020)
+#define ZCL_TIME_BETWEEN_SCANS_ATTRIBUTE_ID (0x0021)
+#define ZCL_REJOIN_INTERVAL_ATTRIBUTE_ID (0x0022)
+#define ZCL_MAX_REJOIN_INTERVAL_ATTRIBUTE_ID (0x0023)
+#define ZCL_INDIRECT_POLL_RATE_ATTRIBUTE_ID (0x0030)
+#define ZCL_PARENT_RETRY_THRESHOLD_ATTRIBUTE_ID (0x0031)
+#define ZCL_CONCENTRATOR_FLAG_ATTRIBUTE_ID (0x0040)
+#define ZCL_CONCENTRATOR_RADIUS_ATTRIBUTE_ID (0x0041)
+#define ZCL_CONCENTRATOR_DISCOVERY_TIME_ATTRIBUTE_ID (0x0042)
+
+// Attribute ids for cluster: Partition
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PARTITION_MAXIMUM_INCOMING_TRANSFER_SIZE_ATTRIBUTE_ID (0x0000)
+#define ZCL_PARTITION_MAXIMUM_OUTGOING_TRANSFER_SIZE_ATTRIBUTE_ID (0x0001)
+#define ZCL_PARTIONED_FRAME_SIZE_ATTRIBUTE_ID (0x0002)
+#define ZCL_LARGE_FRAME_SIZE_ATTRIBUTE_ID (0x0003)
+#define ZCL_NUMBER_OF_ACK_FRAME_ATTRIBUTE_ID (0x0004)
+#define ZCL_NACK_TIMEOUT_ATTRIBUTE_ID (0x0005)
+#define ZCL_INTERFRAME_DELAY_ATTRIBUTE_ID (0x0006)
+#define ZCL_NUMBER_OF_SEND_RETRIES_ATTRIBUTE_ID (0x0007)
+#define ZCL_SENDER_TIMEOUT_ATTRIBUTE_ID (0x0008)
+#define ZCL_RECEIVER_TIMEOUT_ATTRIBUTE_ID (0x0009)
+
+// Attribute ids for cluster: Over the Air Bootloading
+
+// Client attributes
+#define ZCL_UPGRADE_SERVER_ID_ATTRIBUTE_ID (0x0000)
+#define ZCL_FILE_OFFSET_ATTRIBUTE_ID (0x0001)
+#define ZCL_CURRENT_FILE_VERSION_ATTRIBUTE_ID (0x0002)
+#define ZCL_CURRENT_ZIGBEE_STACK_VERSION_ATTRIBUTE_ID (0x0003)
+#define ZCL_DOWNLOADED_FILE_VERSION_ATTRIBUTE_ID (0x0004)
+#define ZCL_DOWNLOADED_ZIGBEE_STACK_VERSION_ATTRIBUTE_ID (0x0005)
+#define ZCL_IMAGE_UPGRADE_STATUS_ATTRIBUTE_ID (0x0006)
+#define ZCL_MANUFACTURER_ID_ATTRIBUTE_ID (0x0007)
+#define ZCL_IMAGE_TYPE_ID_ATTRIBUTE_ID (0x0008)
+#define ZCL_MINIMUM_BLOCK_REQUEST_PERIOD_ATTRIBUTE_ID (0x0009)
+#define ZCL_IMAGE_STAMP_ATTRIBUTE_ID (0x000A)
+#define ZCL_UPGRADE_ACTIVATION_POLICY_ATTRIBUTE_ID (0x000B)
+#define ZCL_UPGRADE_TIMEOUT_POLICY_ATTRIBUTE_ID (0x000C)
+
+// Server attributes
+
+// Attribute ids for cluster: Power Profile
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TOTAL_PROFILE_NUM_ATTRIBUTE_ID (0x0000)
+#define ZCL_MULTIPLE_SCHEDULING_ATTRIBUTE_ID (0x0001)
+#define ZCL_ENERGY_FORMATTING_ATTRIBUTE_ID (0x0002)
+#define ZCL_ENERGY_REMOTE_ATTRIBUTE_ID (0x0003)
+#define ZCL_SCHEDULE_MODE_ATTRIBUTE_ID (0x0004)
+
+// Attribute ids for cluster: Appliance Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_START_TIME_ATTRIBUTE_ID (0x0000)
+#define ZCL_FINISH_TIME_ATTRIBUTE_ID (0x0001)
+#define ZCL_REMAINING_TIME_ATTRIBUTE_ID (0x0002)
+
+// Attribute ids for cluster: Poll Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHECK_IN_INTERVAL_ATTRIBUTE_ID (0x0000)
+#define ZCL_LONG_POLL_INTERVAL_ATTRIBUTE_ID (0x0001)
+#define ZCL_SHORT_POLL_INTERVAL_ATTRIBUTE_ID (0x0002)
+#define ZCL_FAST_POLL_TIMEOUT_ATTRIBUTE_ID (0x0003)
+#define ZCL_CHECK_IN_INTERVAL_MIN_ATTRIBUTE_ID (0x0004)
+#define ZCL_LONG_POLL_INTERVAL_MIN_ATTRIBUTE_ID (0x0005)
+#define ZCL_FAST_POLL_TIMEOUT_MAX_ATTRIBUTE_ID (0x0006)
+
+// Attribute ids for cluster: Green Power
+
+// Client attributes
+#define ZCL_GP_CLIENT_GPP_MAX_PROXY_TABLE_ENTRIES_ATTRIBUTE_ID (0x0010)
+#define ZCL_GP_CLIENT_PROXY_TABLE_ATTRIBUTE_ID (0x0011)
+#define ZCL_GP_CLIENT_GPP_NOTIFICATION_RETRY_NUMBER_ATTRIBUTE_ID (0x0012)
+#define ZCL_GP_CLIENT_GPP_NOTIFICATION_RETRY_TIMER_ATTRIBUTE_ID (0x0013)
+#define ZCL_GP_CLIENT_GPP_MAX_SEARCH_COUNTER_ATTRIBUTE_ID (0x0014)
+#define ZCL_GP_CLIENT_GPP_BLOCKED_GPD_ID_ATTRIBUTE_ID (0x0015)
+#define ZCL_GP_CLIENT_GPP_FUNCTIONALITY_ATTRIBUTE_ID (0x0016)
+#define ZCL_GP_CLIENT_GPP_ACTIVE_FUNCTIONALITY_ATTRIBUTE_ID (0x0017)
+#define ZCL_GP_CLIENT_GP_SHARED_SECURITY_KEY_TYPE_ATTRIBUTE_ID (0x0020)
+#define ZCL_GP_CLIENT_GP_SHARED_SECURITY_KEY_ATTRIBUTE_ID (0x0021)
+#define ZCL_GP_CLIENT_GP_LINK_KEY_ATTRIBUTE_ID (0x0022)
+
+// Server attributes
+#define ZCL_GP_SERVER_GPS_MAX_SINK_TABLE_ENTRIES_ATTRIBUTE_ID (0x0000)
+#define ZCL_GP_SERVER_SINK_TABLE_ATTRIBUTE_ID (0x0001)
+#define ZCL_GP_SERVER_GPS_COMMUNICATION_MODE_ATTRIBUTE_ID (0x0002)
+#define ZCL_GP_SERVER_GPS_COMMISSIONING_EXIT_MODE_ATTRIBUTE_ID (0x0003)
+#define ZCL_GP_SERVER_GPS_COMMISSIONING_WINDOW_ATTRIBUTE_ID (0x0004)
+#define ZCL_GP_SERVER_GPS_SECURITY_LEVEL_ATTRIBUTE_ID (0x0005)
+#define ZCL_GP_SERVER_GPS_FUNCTIONALITY_ATTRIBUTE_ID (0x0006)
+#define ZCL_GP_SERVER_GPS_ACTIVE_FUNCTIONALITY_ATTRIBUTE_ID (0x0007)
+#define ZCL_GP_SERVER_GP_SHARED_SECURITY_KEY_TYPE_ATTRIBUTE_ID (0x0020)
+#define ZCL_GP_SERVER_GP_SHARED_SECURITY_KEY_ATTRIBUTE_ID (0x0021)
+#define ZCL_GP_SERVER_GP_LINK_KEY_ATTRIBUTE_ID (0x0022)
+
+// Attribute ids for cluster: Keep-Alive
+
+// Client attributes
+
+// Server attributes
+#define ZCL_KEEPALIVE_BASE_ATTRIBUTE_ID (0x0000)
+#define ZCL_KEEPALIVE_JITTER_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Shade Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SHADE_CONFIG_PHYSICAL_CLOSED_LIMIT_ATTRIBUTE_ID (0x0000)
+#define ZCL_SHADE_CONFIG_MOTOR_STEP_SIZE_ATTRIBUTE_ID (0x0001)
+#define ZCL_SHADE_CONFIG_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_SHADE_CONFIG_CLOSED_LIMIT_ATTRIBUTE_ID (0x0010)
+#define ZCL_SHADE_CONFIG_MODE_ATTRIBUTE_ID (0x0011)
+
+// Attribute ids for cluster: Door Lock
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOCK_STATE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LOCK_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ACTUATOR_ENABLED_ATTRIBUTE_ID (0x0002)
+#define ZCL_DOOR_STATE_ATTRIBUTE_ID (0x0003)
+#define ZCL_DOOR_OPEN_EVENTS_ATTRIBUTE_ID (0x0004)
+#define ZCL_DOOR_CLOSED_EVENTS_ATTRIBUTE_ID (0x0005)
+#define ZCL_OPEN_PERIOD_ATTRIBUTE_ID (0x0006)
+#define ZCL_NUM_LOCK_RECORDS_SUPPORTED_ATTRIBUTE_ID (0x0010)
+#define ZCL_NUM_TOTAL_USERS_SUPPORTED_ATTRIBUTE_ID (0x0011)
+#define ZCL_NUM_PIN_USERS_SUPPORTED_ATTRIBUTE_ID (0x0012)
+#define ZCL_NUM_RFID_USERS_SUPPORTED_ATTRIBUTE_ID (0x0013)
+#define ZCL_NUM_WEEKDAY_SCHEDULES_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x0014)
+#define ZCL_NUM_YEARDAY_SCHEDULES_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x0015)
+#define ZCL_NUM_HOLIDAY_SCHEDULES_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x0016)
+#define ZCL_MAX_PIN_LENGTH_ATTRIBUTE_ID (0x0017)
+#define ZCL_MIN_PIN_LENGTH_ATTRIBUTE_ID (0x0018)
+#define ZCL_MAX_RFID_CODE_LENGTH_ATTRIBUTE_ID (0x0019)
+#define ZCL_MIN_RFID_CODE_LENGTH_ATTRIBUTE_ID (0x001A)
+#define ZCL_ENABLE_LOGGING_ATTRIBUTE_ID (0x0020)
+#define ZCL_LANGUAGE_ATTRIBUTE_ID (0x0021)
+#define ZCL_LED_SETTINGS_ATTRIBUTE_ID (0x0022)
+#define ZCL_AUTO_RELOCK_TIME_ATTRIBUTE_ID (0x0023)
+#define ZCL_SOUND_VOLUME_ATTRIBUTE_ID (0x0024)
+#define ZCL_OPERATING_MODE_ATTRIBUTE_ID (0x0025)
+#define ZCL_SUPPORTED_OPERATING_MODES_ATTRIBUTE_ID (0x0026)
+#define ZCL_DEFAULT_CONFIGURATION_REGISTER_ATTRIBUTE_ID (0x0027)
+#define ZCL_ENABLE_LOCAL_PROGRAMMING_ATTRIBUTE_ID (0x0028)
+#define ZCL_ENABLE_ONE_TOUCH_LOCKING_ATTRIBUTE_ID (0x0029)
+#define ZCL_ENABLE_INSIDE_STATUS_LED_ATTRIBUTE_ID (0x002A)
+#define ZCL_ENABLE_PRIVACY_MODE_BUTTON_ATTRIBUTE_ID (0x002B)
+#define ZCL_WRONG_CODE_ENTRY_LIMIT_ATTRIBUTE_ID (0x0030)
+#define ZCL_USER_CODE_TEMPORARY_DISABLE_TIME_ATTRIBUTE_ID (0x0031)
+#define ZCL_SEND_PIN_OVER_THE_AIR_ATTRIBUTE_ID (0x0032)
+#define ZCL_REQUIRE_PIN_FOR_RF_OPERATION_ATTRIBUTE_ID (0x0033)
+#define ZCL_ZIGBEE_SECURITY_LEVEL_ATTRIBUTE_ID (0x0034)
+#define ZCL_DOOR_LOCK_ALARM_MASK_ATTRIBUTE_ID (0x0040)
+#define ZCL_KEYPAD_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x0041)
+#define ZCL_RF_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x0042)
+#define ZCL_MANUAL_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x0043)
+#define ZCL_RFID_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x0044)
+#define ZCL_KEYPAD_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x0045)
+#define ZCL_RF_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x0046)
+#define ZCL_RFID_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x0047)
+
+// Attribute ids for cluster: Window Covering
+
+// Client attributes
+
+// Server attributes
+#define ZCL_COVERING_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LIMIT_LIFT_ATTRIBUTE_ID (0x0001)
+#define ZCL_LIMIT_TILT_ATTRIBUTE_ID (0x0002)
+#define ZCL_CURRENT_LIFT_ATTRIBUTE_ID (0x0003)
+#define ZCL_CURRENT_TILT_ATTRIBUTE_ID (0x0004)
+#define ZCL_NUMBER_LIFT_ATTRIBUTE_ID (0x0005)
+#define ZCL_NUMBER_TILT_ATTRIBUTE_ID (0x0006)
+#define ZCL_CONFIG_STATUS_ATTRIBUTE_ID (0x0007)
+#define ZCL_CURRENT_LIFT_PERCENTAGE_ATTRIBUTE_ID (0x0008)
+#define ZCL_CURRENT_TILT_PERCENTAGE_ATTRIBUTE_ID (0x0009)
+#define ZCL_OPEN_LIMIT_LIFT_ATTRIBUTE_ID (0x0010)
+#define ZCL_CLOSED_LIMIT_LIFT_ATTRIBUTE_ID (0x0011)
+#define ZCL_OPEN_LIMIT_TILT_ATTRIBUTE_ID (0x0012)
+#define ZCL_CLOSED_LIMIT_TILT_ATTRIBUTE_ID (0x0013)
+#define ZCL_VELOCITY_LIFT_ATTRIBUTE_ID (0x0014)
+#define ZCL_ACCELERATION_LIFT_ATTRIBUTE_ID (0x0015)
+#define ZCL_DECELERATION_LIFT_ATTRIBUTE_ID (0x0016)
+#define ZCL_MODE_ATTRIBUTE_ID (0x0017)
+#define ZCL_SETPOINTS_LIFT_ATTRIBUTE_ID (0x0018)
+#define ZCL_SETPOINTS_TILT_ATTRIBUTE_ID (0x0019)
+
+// Attribute ids for cluster: Barrier Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BARRIER_MOVING_STATE_ATTRIBUTE_ID (0x0001)
+#define ZCL_BARRIER_SAFETY_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_BARRIER_CAPABILITIES_ATTRIBUTE_ID (0x0003)
+#define ZCL_BARRIER_OPEN_EVENTS_ATTRIBUTE_ID (0x0004)
+#define ZCL_BARRIER_CLOSE_EVENTS_ATTRIBUTE_ID (0x0005)
+#define ZCL_BARRIER_COMMAND_OPEN_EVENTS_ATTRIBUTE_ID (0x0006)
+#define ZCL_BARRIER_COMMAND_CLOSE_EVENTS_ATTRIBUTE_ID (0x0007)
+#define ZCL_BARRIER_OPEN_PERIOD_ATTRIBUTE_ID (0x0008)
+#define ZCL_BARRIER_CLOSE_PERIOD_ATTRIBUTE_ID (0x0009)
+#define ZCL_BARRIER_POSITION_ATTRIBUTE_ID (0x000A)
+
+// Attribute ids for cluster: Pump Configuration and Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MAX_PRESSURE_ATTRIBUTE_ID (0x0000)
+#define ZCL_MAX_SPEED_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAX_FLOW_ATTRIBUTE_ID (0x0002)
+#define ZCL_MIN_CONST_PRESSURE_ATTRIBUTE_ID (0x0003)
+#define ZCL_MAX_CONST_PRESSURE_ATTRIBUTE_ID (0x0004)
+#define ZCL_MIN_COMP_PRESSURE_ATTRIBUTE_ID (0x0005)
+#define ZCL_MAX_COMP_PRESSURE_ATTRIBUTE_ID (0x0006)
+#define ZCL_MIN_CONST_SPEED_ATTRIBUTE_ID (0x0007)
+#define ZCL_MAX_CONST_SPEED_ATTRIBUTE_ID (0x0008)
+#define ZCL_MIN_CONST_FLOW_ATTRIBUTE_ID (0x0009)
+#define ZCL_MAX_CONST_FLOW_ATTRIBUTE_ID (0x000A)
+#define ZCL_MIN_CONST_TEMP_ATTRIBUTE_ID (0x000B)
+#define ZCL_MAX_CONST_TEMP_ATTRIBUTE_ID (0x000C)
+#define ZCL_PUMP_STATUS_ATTRIBUTE_ID (0x0010)
+#define ZCL_EFFECTIVE_OPERATION_MODE_ATTRIBUTE_ID (0x0011)
+#define ZCL_EFFECTIVE_CONTROL_MODE_ATTRIBUTE_ID (0x0012)
+#define ZCL_CAPACITY_ATTRIBUTE_ID (0x0013)
+#define ZCL_SPEED_ATTRIBUTE_ID (0x0014)
+#define ZCL_LIFETIME_RUNNING_HOURS_ATTRIBUTE_ID (0x0015)
+#define ZCL_PUMP_POWER_ATTRIBUTE_ID (0x0016)
+#define ZCL_LIFETIME_ENERGY_CONSUMED_ATTRIBUTE_ID (0x0017)
+#define ZCL_OPERATION_MODE_ATTRIBUTE_ID (0x0020)
+#define ZCL_CONTROL_MODE_ATTRIBUTE_ID (0x0021)
+#define ZCL_PUMP_ALARM_MASK_ATTRIBUTE_ID (0x0022)
+
+// Attribute ids for cluster: Thermostat
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID (0x0000)
+#define ZCL_OUTDOOR_TEMPERATURE_ATTRIBUTE_ID (0x0001)
+#define ZCL_THERMOSTAT_OCCUPANCY_ATTRIBUTE_ID (0x0002)
+#define ZCL_ABS_MIN_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0003)
+#define ZCL_ABS_MAX_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0004)
+#define ZCL_ABS_MIN_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0005)
+#define ZCL_ABS_MAX_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0006)
+#define ZCL_PI_COOLING_DEMAND_ATTRIBUTE_ID (0x0007)
+#define ZCL_PI_HEATING_DEMAND_ATTRIBUTE_ID (0x0008)
+#define ZCL_HVAC_SYSTEM_TYPE_CONFIGURATION_ATTRIBUTE_ID (0x0009)
+#define ZCL_LOCAL_TEMPERATURE_CALIBRATION_ATTRIBUTE_ID (0x0010)
+#define ZCL_OCCUPIED_COOLING_SETPOINT_ATTRIBUTE_ID (0x0011)
+#define ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID (0x0012)
+#define ZCL_UNOCCUPIED_COOLING_SETPOINT_ATTRIBUTE_ID (0x0013)
+#define ZCL_UNOCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID (0x0014)
+#define ZCL_MIN_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0015)
+#define ZCL_MAX_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0016)
+#define ZCL_MIN_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0017)
+#define ZCL_MAX_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x0018)
+#define ZCL_MIN_SETPOINT_DEAD_BAND_ATTRIBUTE_ID (0x0019)
+#define ZCL_REMOTE_SENSING_ATTRIBUTE_ID (0x001A)
+#define ZCL_CONTROL_SEQUENCE_OF_OPERATION_ATTRIBUTE_ID (0x001B)
+#define ZCL_SYSTEM_MODE_ATTRIBUTE_ID (0x001C)
+#define ZCL_THERMOSTAT_ALARM_MASK_ATTRIBUTE_ID (0x001D)
+#define ZCL_THERMOSTAT_RUNNING_MODE_ATTRIBUTE_ID (0x001E)
+#define ZCL_START_OF_WEEK_ATTRIBUTE_ID (0x0020)
+#define ZCL_NUMBER_OF_WEEKLY_TRANSITIONS_ATTRIBUTE_ID (0x0021)
+#define ZCL_NUMBER_OF_DAILY_TRANSITIONS_ATTRIBUTE_ID (0x0022)
+#define ZCL_TEMPERATURE_SETPOINT_HOLD_ATTRIBUTE_ID (0x0023)
+#define ZCL_TEMPERATURE_SETPOINT_HOLD_DURATION_ATTRIBUTE_ID (0x0024)
+#define ZCL_THERMOSTAT_PROGRAMMING_OPERATION_MODE_ATTRIBUTE_ID (0x0025)
+#define ZCL_THERMOSTAT_RUNNING_STATE_ATTRIBUTE_ID (0x0029)
+#define ZCL_SETPOINT_CHANGE_SOURCE_ATTRIBUTE_ID (0x0030)
+#define ZCL_SETPOINT_CHANGE_AMOUNT_ATTRIBUTE_ID (0x0031)
+#define ZCL_SETPOINT_CHANGE_SOURCE_TIMESTAMP_ATTRIBUTE_ID (0x0032)
+#define ZCL_AC_TYPE_ATTRIBUTE_ID (0x0040)
+#define ZCL_AC_CAPACITY_ATTRIBUTE_ID (0x0041)
+#define ZCL_AC_REFRIGERANT_TYPE_ATTRIBUTE_ID (0x0042)
+#define ZCL_AC_COMPRESSOR_ATTRIBUTE_ID (0x0043)
+#define ZCL_AC_ERROR_CODE_ATTRIBUTE_ID (0x0044)
+#define ZCL_AC_LOUVER_POSITION_ATTRIBUTE_ID (0x0045)
+#define ZCL_AC_COIL_TEMPERATURE_ATTRIBUTE_ID (0x0046)
+#define ZCL_AC_CAPACITY_FORMAT_ATTRIBUTE_ID (0x0047)
+
+// Attribute ids for cluster: Fan Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID (0x0000)
+#define ZCL_FAN_CONTROL_FAN_MODE_SEQUENCE_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Dehumidification Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_RELATIVE_HUMIDITY_ATTRIBUTE_ID (0x0000)
+#define ZCL_DEHUMIDIFICATION_COOLING_ATTRIBUTE_ID (0x0001)
+#define ZCL_RH_DEHUMIDIFICATION_SETPOINT_ATTRIBUTE_ID (0x0010)
+#define ZCL_RELATIVE_HUMIDITY_MODE_ATTRIBUTE_ID (0x0011)
+#define ZCL_DEHUMIDIFICATION_LOCKOUT_ATTRIBUTE_ID (0x0012)
+#define ZCL_DEHUMIDIFICATION_HYSTERESIS_ATTRIBUTE_ID (0x0013)
+#define ZCL_DEHUMIDIFICATION_MAX_COOL_ATTRIBUTE_ID (0x0014)
+#define ZCL_RELATIVE_HUMIDITY_DISPLAY_ATTRIBUTE_ID (0x0015)
+
+// Attribute ids for cluster: Thermostat User Interface Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TEMPERATURE_DISPLAY_MODE_ATTRIBUTE_ID (0x0000)
+#define ZCL_KEYPAD_LOCKOUT_ATTRIBUTE_ID (0x0001)
+#define ZCL_SCHEDULE_PROGRAMMING_VISIBILITY_ATTRIBUTE_ID (0x0002)
+
+// Attribute ids for cluster: Color Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_COLOR_CONTROL_CURRENT_HUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_COLOR_CONTROL_CURRENT_SATURATION_ATTRIBUTE_ID (0x0001)
+#define ZCL_COLOR_CONTROL_REMAINING_TIME_ATTRIBUTE_ID (0x0002)
+#define ZCL_COLOR_CONTROL_CURRENT_X_ATTRIBUTE_ID (0x0003)
+#define ZCL_COLOR_CONTROL_CURRENT_Y_ATTRIBUTE_ID (0x0004)
+#define ZCL_COLOR_CONTROL_DRIFT_COMPENSATION_ATTRIBUTE_ID (0x0005)
+#define ZCL_COLOR_CONTROL_COMPENSATION_TEXT_ATTRIBUTE_ID (0x0006)
+#define ZCL_COLOR_CONTROL_COLOR_TEMPERATURE_ATTRIBUTE_ID (0x0007)
+#define ZCL_COLOR_CONTROL_COLOR_MODE_ATTRIBUTE_ID (0x0008)
+#define ZCL_COLOR_CONTROL_OPTIONS_ATTRIBUTE_ID (0x000F)
+#define ZCL_COLOR_CONTROL_NUMBER_OF_PRIMARIES_ATTRIBUTE_ID (0x0010)
+#define ZCL_COLOR_CONTROL_PRIMARY_1_X_ATTRIBUTE_ID (0x0011)
+#define ZCL_COLOR_CONTROL_PRIMARY_1_Y_ATTRIBUTE_ID (0x0012)
+#define ZCL_COLOR_CONTROL_PRIMARY_1_INTENSITY_ATTRIBUTE_ID (0x0013)
+#define ZCL_COLOR_CONTROL_PRIMARY_2_X_ATTRIBUTE_ID (0x0015)
+#define ZCL_COLOR_CONTROL_PRIMARY_2_Y_ATTRIBUTE_ID (0x0016)
+#define ZCL_COLOR_CONTROL_PRIMARY_2_INTENSITY_ATTRIBUTE_ID (0x0017)
+#define ZCL_COLOR_CONTROL_PRIMARY_3_X_ATTRIBUTE_ID (0x0019)
+#define ZCL_COLOR_CONTROL_PRIMARY_3_Y_ATTRIBUTE_ID (0x001A)
+#define ZCL_COLOR_CONTROL_PRIMARY_3_INTENSITY_ATTRIBUTE_ID (0x001B)
+#define ZCL_COLOR_CONTROL_PRIMARY_4_X_ATTRIBUTE_ID (0x0020)
+#define ZCL_COLOR_CONTROL_PRIMARY_4_Y_ATTRIBUTE_ID (0x0021)
+#define ZCL_COLOR_CONTROL_PRIMARY_4_INTENSITY_ATTRIBUTE_ID (0x0022)
+#define ZCL_COLOR_CONTROL_PRIMARY_5_X_ATTRIBUTE_ID (0x0024)
+#define ZCL_COLOR_CONTROL_PRIMARY_5_Y_ATTRIBUTE_ID (0x0025)
+#define ZCL_COLOR_CONTROL_PRIMARY_5_INTENSITY_ATTRIBUTE_ID (0x0026)
+#define ZCL_COLOR_CONTROL_PRIMARY_6_X_ATTRIBUTE_ID (0x0028)
+#define ZCL_COLOR_CONTROL_PRIMARY_6_Y_ATTRIBUTE_ID (0x0029)
+#define ZCL_COLOR_CONTROL_PRIMARY_6_INTENSITY_ATTRIBUTE_ID (0x002A)
+#define ZCL_COLOR_CONTROL_WHITE_POINT_X_ATTRIBUTE_ID (0x0030)
+#define ZCL_COLOR_CONTROL_WHITE_POINT_Y_ATTRIBUTE_ID (0x0031)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_R_X_ATTRIBUTE_ID (0x0032)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_R_Y_ATTRIBUTE_ID (0x0033)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_R_INTENSITY_ATTRIBUTE_ID (0x0034)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_G_X_ATTRIBUTE_ID (0x0036)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_G_Y_ATTRIBUTE_ID (0x0037)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_G_INTENSITY_ATTRIBUTE_ID (0x0038)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_B_X_ATTRIBUTE_ID (0x003A)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_B_Y_ATTRIBUTE_ID (0x003B)
+#define ZCL_COLOR_CONTROL_COLOR_POINT_B_INTENSITY_ATTRIBUTE_ID (0x003C)
+#define ZCL_COLOR_CONTROL_ENHANCED_CURRENT_HUE_ATTRIBUTE_ID (0x4000)
+#define ZCL_COLOR_CONTROL_ENHANCED_COLOR_MODE_ATTRIBUTE_ID (0x4001)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_ACTIVE_ATTRIBUTE_ID (0x4002)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_DIRECTION_ATTRIBUTE_ID (0x4003)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_TIME_ATTRIBUTE_ID (0x4004)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_START_ENHANCED_HUE_ATTRIBUTE_ID (0x4005)
+#define ZCL_COLOR_CONTROL_COLOR_LOOP_STORED_ENHANCED_HUE_ATTRIBUTE_ID (0x4006)
+#define ZCL_COLOR_CONTROL_COLOR_CAPABILITIES_ATTRIBUTE_ID (0x400A)
+#define ZCL_COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MIN_ATTRIBUTE_ID (0x400B)
+#define ZCL_COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MAX_ATTRIBUTE_ID (0x400C)
+#define ZCL_COLOR_CONTROL_TEMPERATURE_LEVEL_MIN_MIREDS_ATTRIBUTE_ID (0x400D)
+#define ZCL_START_UP_COLOR_TEMPERATURE_MIREDS_ATTRIBUTE_ID (0x4010)
+
+// Attribute ids for cluster: Ballast Configuration
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PHYSICAL_MIN_LEVEL_ATTRIBUTE_ID (0x0000)
+#define ZCL_PHYSICAL_MAX_LEVEL_ATTRIBUTE_ID (0x0001)
+#define ZCL_BALLAST_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_MIN_LEVEL_ATTRIBUTE_ID (0x0010)
+#define ZCL_MAX_LEVEL_ATTRIBUTE_ID (0x0011)
+#define ZCL_POWER_ON_LEVEL_ATTRIBUTE_ID (0x0012)
+#define ZCL_POWER_ON_FADE_TIME_ATTRIBUTE_ID (0x0013)
+#define ZCL_INTRINSIC_BALLAST_FACTOR_ATTRIBUTE_ID (0x0014)
+#define ZCL_BALLAST_FACTOR_ADJUSTMENT_ATTRIBUTE_ID (0x0015)
+#define ZCL_LAMP_QUALITY_ATTRIBUTE_ID (0x0020)
+#define ZCL_LAMP_TYPE_ATTRIBUTE_ID (0x0030)
+#define ZCL_LAMP_MANUFACTURER_ATTRIBUTE_ID (0x0031)
+#define ZCL_LAMP_RATED_HOURS_ATTRIBUTE_ID (0x0032)
+#define ZCL_LAMP_BURN_HOURS_ATTRIBUTE_ID (0x0033)
+#define ZCL_LAMP_ALARM_MODE_ATTRIBUTE_ID (0x0034)
+#define ZCL_LAMP_BURN_HOURS_TRIP_POINT_ATTRIBUTE_ID (0x0035)
+
+// Attribute ids for cluster: Illuminance Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ILLUM_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ILLUM_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ILLUM_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_ILLUM_TOLERANCE_ATTRIBUTE_ID (0x0003)
+#define ZCL_MEASUREMENT_LIGHT_SENSOR_TYPE_ATTRIBUTE_ID (0x0004)
+
+// Attribute ids for cluster: Illuminance Level Sensing
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LEVEL_STATUS_ATTRIBUTE_ID (0x0000)
+#define ZCL_SENSING_LIGHT_SENSOR_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ILLUMINANCE_TARGET_LEVEL_ATTRIBUTE_ID (0x0010)
+
+// Attribute ids for cluster: Temperature Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TEMP_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_TEMP_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_TEMP_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_TEMP_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Pressure Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PRESSURE_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_PRESSURE_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_PRESSURE_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_PRESSURE_TOLERANCE_ATTRIBUTE_ID (0x0003)
+#define ZCL_PRESSURE_SCALED_VALUE_ATTRIBUTE_ID (0x0010)
+#define ZCL_PRESSURE_MIN_SCALED_VALUE_ATTRIBUTE_ID (0x0011)
+#define ZCL_PRESSURE_MAX_SCALED_VALUE_ATTRIBUTE_ID (0x0012)
+#define ZCL_PRESSURE_SCALED_TOLERANCE_ATTRIBUTE_ID (0x0013)
+#define ZCL_PRESSURE_SCALE_ATTRIBUTE_ID (0x0014)
+
+// Attribute ids for cluster: Flow Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_FLOW_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_FLOW_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_FLOW_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_FLOW_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Relative Humidity Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_RELATIVE_HUMIDITY_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_RELATIVE_HUMIDITY_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_RELATIVE_HUMIDITY_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_RELATIVE_HUMIDITY_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Occupancy Sensing
+
+// Client attributes
+
+// Server attributes
+#define ZCL_OCCUPANCY_ATTRIBUTE_ID (0x0000)
+#define ZCL_OCCUPANCY_SENSOR_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_OCCUPANCY_SENSOR_TYPE_BITMAP_ATTRIBUTE_ID (0x0002)
+#define ZCL_PIR_OCCUPIED_TO_UNOCCUPIED_DELAY_ATTRIBUTE_ID (0x0010)
+#define ZCL_PIR_UNOCCUPIED_TO_OCCUPIED_DELAY_ATTRIBUTE_ID (0x0011)
+#define ZCL_PIR_UNOCCUPIED_TO_OCCUPIED_THRESHOLD_ATTRIBUTE_ID (0x0012)
+#define ZCL_ULTRASONIC_OCCUPIED_TO_UNOCCUPIED_DELAY_ATTRIBUTE_ID (0x0020)
+#define ZCL_ULTRASONIC_UNOCCUPIED_TO_OCCUPIED_DELAY_ATTRIBUTE_ID (0x0021)
+#define ZCL_ULTRASONIC_UNOCCUPIED_TO_OCCUPIED_THRESHOLD_ATTRIBUTE_ID (0x0022)
+#define ZCL_PHYSICAL_CONTACT_OCCUPIED_TO_UNOCCUPIED_DELAY_ATTRIBUTE_ID (0x0030)
+#define ZCL_PHYSICAL_CONTACT_UNOCCUPIED_TO_OCCUPIED_DELAY_ATTRIBUTE_ID (0x0031)
+#define ZCL_PHYSICAL_CONTACT_UNOCCUPIED_TO_OCCUPIED_THRESHOLD_ATTRIBUTE_ID (0x0032)
+
+// Attribute ids for cluster: Carbon Monoxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Carbon Dioxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Ethylene Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Ethylene Oxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Hydrogen Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Hydrogen Sulphide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Nitric Oxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Nitrogen Dioxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Oxygen Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Ozone Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Sulfur Dioxide Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Dissolved Oxygen Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Bromate Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Chloramines Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Chlorine Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Fecal coliform and E. Coli Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Fluoride Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Haloacetic Acids Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Total Trihalomethanes Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Total Coliform Bacteria Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Turbidity Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Copper Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Lead Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Manganese Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Sulfate Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Bromodichloromethane Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Bromoform Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Chlorodibromomethane Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Chloroform Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: Sodium Concentration Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x0001)
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x0002)
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: IAS Zone
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ZONE_STATE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ZONE_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_ZONE_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_IAS_CIE_ADDRESS_ATTRIBUTE_ID (0x0010)
+#define ZCL_ZONE_ID_ATTRIBUTE_ID (0x0011)
+#define ZCL_NUMBER_OF_ZONE_SENSITIVITY_LEVELS_SUPPORTED_ATTRIBUTE_ID (0x0012)
+#define ZCL_CURRENT_ZONE_SENSITIVITY_LEVEL_ATTRIBUTE_ID (0x0013)
+
+// Attribute ids for cluster: IAS ACE
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: IAS WD
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MAX_DURATION_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Generic Tunnel
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MAXIMUM_INCOMING_TRANSFER_SIZE_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAXIMUM_OUTGOING_TRANSFER_SIZE_ATTRIBUTE_ID (0x0002)
+#define ZCL_PROTOCOL_ADDRESS_ATTRIBUTE_ID (0x0003)
+
+// Attribute ids for cluster: BACnet Protocol Tunnel
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: 11073 Protocol Tunnel
+
+// Client attributes
+
+// Server attributes
+#define ZCL_DEVICE_ID_LIST_ATTRIBUTE_ID (0x0000)
+#define ZCL_MANAGER_TARGET_ATTRIBUTE_ID (0x0001)
+#define ZCL_MANAGER_ENDPOINT_ATTRIBUTE_ID (0x0002)
+#define ZCL_CONNECTED_ATTRIBUTE_ID (0x0003)
+#define ZCL_PREEMPTIBLE_ATTRIBUTE_ID (0x0004)
+#define ZCL_IDLE_TIMEOUT_ATTRIBUTE_ID (0x0005)
+
+// Attribute ids for cluster: ISO 7816 Protocol Tunnel
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ISO7816_PROTOCOL_TUNNEL_STATUS_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Price
+
+// Client attributes
+#define ZCL_PRICE_INCREASE_RANDOMIZE_MINUTES_ATTRIBUTE_ID (0x0000)
+#define ZCL_PRICE_DECREASE_RANDOMIZE_MINUTES_ATTRIBUTE_ID (0x0001)
+#define ZCL_COMMODITY_TYPE_CLIENT_ATTRIBUTE_ID (0x0002)
+
+// Server attributes
+#define ZCL_TIER1_PRICE_LABEL_ATTRIBUTE_ID (0x0000)
+#define ZCL_TIER2_PRICE_LABEL_ATTRIBUTE_ID (0x0001)
+#define ZCL_TIER3_PRICE_LABEL_ATTRIBUTE_ID (0x0002)
+#define ZCL_TIER4_PRICE_LABEL_ATTRIBUTE_ID (0x0003)
+#define ZCL_TIER5_PRICE_LABEL_ATTRIBUTE_ID (0x0004)
+#define ZCL_TIER6_PRICE_LABEL_ATTRIBUTE_ID (0x0005)
+#define ZCL_TIER7_PRICE_LABEL_ATTRIBUTE_ID (0x0006)
+#define ZCL_TIER8_PRICE_LABEL_ATTRIBUTE_ID (0x0007)
+#define ZCL_TIER9_PRICE_LABEL_ATTRIBUTE_ID (0x0008)
+#define ZCL_TIER10_PRICE_LABEL_ATTRIBUTE_ID (0x0009)
+#define ZCL_TIER11_PRICE_LABEL_ATTRIBUTE_ID (0x000A)
+#define ZCL_TIER12_PRICE_LABEL_ATTRIBUTE_ID (0x000B)
+#define ZCL_TIER13_PRICE_LABEL_ATTRIBUTE_ID (0x000C)
+#define ZCL_TIER14_PRICE_LABEL_ATTRIBUTE_ID (0x000D)
+#define ZCL_TIER15_PRICE_LABEL_ATTRIBUTE_ID (0x000E)
+#define ZCL_TIER16_PRICE_LABEL_ATTRIBUTE_ID (0x000F)
+#define ZCL_TIER17_PRICE_LABEL_ATTRIBUTE_ID (0x0010)
+#define ZCL_TIER18_PRICE_LABEL_ATTRIBUTE_ID (0x0011)
+#define ZCL_TIER19_PRICE_LABEL_ATTRIBUTE_ID (0x0012)
+#define ZCL_TIER20_PRICE_LABEL_ATTRIBUTE_ID (0x0013)
+#define ZCL_TIER21_PRICE_LABEL_ATTRIBUTE_ID (0x0014)
+#define ZCL_TIER22_PRICE_LABEL_ATTRIBUTE_ID (0x0015)
+#define ZCL_TIER23_PRICE_LABEL_ATTRIBUTE_ID (0x0016)
+#define ZCL_TIER24_PRICE_LABEL_ATTRIBUTE_ID (0x0017)
+#define ZCL_TIER25_PRICE_LABEL_ATTRIBUTE_ID (0x0018)
+#define ZCL_TIER26_PRICE_LABEL_ATTRIBUTE_ID (0x0019)
+#define ZCL_TIER27_PRICE_LABEL_ATTRIBUTE_ID (0x001A)
+#define ZCL_TIER28_PRICE_LABEL_ATTRIBUTE_ID (0x001B)
+#define ZCL_TIER29_PRICE_LABEL_ATTRIBUTE_ID (0x001C)
+#define ZCL_TIER30_PRICE_LABEL_ATTRIBUTE_ID (0x001D)
+#define ZCL_TIER31_PRICE_LABEL_ATTRIBUTE_ID (0x001E)
+#define ZCL_TIER32_PRICE_LABEL_ATTRIBUTE_ID (0x001F)
+#define ZCL_TIER33_PRICE_LABEL_ATTRIBUTE_ID (0x0020)
+#define ZCL_TIER34_PRICE_LABEL_ATTRIBUTE_ID (0x0021)
+#define ZCL_TIER35_PRICE_LABEL_ATTRIBUTE_ID (0x0022)
+#define ZCL_TIER36_PRICE_LABEL_ATTRIBUTE_ID (0x0023)
+#define ZCL_TIER37_PRICE_LABEL_ATTRIBUTE_ID (0x0024)
+#define ZCL_TIER38_PRICE_LABEL_ATTRIBUTE_ID (0x0025)
+#define ZCL_TIER39_PRICE_LABEL_ATTRIBUTE_ID (0x0026)
+#define ZCL_TIER40_PRICE_LABEL_ATTRIBUTE_ID (0x0027)
+#define ZCL_TIER41_PRICE_LABEL_ATTRIBUTE_ID (0x0028)
+#define ZCL_TIER42_PRICE_LABEL_ATTRIBUTE_ID (0x0029)
+#define ZCL_TIER43_PRICE_LABEL_ATTRIBUTE_ID (0x002A)
+#define ZCL_TIER44_PRICE_LABEL_ATTRIBUTE_ID (0x002B)
+#define ZCL_TIER45_PRICE_LABEL_ATTRIBUTE_ID (0x002C)
+#define ZCL_TIER46_PRICE_LABEL_ATTRIBUTE_ID (0x002D)
+#define ZCL_TIER47_PRICE_LABEL_ATTRIBUTE_ID (0x002E)
+#define ZCL_TIER48_PRICE_LABEL_ATTRIBUTE_ID (0x002F)
+#define ZCL_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0100)
+#define ZCL_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0101)
+#define ZCL_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0102)
+#define ZCL_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0103)
+#define ZCL_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0104)
+#define ZCL_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0105)
+#define ZCL_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0106)
+#define ZCL_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0107)
+#define ZCL_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0108)
+#define ZCL_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0109)
+#define ZCL_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x010A)
+#define ZCL_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x010B)
+#define ZCL_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x010C)
+#define ZCL_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x010D)
+#define ZCL_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x010E)
+#define ZCL_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x010F)
+#define ZCL_TIER1_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0110)
+#define ZCL_TIER1_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0111)
+#define ZCL_TIER1_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0112)
+#define ZCL_TIER1_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0113)
+#define ZCL_TIER1_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0114)
+#define ZCL_TIER1_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0115)
+#define ZCL_TIER1_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0116)
+#define ZCL_TIER1_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0117)
+#define ZCL_TIER1_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0118)
+#define ZCL_TIER1_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0119)
+#define ZCL_TIER1_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x011A)
+#define ZCL_TIER1_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x011B)
+#define ZCL_TIER1_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x011C)
+#define ZCL_TIER1_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x011D)
+#define ZCL_TIER1_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x011E)
+#define ZCL_TIER1_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x011F)
+#define ZCL_TIER2_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0120)
+#define ZCL_TIER2_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0121)
+#define ZCL_TIER2_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0122)
+#define ZCL_TIER2_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0123)
+#define ZCL_TIER2_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0124)
+#define ZCL_TIER2_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0125)
+#define ZCL_TIER2_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0126)
+#define ZCL_TIER2_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0127)
+#define ZCL_TIER2_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0128)
+#define ZCL_TIER2_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0129)
+#define ZCL_TIER2_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x012A)
+#define ZCL_TIER2_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x012B)
+#define ZCL_TIER2_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x012C)
+#define ZCL_TIER2_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x012D)
+#define ZCL_TIER2_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x012E)
+#define ZCL_TIER2_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x012F)
+#define ZCL_TIER3_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0130)
+#define ZCL_TIER3_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0131)
+#define ZCL_TIER3_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0132)
+#define ZCL_TIER3_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0133)
+#define ZCL_TIER3_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0134)
+#define ZCL_TIER3_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0135)
+#define ZCL_TIER3_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0136)
+#define ZCL_TIER3_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0137)
+#define ZCL_TIER3_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0138)
+#define ZCL_TIER3_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0139)
+#define ZCL_TIER3_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x013A)
+#define ZCL_TIER3_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x013B)
+#define ZCL_TIER3_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x013C)
+#define ZCL_TIER3_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x013D)
+#define ZCL_TIER3_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x013E)
+#define ZCL_TIER3_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x013F)
+#define ZCL_TIER4_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0140)
+#define ZCL_TIER4_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0141)
+#define ZCL_TIER4_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0142)
+#define ZCL_TIER4_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0143)
+#define ZCL_TIER4_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0144)
+#define ZCL_TIER4_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0145)
+#define ZCL_TIER4_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0146)
+#define ZCL_TIER4_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0147)
+#define ZCL_TIER4_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0148)
+#define ZCL_TIER4_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0149)
+#define ZCL_TIER4_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x014A)
+#define ZCL_TIER4_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x014B)
+#define ZCL_TIER4_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x014C)
+#define ZCL_TIER4_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x014D)
+#define ZCL_TIER4_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x014E)
+#define ZCL_TIER4_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x014F)
+#define ZCL_TIER5_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0150)
+#define ZCL_TIER5_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0151)
+#define ZCL_TIER5_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0152)
+#define ZCL_TIER5_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0153)
+#define ZCL_TIER5_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0154)
+#define ZCL_TIER5_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0155)
+#define ZCL_TIER5_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0156)
+#define ZCL_TIER5_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0157)
+#define ZCL_TIER5_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0158)
+#define ZCL_TIER5_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0159)
+#define ZCL_TIER5_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x015A)
+#define ZCL_TIER5_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x015B)
+#define ZCL_TIER5_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x015C)
+#define ZCL_TIER5_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x015D)
+#define ZCL_TIER5_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x015E)
+#define ZCL_TIER5_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x015F)
+#define ZCL_TIER6_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0160)
+#define ZCL_TIER6_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0161)
+#define ZCL_TIER6_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0162)
+#define ZCL_TIER6_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0163)
+#define ZCL_TIER6_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0164)
+#define ZCL_TIER6_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0165)
+#define ZCL_TIER6_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0166)
+#define ZCL_TIER6_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0167)
+#define ZCL_TIER6_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0168)
+#define ZCL_TIER6_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0169)
+#define ZCL_TIER6_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x016A)
+#define ZCL_TIER6_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x016B)
+#define ZCL_TIER6_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x016C)
+#define ZCL_TIER6_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x016D)
+#define ZCL_TIER6_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x016E)
+#define ZCL_TIER6_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x016F)
+#define ZCL_TIER7_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0170)
+#define ZCL_TIER7_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0171)
+#define ZCL_TIER7_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0172)
+#define ZCL_TIER7_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0173)
+#define ZCL_TIER7_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0174)
+#define ZCL_TIER7_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0175)
+#define ZCL_TIER7_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0176)
+#define ZCL_TIER7_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0177)
+#define ZCL_TIER7_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0178)
+#define ZCL_TIER7_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0179)
+#define ZCL_TIER7_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x017A)
+#define ZCL_TIER7_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x017B)
+#define ZCL_TIER7_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x017C)
+#define ZCL_TIER7_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x017D)
+#define ZCL_TIER7_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x017E)
+#define ZCL_TIER7_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x017F)
+#define ZCL_TIER8_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0180)
+#define ZCL_TIER8_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0181)
+#define ZCL_TIER8_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0182)
+#define ZCL_TIER8_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0183)
+#define ZCL_TIER8_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0184)
+#define ZCL_TIER8_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0185)
+#define ZCL_TIER8_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0186)
+#define ZCL_TIER8_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0187)
+#define ZCL_TIER8_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0188)
+#define ZCL_TIER8_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0189)
+#define ZCL_TIER8_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x018A)
+#define ZCL_TIER8_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x018B)
+#define ZCL_TIER8_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x018C)
+#define ZCL_TIER8_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x018D)
+#define ZCL_TIER8_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x018E)
+#define ZCL_TIER8_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x018F)
+#define ZCL_TIER9_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x0190)
+#define ZCL_TIER9_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x0191)
+#define ZCL_TIER9_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x0192)
+#define ZCL_TIER9_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x0193)
+#define ZCL_TIER9_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x0194)
+#define ZCL_TIER9_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x0195)
+#define ZCL_TIER9_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x0196)
+#define ZCL_TIER9_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x0197)
+#define ZCL_TIER9_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x0198)
+#define ZCL_TIER9_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x0199)
+#define ZCL_TIER9_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x019A)
+#define ZCL_TIER9_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x019B)
+#define ZCL_TIER9_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x019C)
+#define ZCL_TIER9_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x019D)
+#define ZCL_TIER9_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x019E)
+#define ZCL_TIER9_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x019F)
+#define ZCL_TIER10_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01A0)
+#define ZCL_TIER10_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01A1)
+#define ZCL_TIER10_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01A2)
+#define ZCL_TIER10_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01A3)
+#define ZCL_TIER10_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01A4)
+#define ZCL_TIER10_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01A5)
+#define ZCL_TIER10_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01A6)
+#define ZCL_TIER10_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01A7)
+#define ZCL_TIER10_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01A8)
+#define ZCL_TIER10_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01A9)
+#define ZCL_TIER10_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01AA)
+#define ZCL_TIER10_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01AB)
+#define ZCL_TIER10_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01AC)
+#define ZCL_TIER10_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01AD)
+#define ZCL_TIER10_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01AE)
+#define ZCL_TIER10_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01AF)
+#define ZCL_TIER11_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01B0)
+#define ZCL_TIER11_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01B1)
+#define ZCL_TIER11_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01B2)
+#define ZCL_TIER11_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01B3)
+#define ZCL_TIER11_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01B4)
+#define ZCL_TIER11_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01B5)
+#define ZCL_TIER11_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01B6)
+#define ZCL_TIER11_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01B7)
+#define ZCL_TIER11_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01B8)
+#define ZCL_TIER11_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01B9)
+#define ZCL_TIER11_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01BA)
+#define ZCL_TIER11_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01BB)
+#define ZCL_TIER11_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01BC)
+#define ZCL_TIER11_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01BD)
+#define ZCL_TIER11_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01BE)
+#define ZCL_TIER11_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01BF)
+#define ZCL_TIER12_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01C0)
+#define ZCL_TIER12_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01C1)
+#define ZCL_TIER12_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01C2)
+#define ZCL_TIER12_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01C3)
+#define ZCL_TIER12_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01C4)
+#define ZCL_TIER12_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01C5)
+#define ZCL_TIER12_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01C6)
+#define ZCL_TIER12_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01C7)
+#define ZCL_TIER12_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01C8)
+#define ZCL_TIER12_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01C9)
+#define ZCL_TIER12_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01CA)
+#define ZCL_TIER12_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01CB)
+#define ZCL_TIER12_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01CC)
+#define ZCL_TIER12_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01CD)
+#define ZCL_TIER12_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01CE)
+#define ZCL_TIER12_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01CF)
+#define ZCL_TIER13_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01D0)
+#define ZCL_TIER13_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01D1)
+#define ZCL_TIER13_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01D2)
+#define ZCL_TIER13_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01D3)
+#define ZCL_TIER13_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01D4)
+#define ZCL_TIER13_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01D5)
+#define ZCL_TIER13_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01D6)
+#define ZCL_TIER13_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01D7)
+#define ZCL_TIER13_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01D8)
+#define ZCL_TIER13_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01D9)
+#define ZCL_TIER13_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01DA)
+#define ZCL_TIER13_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01DB)
+#define ZCL_TIER13_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01DC)
+#define ZCL_TIER13_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01DD)
+#define ZCL_TIER13_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01DE)
+#define ZCL_TIER13_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01DF)
+#define ZCL_TIER14_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01E0)
+#define ZCL_TIER14_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01E1)
+#define ZCL_TIER14_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01E2)
+#define ZCL_TIER14_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01E3)
+#define ZCL_TIER14_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01E4)
+#define ZCL_TIER14_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01E5)
+#define ZCL_TIER14_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01E6)
+#define ZCL_TIER14_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01E7)
+#define ZCL_TIER14_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01E8)
+#define ZCL_TIER14_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01E9)
+#define ZCL_TIER14_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01EA)
+#define ZCL_TIER14_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01EB)
+#define ZCL_TIER14_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01EC)
+#define ZCL_TIER14_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01ED)
+#define ZCL_TIER14_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01EE)
+#define ZCL_TIER14_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01EF)
+#define ZCL_TIER15_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x01F0)
+#define ZCL_TIER15_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x01F1)
+#define ZCL_TIER15_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x01F2)
+#define ZCL_TIER15_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x01F3)
+#define ZCL_TIER15_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x01F4)
+#define ZCL_TIER15_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x01F5)
+#define ZCL_TIER15_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x01F6)
+#define ZCL_TIER15_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x01F7)
+#define ZCL_TIER15_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x01F8)
+#define ZCL_TIER15_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x01F9)
+#define ZCL_TIER15_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x01FA)
+#define ZCL_TIER15_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x01FB)
+#define ZCL_TIER15_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x01FC)
+#define ZCL_TIER15_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x01FD)
+#define ZCL_TIER15_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x01FE)
+#define ZCL_TIER15_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x01FF)
+#define ZCL_START_OF_BLOCK_PERIOD_ATTRIBUTE_ID (0x0200)
+#define ZCL_BLOCK_PERIOD_DURATION_MINUTES_ATTRIBUTE_ID (0x0201)
+#define ZCL_THRESHOLD_MULTIPLIER_ATTRIBUTE_ID (0x0202)
+#define ZCL_THRESHOLD_DIVISOR_ATTRIBUTE_ID (0x0203)
+#define ZCL_BLOCK_PERIOD_DURATION_TYPE_ATTRIBUTE_ID (0x0204)
+#define ZCL_COMMODITY_TYPE_SERVER_ATTRIBUTE_ID (0x0300)
+#define ZCL_STANDING_CHARGE_ATTRIBUTE_ID (0x0301)
+#define ZCL_CONVERSION_FACTOR_ATTRIBUTE_ID (0x0302)
+#define ZCL_CONVERSION_FACTOR_TRAILING_DIGIT_ATTRIBUTE_ID (0x0303)
+#define ZCL_CALORIFIC_VALUE_ATTRIBUTE_ID (0x0304)
+#define ZCL_CALORIFIC_VALUE_UNIT_ATTRIBUTE_ID (0x0305)
+#define ZCL_CALORIFIC_VALUE_TRAILING_DIGIT_ATTRIBUTE_ID (0x0306)
+#define ZCL_NO_TIER_BLOCK1_PRICE_ATTRIBUTE_ID (0x0400)
+#define ZCL_NO_TIER_BLOCK2_PRICE_ATTRIBUTE_ID (0x0401)
+#define ZCL_NO_TIER_BLOCK3_PRICE_ATTRIBUTE_ID (0x0402)
+#define ZCL_NO_TIER_BLOCK4_PRICE_ATTRIBUTE_ID (0x0403)
+#define ZCL_NO_TIER_BLOCK5_PRICE_ATTRIBUTE_ID (0x0404)
+#define ZCL_NO_TIER_BLOCK6_PRICE_ATTRIBUTE_ID (0x0405)
+#define ZCL_NO_TIER_BLOCK7_PRICE_ATTRIBUTE_ID (0x0406)
+#define ZCL_NO_TIER_BLOCK8_PRICE_ATTRIBUTE_ID (0x0407)
+#define ZCL_NO_TIER_BLOCK9_PRICE_ATTRIBUTE_ID (0x0408)
+#define ZCL_NO_TIER_BLOCK10_PRICE_ATTRIBUTE_ID (0x0409)
+#define ZCL_NO_TIER_BLOCK11_PRICE_ATTRIBUTE_ID (0x040A)
+#define ZCL_NO_TIER_BLOCK12_PRICE_ATTRIBUTE_ID (0x040B)
+#define ZCL_NO_TIER_BLOCK13_PRICE_ATTRIBUTE_ID (0x040C)
+#define ZCL_NO_TIER_BLOCK14_PRICE_ATTRIBUTE_ID (0x040D)
+#define ZCL_NO_TIER_BLOCK15_PRICE_ATTRIBUTE_ID (0x040E)
+#define ZCL_NO_TIER_BLOCK16_PRICE_ATTRIBUTE_ID (0x040F)
+#define ZCL_TIER1_BLOCK1_PRICE_ATTRIBUTE_ID (0x0410)
+#define ZCL_TIER1_BLOCK2_PRICE_ATTRIBUTE_ID (0x0411)
+#define ZCL_TIER1_BLOCK3_PRICE_ATTRIBUTE_ID (0x0412)
+#define ZCL_TIER1_BLOCK4_PRICE_ATTRIBUTE_ID (0x0413)
+#define ZCL_TIER1_BLOCK5_PRICE_ATTRIBUTE_ID (0x0414)
+#define ZCL_TIER1_BLOCK6_PRICE_ATTRIBUTE_ID (0x0415)
+#define ZCL_TIER1_BLOCK7_PRICE_ATTRIBUTE_ID (0x0416)
+#define ZCL_TIER1_BLOCK8_PRICE_ATTRIBUTE_ID (0x0417)
+#define ZCL_TIER1_BLOCK9_PRICE_ATTRIBUTE_ID (0x0418)
+#define ZCL_TIER1_BLOCK10_PRICE_ATTRIBUTE_ID (0x0419)
+#define ZCL_TIER1_BLOCK11_PRICE_ATTRIBUTE_ID (0x041A)
+#define ZCL_TIER1_BLOCK12_PRICE_ATTRIBUTE_ID (0x041B)
+#define ZCL_TIER1_BLOCK13_PRICE_ATTRIBUTE_ID (0x041C)
+#define ZCL_TIER1_BLOCK14_PRICE_ATTRIBUTE_ID (0x041D)
+#define ZCL_TIER1_BLOCK15_PRICE_ATTRIBUTE_ID (0x041E)
+#define ZCL_TIER1_BLOCK16_PRICE_ATTRIBUTE_ID (0x041F)
+#define ZCL_TIER2_BLOCK1_PRICE_ATTRIBUTE_ID (0x0420)
+#define ZCL_TIER2_BLOCK2_PRICE_ATTRIBUTE_ID (0x0421)
+#define ZCL_TIER2_BLOCK3_PRICE_ATTRIBUTE_ID (0x0422)
+#define ZCL_TIER2_BLOCK4_PRICE_ATTRIBUTE_ID (0x0423)
+#define ZCL_TIER2_BLOCK5_PRICE_ATTRIBUTE_ID (0x0424)
+#define ZCL_TIER2_BLOCK6_PRICE_ATTRIBUTE_ID (0x0425)
+#define ZCL_TIER2_BLOCK7_PRICE_ATTRIBUTE_ID (0x0426)
+#define ZCL_TIER2_BLOCK8_PRICE_ATTRIBUTE_ID (0x0427)
+#define ZCL_TIER2_BLOCK9_PRICE_ATTRIBUTE_ID (0x0428)
+#define ZCL_TIER2_BLOCK10_PRICE_ATTRIBUTE_ID (0x0429)
+#define ZCL_TIER2_BLOCK11_PRICE_ATTRIBUTE_ID (0x042A)
+#define ZCL_TIER2_BLOCK12_PRICE_ATTRIBUTE_ID (0x042B)
+#define ZCL_TIER2_BLOCK13_PRICE_ATTRIBUTE_ID (0x042C)
+#define ZCL_TIER2_BLOCK14_PRICE_ATTRIBUTE_ID (0x042D)
+#define ZCL_TIER2_BLOCK15_PRICE_ATTRIBUTE_ID (0x042E)
+#define ZCL_TIER2_BLOCK16_PRICE_ATTRIBUTE_ID (0x042F)
+#define ZCL_TIER3_BLOCK1_PRICE_ATTRIBUTE_ID (0x0430)
+#define ZCL_TIER3_BLOCK2_PRICE_ATTRIBUTE_ID (0x0431)
+#define ZCL_TIER3_BLOCK3_PRICE_ATTRIBUTE_ID (0x0432)
+#define ZCL_TIER3_BLOCK4_PRICE_ATTRIBUTE_ID (0x0433)
+#define ZCL_TIER3_BLOCK5_PRICE_ATTRIBUTE_ID (0x0434)
+#define ZCL_TIER3_BLOCK6_PRICE_ATTRIBUTE_ID (0x0435)
+#define ZCL_TIER3_BLOCK7_PRICE_ATTRIBUTE_ID (0x0436)
+#define ZCL_TIER3_BLOCK8_PRICE_ATTRIBUTE_ID (0x0437)
+#define ZCL_TIER3_BLOCK9_PRICE_ATTRIBUTE_ID (0x0438)
+#define ZCL_TIER3_BLOCK10_PRICE_ATTRIBUTE_ID (0x0439)
+#define ZCL_TIER3_BLOCK11_PRICE_ATTRIBUTE_ID (0x043A)
+#define ZCL_TIER3_BLOCK12_PRICE_ATTRIBUTE_ID (0x043B)
+#define ZCL_TIER3_BLOCK13_PRICE_ATTRIBUTE_ID (0x043C)
+#define ZCL_TIER3_BLOCK14_PRICE_ATTRIBUTE_ID (0x043D)
+#define ZCL_TIER3_BLOCK15_PRICE_ATTRIBUTE_ID (0x043E)
+#define ZCL_TIER3_BLOCK16_PRICE_ATTRIBUTE_ID (0x043F)
+#define ZCL_TIER4_BLOCK1_PRICE_ATTRIBUTE_ID (0x0440)
+#define ZCL_TIER4_BLOCK2_PRICE_ATTRIBUTE_ID (0x0441)
+#define ZCL_TIER4_BLOCK3_PRICE_ATTRIBUTE_ID (0x0442)
+#define ZCL_TIER4_BLOCK4_PRICE_ATTRIBUTE_ID (0x0443)
+#define ZCL_TIER4_BLOCK5_PRICE_ATTRIBUTE_ID (0x0444)
+#define ZCL_TIER4_BLOCK6_PRICE_ATTRIBUTE_ID (0x0445)
+#define ZCL_TIER4_BLOCK7_PRICE_ATTRIBUTE_ID (0x0446)
+#define ZCL_TIER4_BLOCK8_PRICE_ATTRIBUTE_ID (0x0447)
+#define ZCL_TIER4_BLOCK9_PRICE_ATTRIBUTE_ID (0x0448)
+#define ZCL_TIER4_BLOCK10_PRICE_ATTRIBUTE_ID (0x0449)
+#define ZCL_TIER4_BLOCK11_PRICE_ATTRIBUTE_ID (0x044A)
+#define ZCL_TIER4_BLOCK12_PRICE_ATTRIBUTE_ID (0x044B)
+#define ZCL_TIER4_BLOCK13_PRICE_ATTRIBUTE_ID (0x044C)
+#define ZCL_TIER4_BLOCK14_PRICE_ATTRIBUTE_ID (0x044D)
+#define ZCL_TIER4_BLOCK15_PRICE_ATTRIBUTE_ID (0x044E)
+#define ZCL_TIER4_BLOCK16_PRICE_ATTRIBUTE_ID (0x044F)
+#define ZCL_TIER5_BLOCK1_PRICE_ATTRIBUTE_ID (0x0450)
+#define ZCL_TIER5_BLOCK2_PRICE_ATTRIBUTE_ID (0x0451)
+#define ZCL_TIER5_BLOCK3_PRICE_ATTRIBUTE_ID (0x0452)
+#define ZCL_TIER5_BLOCK4_PRICE_ATTRIBUTE_ID (0x0453)
+#define ZCL_TIER5_BLOCK5_PRICE_ATTRIBUTE_ID (0x0454)
+#define ZCL_TIER5_BLOCK6_PRICE_ATTRIBUTE_ID (0x0455)
+#define ZCL_TIER5_BLOCK7_PRICE_ATTRIBUTE_ID (0x0456)
+#define ZCL_TIER5_BLOCK8_PRICE_ATTRIBUTE_ID (0x0457)
+#define ZCL_TIER5_BLOCK9_PRICE_ATTRIBUTE_ID (0x0458)
+#define ZCL_TIER5_BLOCK10_PRICE_ATTRIBUTE_ID (0x0459)
+#define ZCL_TIER5_BLOCK11_PRICE_ATTRIBUTE_ID (0x045A)
+#define ZCL_TIER5_BLOCK12_PRICE_ATTRIBUTE_ID (0x045B)
+#define ZCL_TIER5_BLOCK13_PRICE_ATTRIBUTE_ID (0x045C)
+#define ZCL_TIER5_BLOCK14_PRICE_ATTRIBUTE_ID (0x045D)
+#define ZCL_TIER5_BLOCK15_PRICE_ATTRIBUTE_ID (0x045E)
+#define ZCL_TIER5_BLOCK16_PRICE_ATTRIBUTE_ID (0x045F)
+#define ZCL_TIER6_BLOCK1_PRICE_ATTRIBUTE_ID (0x0460)
+#define ZCL_TIER6_BLOCK2_PRICE_ATTRIBUTE_ID (0x0461)
+#define ZCL_TIER6_BLOCK3_PRICE_ATTRIBUTE_ID (0x0462)
+#define ZCL_TIER6_BLOCK4_PRICE_ATTRIBUTE_ID (0x0463)
+#define ZCL_TIER6_BLOCK5_PRICE_ATTRIBUTE_ID (0x0464)
+#define ZCL_TIER6_BLOCK6_PRICE_ATTRIBUTE_ID (0x0465)
+#define ZCL_TIER6_BLOCK7_PRICE_ATTRIBUTE_ID (0x0466)
+#define ZCL_TIER6_BLOCK8_PRICE_ATTRIBUTE_ID (0x0467)
+#define ZCL_TIER6_BLOCK9_PRICE_ATTRIBUTE_ID (0x0468)
+#define ZCL_TIER6_BLOCK10_PRICE_ATTRIBUTE_ID (0x0469)
+#define ZCL_TIER6_BLOCK11_PRICE_ATTRIBUTE_ID (0x046A)
+#define ZCL_TIER6_BLOCK12_PRICE_ATTRIBUTE_ID (0x046B)
+#define ZCL_TIER6_BLOCK13_PRICE_ATTRIBUTE_ID (0x046C)
+#define ZCL_TIER6_BLOCK14_PRICE_ATTRIBUTE_ID (0x046D)
+#define ZCL_TIER6_BLOCK15_PRICE_ATTRIBUTE_ID (0x046E)
+#define ZCL_TIER6_BLOCK16_PRICE_ATTRIBUTE_ID (0x046F)
+#define ZCL_TIER7_BLOCK1_PRICE_ATTRIBUTE_ID (0x0470)
+#define ZCL_TIER7_BLOCK2_PRICE_ATTRIBUTE_ID (0x0471)
+#define ZCL_TIER7_BLOCK3_PRICE_ATTRIBUTE_ID (0x0472)
+#define ZCL_TIER7_BLOCK4_PRICE_ATTRIBUTE_ID (0x0473)
+#define ZCL_TIER7_BLOCK5_PRICE_ATTRIBUTE_ID (0x0474)
+#define ZCL_TIER7_BLOCK6_PRICE_ATTRIBUTE_ID (0x0475)
+#define ZCL_TIER7_BLOCK7_PRICE_ATTRIBUTE_ID (0x0476)
+#define ZCL_TIER7_BLOCK8_PRICE_ATTRIBUTE_ID (0x0477)
+#define ZCL_TIER7_BLOCK9_PRICE_ATTRIBUTE_ID (0x0478)
+#define ZCL_TIER7_BLOCK10_PRICE_ATTRIBUTE_ID (0x0479)
+#define ZCL_TIER7_BLOCK11_PRICE_ATTRIBUTE_ID (0x047A)
+#define ZCL_TIER7_BLOCK12_PRICE_ATTRIBUTE_ID (0x047B)
+#define ZCL_TIER7_BLOCK13_PRICE_ATTRIBUTE_ID (0x047C)
+#define ZCL_TIER7_BLOCK14_PRICE_ATTRIBUTE_ID (0x047D)
+#define ZCL_TIER7_BLOCK15_PRICE_ATTRIBUTE_ID (0x047E)
+#define ZCL_TIER7_BLOCK16_PRICE_ATTRIBUTE_ID (0x047F)
+#define ZCL_TIER8_BLOCK1_PRICE_ATTRIBUTE_ID (0x0480)
+#define ZCL_TIER8_BLOCK2_PRICE_ATTRIBUTE_ID (0x0481)
+#define ZCL_TIER8_BLOCK3_PRICE_ATTRIBUTE_ID (0x0482)
+#define ZCL_TIER8_BLOCK4_PRICE_ATTRIBUTE_ID (0x0483)
+#define ZCL_TIER8_BLOCK5_PRICE_ATTRIBUTE_ID (0x0484)
+#define ZCL_TIER8_BLOCK6_PRICE_ATTRIBUTE_ID (0x0485)
+#define ZCL_TIER8_BLOCK7_PRICE_ATTRIBUTE_ID (0x0486)
+#define ZCL_TIER8_BLOCK8_PRICE_ATTRIBUTE_ID (0x0487)
+#define ZCL_TIER8_BLOCK9_PRICE_ATTRIBUTE_ID (0x0488)
+#define ZCL_TIER8_BLOCK10_PRICE_ATTRIBUTE_ID (0x0489)
+#define ZCL_TIER8_BLOCK11_PRICE_ATTRIBUTE_ID (0x048A)
+#define ZCL_TIER8_BLOCK12_PRICE_ATTRIBUTE_ID (0x048B)
+#define ZCL_TIER8_BLOCK13_PRICE_ATTRIBUTE_ID (0x048C)
+#define ZCL_TIER8_BLOCK14_PRICE_ATTRIBUTE_ID (0x048D)
+#define ZCL_TIER8_BLOCK15_PRICE_ATTRIBUTE_ID (0x048E)
+#define ZCL_TIER8_BLOCK16_PRICE_ATTRIBUTE_ID (0x048F)
+#define ZCL_TIER9_BLOCK1_PRICE_ATTRIBUTE_ID (0x0490)
+#define ZCL_TIER9_BLOCK2_PRICE_ATTRIBUTE_ID (0x0491)
+#define ZCL_TIER9_BLOCK3_PRICE_ATTRIBUTE_ID (0x0492)
+#define ZCL_TIER9_BLOCK4_PRICE_ATTRIBUTE_ID (0x0493)
+#define ZCL_TIER9_BLOCK5_PRICE_ATTRIBUTE_ID (0x0494)
+#define ZCL_TIER9_BLOCK6_PRICE_ATTRIBUTE_ID (0x0495)
+#define ZCL_TIER9_BLOCK7_PRICE_ATTRIBUTE_ID (0x0496)
+#define ZCL_TIER9_BLOCK8_PRICE_ATTRIBUTE_ID (0x0497)
+#define ZCL_TIER9_BLOCK9_PRICE_ATTRIBUTE_ID (0x0498)
+#define ZCL_TIER9_BLOCK10_PRICE_ATTRIBUTE_ID (0x0499)
+#define ZCL_TIER9_BLOCK11_PRICE_ATTRIBUTE_ID (0x049A)
+#define ZCL_TIER9_BLOCK12_PRICE_ATTRIBUTE_ID (0x049B)
+#define ZCL_TIER9_BLOCK13_PRICE_ATTRIBUTE_ID (0x049C)
+#define ZCL_TIER9_BLOCK14_PRICE_ATTRIBUTE_ID (0x049D)
+#define ZCL_TIER9_BLOCK15_PRICE_ATTRIBUTE_ID (0x049E)
+#define ZCL_TIER9_BLOCK16_PRICE_ATTRIBUTE_ID (0x049F)
+#define ZCL_TIER10_BLOCK1_PRICE_ATTRIBUTE_ID (0x04A0)
+#define ZCL_TIER10_BLOCK2_PRICE_ATTRIBUTE_ID (0x04A1)
+#define ZCL_TIER10_BLOCK3_PRICE_ATTRIBUTE_ID (0x04A2)
+#define ZCL_TIER10_BLOCK4_PRICE_ATTRIBUTE_ID (0x04A3)
+#define ZCL_TIER10_BLOCK5_PRICE_ATTRIBUTE_ID (0x04A4)
+#define ZCL_TIER10_BLOCK6_PRICE_ATTRIBUTE_ID (0x04A5)
+#define ZCL_TIER10_BLOCK7_PRICE_ATTRIBUTE_ID (0x04A6)
+#define ZCL_TIER10_BLOCK8_PRICE_ATTRIBUTE_ID (0x04A7)
+#define ZCL_TIER10_BLOCK9_PRICE_ATTRIBUTE_ID (0x04A8)
+#define ZCL_TIER10_BLOCK10_PRICE_ATTRIBUTE_ID (0x04A9)
+#define ZCL_TIER10_BLOCK11_PRICE_ATTRIBUTE_ID (0x04AA)
+#define ZCL_TIER10_BLOCK12_PRICE_ATTRIBUTE_ID (0x04AB)
+#define ZCL_TIER10_BLOCK13_PRICE_ATTRIBUTE_ID (0x04AC)
+#define ZCL_TIER10_BLOCK14_PRICE_ATTRIBUTE_ID (0x04AD)
+#define ZCL_TIER10_BLOCK15_PRICE_ATTRIBUTE_ID (0x04AE)
+#define ZCL_TIER10_BLOCK16_PRICE_ATTRIBUTE_ID (0x04AF)
+#define ZCL_TIER11_BLOCK1_PRICE_ATTRIBUTE_ID (0x04B0)
+#define ZCL_TIER11_BLOCK2_PRICE_ATTRIBUTE_ID (0x04B1)
+#define ZCL_TIER11_BLOCK3_PRICE_ATTRIBUTE_ID (0x04B2)
+#define ZCL_TIER11_BLOCK4_PRICE_ATTRIBUTE_ID (0x04B3)
+#define ZCL_TIER11_BLOCK5_PRICE_ATTRIBUTE_ID (0x04B4)
+#define ZCL_TIER11_BLOCK6_PRICE_ATTRIBUTE_ID (0x04B5)
+#define ZCL_TIER11_BLOCK7_PRICE_ATTRIBUTE_ID (0x04B6)
+#define ZCL_TIER11_BLOCK8_PRICE_ATTRIBUTE_ID (0x04B7)
+#define ZCL_TIER11_BLOCK9_PRICE_ATTRIBUTE_ID (0x04B8)
+#define ZCL_TIER11_BLOCK10_PRICE_ATTRIBUTE_ID (0x04B9)
+#define ZCL_TIER11_BLOCK11_PRICE_ATTRIBUTE_ID (0x04BA)
+#define ZCL_TIER11_BLOCK12_PRICE_ATTRIBUTE_ID (0x04BB)
+#define ZCL_TIER11_BLOCK13_PRICE_ATTRIBUTE_ID (0x04BC)
+#define ZCL_TIER11_BLOCK14_PRICE_ATTRIBUTE_ID (0x04BD)
+#define ZCL_TIER11_BLOCK15_PRICE_ATTRIBUTE_ID (0x04BE)
+#define ZCL_TIER11_BLOCK16_PRICE_ATTRIBUTE_ID (0x04BF)
+#define ZCL_TIER12_BLOCK1_PRICE_ATTRIBUTE_ID (0x04C0)
+#define ZCL_TIER12_BLOCK2_PRICE_ATTRIBUTE_ID (0x04C1)
+#define ZCL_TIER12_BLOCK3_PRICE_ATTRIBUTE_ID (0x04C2)
+#define ZCL_TIER12_BLOCK4_PRICE_ATTRIBUTE_ID (0x04C3)
+#define ZCL_TIER12_BLOCK5_PRICE_ATTRIBUTE_ID (0x04C4)
+#define ZCL_TIER12_BLOCK6_PRICE_ATTRIBUTE_ID (0x04C5)
+#define ZCL_TIER12_BLOCK7_PRICE_ATTRIBUTE_ID (0x04C6)
+#define ZCL_TIER12_BLOCK8_PRICE_ATTRIBUTE_ID (0x04C7)
+#define ZCL_TIER12_BLOCK9_PRICE_ATTRIBUTE_ID (0x04C8)
+#define ZCL_TIER12_BLOCK10_PRICE_ATTRIBUTE_ID (0x04C9)
+#define ZCL_TIER12_BLOCK11_PRICE_ATTRIBUTE_ID (0x04CA)
+#define ZCL_TIER12_BLOCK12_PRICE_ATTRIBUTE_ID (0x04CB)
+#define ZCL_TIER12_BLOCK13_PRICE_ATTRIBUTE_ID (0x04CC)
+#define ZCL_TIER12_BLOCK14_PRICE_ATTRIBUTE_ID (0x04CD)
+#define ZCL_TIER12_BLOCK15_PRICE_ATTRIBUTE_ID (0x04CE)
+#define ZCL_TIER12_BLOCK16_PRICE_ATTRIBUTE_ID (0x04CF)
+#define ZCL_TIER13_BLOCK1_PRICE_ATTRIBUTE_ID (0x04D0)
+#define ZCL_TIER13_BLOCK2_PRICE_ATTRIBUTE_ID (0x04D1)
+#define ZCL_TIER13_BLOCK3_PRICE_ATTRIBUTE_ID (0x04D2)
+#define ZCL_TIER13_BLOCK4_PRICE_ATTRIBUTE_ID (0x04D3)
+#define ZCL_TIER13_BLOCK5_PRICE_ATTRIBUTE_ID (0x04D4)
+#define ZCL_TIER13_BLOCK6_PRICE_ATTRIBUTE_ID (0x04D5)
+#define ZCL_TIER13_BLOCK7_PRICE_ATTRIBUTE_ID (0x04D6)
+#define ZCL_TIER13_BLOCK8_PRICE_ATTRIBUTE_ID (0x04D7)
+#define ZCL_TIER13_BLOCK9_PRICE_ATTRIBUTE_ID (0x04D8)
+#define ZCL_TIER13_BLOCK10_PRICE_ATTRIBUTE_ID (0x04D9)
+#define ZCL_TIER13_BLOCK11_PRICE_ATTRIBUTE_ID (0x04DA)
+#define ZCL_TIER13_BLOCK12_PRICE_ATTRIBUTE_ID (0x04DB)
+#define ZCL_TIER13_BLOCK13_PRICE_ATTRIBUTE_ID (0x04DC)
+#define ZCL_TIER13_BLOCK14_PRICE_ATTRIBUTE_ID (0x04DD)
+#define ZCL_TIER13_BLOCK15_PRICE_ATTRIBUTE_ID (0x04DE)
+#define ZCL_TIER13_BLOCK16_PRICE_ATTRIBUTE_ID (0x04DF)
+#define ZCL_TIER14_BLOCK1_PRICE_ATTRIBUTE_ID (0x04E0)
+#define ZCL_TIER14_BLOCK2_PRICE_ATTRIBUTE_ID (0x04E1)
+#define ZCL_TIER14_BLOCK3_PRICE_ATTRIBUTE_ID (0x04E2)
+#define ZCL_TIER14_BLOCK4_PRICE_ATTRIBUTE_ID (0x04E3)
+#define ZCL_TIER14_BLOCK5_PRICE_ATTRIBUTE_ID (0x04E4)
+#define ZCL_TIER14_BLOCK6_PRICE_ATTRIBUTE_ID (0x04E5)
+#define ZCL_TIER14_BLOCK7_PRICE_ATTRIBUTE_ID (0x04E6)
+#define ZCL_TIER14_BLOCK8_PRICE_ATTRIBUTE_ID (0x04E7)
+#define ZCL_TIER14_BLOCK9_PRICE_ATTRIBUTE_ID (0x04E8)
+#define ZCL_TIER14_BLOCK10_PRICE_ATTRIBUTE_ID (0x04E9)
+#define ZCL_TIER14_BLOCK11_PRICE_ATTRIBUTE_ID (0x04EA)
+#define ZCL_TIER14_BLOCK12_PRICE_ATTRIBUTE_ID (0x04EB)
+#define ZCL_TIER14_BLOCK13_PRICE_ATTRIBUTE_ID (0x04EC)
+#define ZCL_TIER14_BLOCK14_PRICE_ATTRIBUTE_ID (0x04ED)
+#define ZCL_TIER14_BLOCK15_PRICE_ATTRIBUTE_ID (0x04EE)
+#define ZCL_TIER14_BLOCK16_PRICE_ATTRIBUTE_ID (0x04EF)
+#define ZCL_TIER15_BLOCK1_PRICE_ATTRIBUTE_ID (0x04F0)
+#define ZCL_TIER15_BLOCK2_PRICE_ATTRIBUTE_ID (0x04F1)
+#define ZCL_TIER15_BLOCK3_PRICE_ATTRIBUTE_ID (0x04F2)
+#define ZCL_TIER15_BLOCK4_PRICE_ATTRIBUTE_ID (0x04F3)
+#define ZCL_TIER15_BLOCK5_PRICE_ATTRIBUTE_ID (0x04F4)
+#define ZCL_TIER15_BLOCK6_PRICE_ATTRIBUTE_ID (0x04F5)
+#define ZCL_TIER15_BLOCK7_PRICE_ATTRIBUTE_ID (0x04F6)
+#define ZCL_TIER15_BLOCK8_PRICE_ATTRIBUTE_ID (0x04F7)
+#define ZCL_TIER15_BLOCK9_PRICE_ATTRIBUTE_ID (0x04F8)
+#define ZCL_TIER15_BLOCK10_PRICE_ATTRIBUTE_ID (0x04F9)
+#define ZCL_TIER15_BLOCK11_PRICE_ATTRIBUTE_ID (0x04FA)
+#define ZCL_TIER15_BLOCK12_PRICE_ATTRIBUTE_ID (0x04FB)
+#define ZCL_TIER15_BLOCK13_PRICE_ATTRIBUTE_ID (0x04FC)
+#define ZCL_TIER15_BLOCK14_PRICE_ATTRIBUTE_ID (0x04FD)
+#define ZCL_TIER15_BLOCK15_PRICE_ATTRIBUTE_ID (0x04FE)
+#define ZCL_TIER15_BLOCK16_PRICE_ATTRIBUTE_ID (0x04FF)
+#define ZCL_PRICE_TIER16_ATTRIBUTE_ID (0x050F)
+#define ZCL_PRICE_TIER17_ATTRIBUTE_ID (0x0510)
+#define ZCL_PRICE_TIER18_ATTRIBUTE_ID (0x0511)
+#define ZCL_PRICE_TIER19_ATTRIBUTE_ID (0x0512)
+#define ZCL_PRICE_TIER20_ATTRIBUTE_ID (0x0513)
+#define ZCL_PRICE_TIER21_ATTRIBUTE_ID (0x0514)
+#define ZCL_PRICE_TIER22_ATTRIBUTE_ID (0x0515)
+#define ZCL_PRICE_TIER23_ATTRIBUTE_ID (0x0516)
+#define ZCL_PRICE_TIER24_ATTRIBUTE_ID (0x0517)
+#define ZCL_PRICE_TIER25_ATTRIBUTE_ID (0x0518)
+#define ZCL_PRICE_TIER26_ATTRIBUTE_ID (0x0519)
+#define ZCL_PRICE_TIER27_ATTRIBUTE_ID (0x051A)
+#define ZCL_PRICE_TIER28_ATTRIBUTE_ID (0x051B)
+#define ZCL_PRICE_TIER29_ATTRIBUTE_ID (0x051C)
+#define ZCL_PRICE_TIER30_ATTRIBUTE_ID (0x051D)
+#define ZCL_PRICE_TIER31_ATTRIBUTE_ID (0x051E)
+#define ZCL_PRICE_TIER32_ATTRIBUTE_ID (0x051F)
+#define ZCL_PRICE_TIER33_ATTRIBUTE_ID (0x0520)
+#define ZCL_PRICE_TIER34_ATTRIBUTE_ID (0x0521)
+#define ZCL_PRICE_TIER35_ATTRIBUTE_ID (0x0522)
+#define ZCL_PRICE_TIER36_ATTRIBUTE_ID (0x0523)
+#define ZCL_PRICE_TIER37_ATTRIBUTE_ID (0x0524)
+#define ZCL_PRICE_TIER38_ATTRIBUTE_ID (0x0525)
+#define ZCL_PRICE_TIER39_ATTRIBUTE_ID (0x0526)
+#define ZCL_PRICE_TIER40_ATTRIBUTE_ID (0x0527)
+#define ZCL_PRICE_TIER41_ATTRIBUTE_ID (0x0528)
+#define ZCL_PRICE_TIER42_ATTRIBUTE_ID (0x0529)
+#define ZCL_PRICE_TIER43_ATTRIBUTE_ID (0x052A)
+#define ZCL_PRICE_TIER44_ATTRIBUTE_ID (0x052B)
+#define ZCL_PRICE_TIER45_ATTRIBUTE_ID (0x052C)
+#define ZCL_PRICE_TIER46_ATTRIBUTE_ID (0x052D)
+#define ZCL_PRICE_TIER47_ATTRIBUTE_ID (0x052E)
+#define ZCL_PRICE_TIER48_ATTRIBUTE_ID (0x052F)
+#define ZCL_CPP1_PRICE_ATTRIBUTE_ID (0x05FE)
+#define ZCL_CPP2_PRICE_ATTRIBUTE_ID (0x05FF)
+#define ZCL_TARIFF_LABEL_ATTRIBUTE_ID (0x0610)
+#define ZCL_NUMBER_OF_PRICE_TIERS_IN_USE_ATTRIBUTE_ID (0x0611)
+#define ZCL_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE_ATTRIBUTE_ID (0x0612)
+#define ZCL_TIER_BLOCK_MODE_ATTRIBUTE_ID (0x0613)
+#define ZCL_TARIFF_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0615)
+#define ZCL_TARIFF_CURRENCY_ATTRIBUTE_ID (0x0616)
+#define ZCL_TARIFF_PRICE_TRAILING_DIGIT_ATTRIBUTE_ID (0x0617)
+#define ZCL_TARIFF_RESOLUTION_PERIOD_ATTRIBUTE_ID (0x0619)
+#define ZCL_TARIFF_CO2_ATTRIBUTE_ID (0x0620)
+#define ZCL_TARIFF_CO2_UNIT_ATTRIBUTE_ID (0x0621)
+#define ZCL_TARIFF_CO2_TRAILING_DIGIT_ATTRIBUTE_ID (0x0622)
+#define ZCL_CURRENT_BILLING_PERIOD_START_ATTRIBUTE_ID (0x0700)
+#define ZCL_CURRENT_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x0701)
+#define ZCL_LAST_BILLING_PERIOD_START_ATTRIBUTE_ID (0x0702)
+#define ZCL_LAST_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x0703)
+#define ZCL_LAST_BILLING_PERIOD_CONSOLIDATED_BILL_ATTRIBUTE_ID (0x0704)
+#define ZCL_CREDIT_PAYMENT_DUE_DATE_ATTRIBUTE_ID (0x0800)
+#define ZCL_CREDIT_PAYMENT_STATUS_ATTRIBUTE_ID (0x0801)
+#define ZCL_CREDIT_PAYMENT_OVER_DUE_AMOUNT_ATTRIBUTE_ID (0x0802)
+#define ZCL_PAYMENT_DISCOUNT_ATTRIBUTE_ID (0x080A)
+#define ZCL_PAYMENT_DISCOUNT_PERIOD_ATTRIBUTE_ID (0x080B)
+#define ZCL_CREDIT_PAYMENT_1_ATTRIBUTE_ID (0x0810)
+#define ZCL_CREDIT_PAYMENT_DATE_1_ATTRIBUTE_ID (0x0811)
+#define ZCL_CREDIT_PAYMENT_REF_1_ATTRIBUTE_ID (0x0812)
+#define ZCL_CREDIT_PAYMENT_2_ATTRIBUTE_ID (0x0820)
+#define ZCL_CREDIT_PAYMENT_DATE_2_ATTRIBUTE_ID (0x0821)
+#define ZCL_CREDIT_PAYMENT_REF_2_ATTRIBUTE_ID (0x0822)
+#define ZCL_CREDIT_PAYMENT_3_ATTRIBUTE_ID (0x0830)
+#define ZCL_CREDIT_PAYMENT_DATE_3_ATTRIBUTE_ID (0x0831)
+#define ZCL_CREDIT_PAYMENT_REF_3_ATTRIBUTE_ID (0x0832)
+#define ZCL_CREDIT_PAYMENT_4_ATTRIBUTE_ID (0x0840)
+#define ZCL_CREDIT_PAYMENT_DATE_4_ATTRIBUTE_ID (0x0841)
+#define ZCL_CREDIT_PAYMENT_REF_4_ATTRIBUTE_ID (0x0842)
+#define ZCL_CREDIT_PAYMENT_5_ATTRIBUTE_ID (0x0850)
+#define ZCL_CREDIT_PAYMENT_DATE_5_ATTRIBUTE_ID (0x0851)
+#define ZCL_CREDIT_PAYMENT_REF_5_ATTRIBUTE_ID (0x0852)
+#define ZCL_RX_TIER1_PRICE_LABEL_ATTRIBUTE_ID (0x8000)
+#define ZCL_RX_TIER2_PRICE_LABEL_ATTRIBUTE_ID (0x8001)
+#define ZCL_RX_TIER3_PRICE_LABEL_ATTRIBUTE_ID (0x8002)
+#define ZCL_RX_TIER4_PRICE_LABEL_ATTRIBUTE_ID (0x8003)
+#define ZCL_RX_TIER5_PRICE_LABEL_ATTRIBUTE_ID (0x8004)
+#define ZCL_RX_TIER6_PRICE_LABEL_ATTRIBUTE_ID (0x8005)
+#define ZCL_RX_TIER7_PRICE_LABEL_ATTRIBUTE_ID (0x8006)
+#define ZCL_RX_TIER8_PRICE_LABEL_ATTRIBUTE_ID (0x8007)
+#define ZCL_RX_TIER9_PRICE_LABEL_ATTRIBUTE_ID (0x8008)
+#define ZCL_RX_TIER10_PRICE_LABEL_ATTRIBUTE_ID (0x8009)
+#define ZCL_RX_TIER11_PRICE_LABEL_ATTRIBUTE_ID (0x800A)
+#define ZCL_RX_TIER12_PRICE_LABEL_ATTRIBUTE_ID (0x800B)
+#define ZCL_RX_TIER13_PRICE_LABEL_ATTRIBUTE_ID (0x800C)
+#define ZCL_RX_TIER14_PRICE_LABEL_ATTRIBUTE_ID (0x800D)
+#define ZCL_RX_TIER15_PRICE_LABEL_ATTRIBUTE_ID (0x800E)
+#define ZCL_RX_TIER16_PRICE_LABEL_ATTRIBUTE_ID (0x800F)
+#define ZCL_RX_TIER17_PRICE_LABEL_ATTRIBUTE_ID (0x8010)
+#define ZCL_RX_TIER18_PRICE_LABEL_ATTRIBUTE_ID (0x8011)
+#define ZCL_RX_TIER19_PRICE_LABEL_ATTRIBUTE_ID (0x8012)
+#define ZCL_RX_TIER20_PRICE_LABEL_ATTRIBUTE_ID (0x8013)
+#define ZCL_RX_TIER21_PRICE_LABEL_ATTRIBUTE_ID (0x8014)
+#define ZCL_RX_TIER22_PRICE_LABEL_ATTRIBUTE_ID (0x8015)
+#define ZCL_RX_TIER23_PRICE_LABEL_ATTRIBUTE_ID (0x8016)
+#define ZCL_RX_TIER24_PRICE_LABEL_ATTRIBUTE_ID (0x8017)
+#define ZCL_RX_TIER25_PRICE_LABEL_ATTRIBUTE_ID (0x8018)
+#define ZCL_RX_TIER26_PRICE_LABEL_ATTRIBUTE_ID (0x8019)
+#define ZCL_RX_TIER27_PRICE_LABEL_ATTRIBUTE_ID (0x801A)
+#define ZCL_RX_TIER28_PRICE_LABEL_ATTRIBUTE_ID (0x801B)
+#define ZCL_RX_TIER29_PRICE_LABEL_ATTRIBUTE_ID (0x801C)
+#define ZCL_RX_TIER30_PRICE_LABEL_ATTRIBUTE_ID (0x801D)
+#define ZCL_RX_TIER31_PRICE_LABEL_ATTRIBUTE_ID (0x801E)
+#define ZCL_RX_TIER32_PRICE_LABEL_ATTRIBUTE_ID (0x801F)
+#define ZCL_RX_TIER33_PRICE_LABEL_ATTRIBUTE_ID (0x8020)
+#define ZCL_RX_TIER34_PRICE_LABEL_ATTRIBUTE_ID (0x8021)
+#define ZCL_RX_TIER35_PRICE_LABEL_ATTRIBUTE_ID (0x8022)
+#define ZCL_RX_TIER36_PRICE_LABEL_ATTRIBUTE_ID (0x8023)
+#define ZCL_RX_TIER37_PRICE_LABEL_ATTRIBUTE_ID (0x8024)
+#define ZCL_RX_TIER38_PRICE_LABEL_ATTRIBUTE_ID (0x8025)
+#define ZCL_RX_TIER39_PRICE_LABEL_ATTRIBUTE_ID (0x8026)
+#define ZCL_RX_TIER40_PRICE_LABEL_ATTRIBUTE_ID (0x8027)
+#define ZCL_RX_TIER41_PRICE_LABEL_ATTRIBUTE_ID (0x8028)
+#define ZCL_RX_TIER42_PRICE_LABEL_ATTRIBUTE_ID (0x8029)
+#define ZCL_RX_TIER43_PRICE_LABEL_ATTRIBUTE_ID (0x802A)
+#define ZCL_RX_TIER44_PRICE_LABEL_ATTRIBUTE_ID (0x802B)
+#define ZCL_RX_TIER45_PRICE_LABEL_ATTRIBUTE_ID (0x802C)
+#define ZCL_RX_TIER46_PRICE_LABEL_ATTRIBUTE_ID (0x802D)
+#define ZCL_RX_TIER47_PRICE_LABEL_ATTRIBUTE_ID (0x802E)
+#define ZCL_RX_TIER48_PRICE_LABEL_ATTRIBUTE_ID (0x802F)
+#define ZCL_RX_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x8100)
+#define ZCL_RX_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x8101)
+#define ZCL_RX_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x8102)
+#define ZCL_RX_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x8103)
+#define ZCL_RX_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x8104)
+#define ZCL_RX_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x8105)
+#define ZCL_RX_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x8106)
+#define ZCL_RX_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x8107)
+#define ZCL_RX_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x8108)
+#define ZCL_RX_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x8109)
+#define ZCL_RX_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x810A)
+#define ZCL_RX_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x810B)
+#define ZCL_RX_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x810C)
+#define ZCL_RX_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x810D)
+#define ZCL_RX_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x810E)
+#define ZCL_RX_START_OF_BLOCK_PERIOD_ATTRIBUTE_ID (0x8200)
+#define ZCL_RX_BLOCK_PERIOD_DURATION_ATTRIBUTE_ID (0x8201)
+#define ZCL_RX_THRESHOLD_MULTIPLIER_ATTRIBUTE_ID (0x8202)
+#define ZCL_RX_THRESHOLD_DIVISOR_ATTRIBUTE_ID (0x8203)
+#define ZCL_RX_NO_TIER_BLOCK1_PRICE_ATTRIBUTE_ID (0x8400)
+#define ZCL_RX_NO_TIER_BLOCK2_PRICE_ATTRIBUTE_ID (0x8401)
+#define ZCL_RX_NO_TIER_BLOCK3_PRICE_ATTRIBUTE_ID (0x8402)
+#define ZCL_RX_NO_TIER_BLOCK4_PRICE_ATTRIBUTE_ID (0x8403)
+#define ZCL_RX_NO_TIER_BLOCK5_PRICE_ATTRIBUTE_ID (0x8404)
+#define ZCL_RX_NO_TIER_BLOCK6_PRICE_ATTRIBUTE_ID (0x8405)
+#define ZCL_RX_NO_TIER_BLOCK7_PRICE_ATTRIBUTE_ID (0x8406)
+#define ZCL_RX_NO_TIER_BLOCK8_PRICE_ATTRIBUTE_ID (0x8407)
+#define ZCL_RX_NO_TIER_BLOCK9_PRICE_ATTRIBUTE_ID (0x8408)
+#define ZCL_RX_NO_TIER_BLOCK10_PRICE_ATTRIBUTE_ID (0x8409)
+#define ZCL_RX_NO_TIER_BLOCK11_PRICE_ATTRIBUTE_ID (0x840A)
+#define ZCL_RX_NO_TIER_BLOCK12_PRICE_ATTRIBUTE_ID (0x840B)
+#define ZCL_RX_NO_TIER_BLOCK13_PRICE_ATTRIBUTE_ID (0x840C)
+#define ZCL_RX_NO_TIER_BLOCK14_PRICE_ATTRIBUTE_ID (0x840D)
+#define ZCL_RX_NO_TIER_BLOCK15_PRICE_ATTRIBUTE_ID (0x840E)
+#define ZCL_RX_NO_TIER_BLOCK16_PRICE_ATTRIBUTE_ID (0x840F)
+#define ZCL_RX_TIER1_BLOCK1_PRICE_ATTRIBUTE_ID (0x8410)
+#define ZCL_RX_TIER1_BLOCK2_PRICE_ATTRIBUTE_ID (0x8411)
+#define ZCL_RX_TIER1_BLOCK3_PRICE_ATTRIBUTE_ID (0x8412)
+#define ZCL_RX_TIER1_BLOCK4_PRICE_ATTRIBUTE_ID (0x8413)
+#define ZCL_RX_TIER1_BLOCK5_PRICE_ATTRIBUTE_ID (0x8414)
+#define ZCL_RX_TIER1_BLOCK6_PRICE_ATTRIBUTE_ID (0x8415)
+#define ZCL_RX_TIER1_BLOCK7_PRICE_ATTRIBUTE_ID (0x8416)
+#define ZCL_RX_TIER1_BLOCK8_PRICE_ATTRIBUTE_ID (0x8417)
+#define ZCL_RX_TIER1_BLOCK9_PRICE_ATTRIBUTE_ID (0x8418)
+#define ZCL_RX_TIER1_BLOCK10_PRICE_ATTRIBUTE_ID (0x8419)
+#define ZCL_RX_TIER1_BLOCK11_PRICE_ATTRIBUTE_ID (0x841A)
+#define ZCL_RX_TIER1_BLOCK12_PRICE_ATTRIBUTE_ID (0x841B)
+#define ZCL_RX_TIER1_BLOCK13_PRICE_ATTRIBUTE_ID (0x841C)
+#define ZCL_RX_TIER1_BLOCK14_PRICE_ATTRIBUTE_ID (0x841D)
+#define ZCL_RX_TIER1_BLOCK15_PRICE_ATTRIBUTE_ID (0x841E)
+#define ZCL_RX_TIER1_BLOCK16_PRICE_ATTRIBUTE_ID (0x841F)
+#define ZCL_RX_TIER2_BLOCK1_PRICE_ATTRIBUTE_ID (0x8420)
+#define ZCL_RX_TIER2_BLOCK2_PRICE_ATTRIBUTE_ID (0x8421)
+#define ZCL_RX_TIER2_BLOCK3_PRICE_ATTRIBUTE_ID (0x8422)
+#define ZCL_RX_TIER2_BLOCK4_PRICE_ATTRIBUTE_ID (0x8423)
+#define ZCL_RX_TIER2_BLOCK5_PRICE_ATTRIBUTE_ID (0x8424)
+#define ZCL_RX_TIER2_BLOCK6_PRICE_ATTRIBUTE_ID (0x8425)
+#define ZCL_RX_TIER2_BLOCK7_PRICE_ATTRIBUTE_ID (0x8426)
+#define ZCL_RX_TIER2_BLOCK8_PRICE_ATTRIBUTE_ID (0x8427)
+#define ZCL_RX_TIER2_BLOCK9_PRICE_ATTRIBUTE_ID (0x8428)
+#define ZCL_RX_TIER2_BLOCK10_PRICE_ATTRIBUTE_ID (0x8429)
+#define ZCL_RX_TIER2_BLOCK11_PRICE_ATTRIBUTE_ID (0x842A)
+#define ZCL_RX_TIER2_BLOCK12_PRICE_ATTRIBUTE_ID (0x842B)
+#define ZCL_RX_TIER2_BLOCK13_PRICE_ATTRIBUTE_ID (0x842C)
+#define ZCL_RX_TIER2_BLOCK14_PRICE_ATTRIBUTE_ID (0x842D)
+#define ZCL_RX_TIER2_BLOCK15_PRICE_ATTRIBUTE_ID (0x842E)
+#define ZCL_RX_TIER2_BLOCK16_PRICE_ATTRIBUTE_ID (0x842F)
+#define ZCL_RX_TIER3_BLOCK1_PRICE_ATTRIBUTE_ID (0x8430)
+#define ZCL_RX_TIER3_BLOCK2_PRICE_ATTRIBUTE_ID (0x8431)
+#define ZCL_RX_TIER3_BLOCK3_PRICE_ATTRIBUTE_ID (0x8432)
+#define ZCL_RX_TIER3_BLOCK4_PRICE_ATTRIBUTE_ID (0x8433)
+#define ZCL_RX_TIER3_BLOCK5_PRICE_ATTRIBUTE_ID (0x8434)
+#define ZCL_RX_TIER3_BLOCK6_PRICE_ATTRIBUTE_ID (0x8435)
+#define ZCL_RX_TIER3_BLOCK7_PRICE_ATTRIBUTE_ID (0x8436)
+#define ZCL_RX_TIER3_BLOCK8_PRICE_ATTRIBUTE_ID (0x8437)
+#define ZCL_RX_TIER3_BLOCK9_PRICE_ATTRIBUTE_ID (0x8438)
+#define ZCL_RX_TIER3_BLOCK10_PRICE_ATTRIBUTE_ID (0x8439)
+#define ZCL_RX_TIER3_BLOCK11_PRICE_ATTRIBUTE_ID (0x843A)
+#define ZCL_RX_TIER3_BLOCK12_PRICE_ATTRIBUTE_ID (0x843B)
+#define ZCL_RX_TIER3_BLOCK13_PRICE_ATTRIBUTE_ID (0x843C)
+#define ZCL_RX_TIER3_BLOCK14_PRICE_ATTRIBUTE_ID (0x843D)
+#define ZCL_RX_TIER3_BLOCK15_PRICE_ATTRIBUTE_ID (0x843E)
+#define ZCL_RX_TIER3_BLOCK16_PRICE_ATTRIBUTE_ID (0x843F)
+#define ZCL_RX_TIER4_BLOCK1_PRICE_ATTRIBUTE_ID (0x8440)
+#define ZCL_RX_TIER4_BLOCK2_PRICE_ATTRIBUTE_ID (0x8441)
+#define ZCL_RX_TIER4_BLOCK3_PRICE_ATTRIBUTE_ID (0x8442)
+#define ZCL_RX_TIER4_BLOCK4_PRICE_ATTRIBUTE_ID (0x8443)
+#define ZCL_RX_TIER4_BLOCK5_PRICE_ATTRIBUTE_ID (0x8444)
+#define ZCL_RX_TIER4_BLOCK6_PRICE_ATTRIBUTE_ID (0x8445)
+#define ZCL_RX_TIER4_BLOCK7_PRICE_ATTRIBUTE_ID (0x8446)
+#define ZCL_RX_TIER4_BLOCK8_PRICE_ATTRIBUTE_ID (0x8447)
+#define ZCL_RX_TIER4_BLOCK9_PRICE_ATTRIBUTE_ID (0x8448)
+#define ZCL_RX_TIER4_BLOCK10_PRICE_ATTRIBUTE_ID (0x8449)
+#define ZCL_RX_TIER4_BLOCK11_PRICE_ATTRIBUTE_ID (0x844A)
+#define ZCL_RX_TIER4_BLOCK12_PRICE_ATTRIBUTE_ID (0x844B)
+#define ZCL_RX_TIER4_BLOCK13_PRICE_ATTRIBUTE_ID (0x844C)
+#define ZCL_RX_TIER4_BLOCK14_PRICE_ATTRIBUTE_ID (0x844D)
+#define ZCL_RX_TIER4_BLOCK15_PRICE_ATTRIBUTE_ID (0x844E)
+#define ZCL_RX_TIER4_BLOCK16_PRICE_ATTRIBUTE_ID (0x844F)
+#define ZCL_RX_TIER5_BLOCK1_PRICE_ATTRIBUTE_ID (0x8450)
+#define ZCL_RX_TIER5_BLOCK2_PRICE_ATTRIBUTE_ID (0x8451)
+#define ZCL_RX_TIER5_BLOCK3_PRICE_ATTRIBUTE_ID (0x8452)
+#define ZCL_RX_TIER5_BLOCK4_PRICE_ATTRIBUTE_ID (0x8453)
+#define ZCL_RX_TIER5_BLOCK5_PRICE_ATTRIBUTE_ID (0x8454)
+#define ZCL_RX_TIER5_BLOCK6_PRICE_ATTRIBUTE_ID (0x8455)
+#define ZCL_RX_TIER5_BLOCK7_PRICE_ATTRIBUTE_ID (0x8456)
+#define ZCL_RX_TIER5_BLOCK8_PRICE_ATTRIBUTE_ID (0x8457)
+#define ZCL_RX_TIER5_BLOCK9_PRICE_ATTRIBUTE_ID (0x8458)
+#define ZCL_RX_TIER5_BLOCK10_PRICE_ATTRIBUTE_ID (0x8459)
+#define ZCL_RX_TIER5_BLOCK11_PRICE_ATTRIBUTE_ID (0x845A)
+#define ZCL_RX_TIER5_BLOCK12_PRICE_ATTRIBUTE_ID (0x845B)
+#define ZCL_RX_TIER5_BLOCK13_PRICE_ATTRIBUTE_ID (0x845C)
+#define ZCL_RX_TIER5_BLOCK14_PRICE_ATTRIBUTE_ID (0x845D)
+#define ZCL_RX_TIER5_BLOCK15_PRICE_ATTRIBUTE_ID (0x845E)
+#define ZCL_RX_TIER5_BLOCK16_PRICE_ATTRIBUTE_ID (0x845F)
+#define ZCL_RX_TIER6_BLOCK1_PRICE_ATTRIBUTE_ID (0x8460)
+#define ZCL_RX_TIER6_BLOCK2_PRICE_ATTRIBUTE_ID (0x8461)
+#define ZCL_RX_TIER6_BLOCK3_PRICE_ATTRIBUTE_ID (0x8462)
+#define ZCL_RX_TIER6_BLOCK4_PRICE_ATTRIBUTE_ID (0x8463)
+#define ZCL_RX_TIER6_BLOCK5_PRICE_ATTRIBUTE_ID (0x8464)
+#define ZCL_RX_TIER6_BLOCK6_PRICE_ATTRIBUTE_ID (0x8465)
+#define ZCL_RX_TIER6_BLOCK7_PRICE_ATTRIBUTE_ID (0x8466)
+#define ZCL_RX_TIER6_BLOCK8_PRICE_ATTRIBUTE_ID (0x8467)
+#define ZCL_RX_TIER6_BLOCK9_PRICE_ATTRIBUTE_ID (0x8468)
+#define ZCL_RX_TIER6_BLOCK10_PRICE_ATTRIBUTE_ID (0x8469)
+#define ZCL_RX_TIER6_BLOCK11_PRICE_ATTRIBUTE_ID (0x846A)
+#define ZCL_RX_TIER6_BLOCK12_PRICE_ATTRIBUTE_ID (0x846B)
+#define ZCL_RX_TIER6_BLOCK13_PRICE_ATTRIBUTE_ID (0x846C)
+#define ZCL_RX_TIER6_BLOCK14_PRICE_ATTRIBUTE_ID (0x846D)
+#define ZCL_RX_TIER6_BLOCK15_PRICE_ATTRIBUTE_ID (0x846E)
+#define ZCL_RX_TIER6_BLOCK16_PRICE_ATTRIBUTE_ID (0x846F)
+#define ZCL_RX_TIER7_BLOCK1_PRICE_ATTRIBUTE_ID (0x8470)
+#define ZCL_RX_TIER7_BLOCK2_PRICE_ATTRIBUTE_ID (0x8471)
+#define ZCL_RX_TIER7_BLOCK3_PRICE_ATTRIBUTE_ID (0x8472)
+#define ZCL_RX_TIER7_BLOCK4_PRICE_ATTRIBUTE_ID (0x8473)
+#define ZCL_RX_TIER7_BLOCK5_PRICE_ATTRIBUTE_ID (0x8474)
+#define ZCL_RX_TIER7_BLOCK6_PRICE_ATTRIBUTE_ID (0x8475)
+#define ZCL_RX_TIER7_BLOCK7_PRICE_ATTRIBUTE_ID (0x8476)
+#define ZCL_RX_TIER7_BLOCK8_PRICE_ATTRIBUTE_ID (0x8477)
+#define ZCL_RX_TIER7_BLOCK9_PRICE_ATTRIBUTE_ID (0x8478)
+#define ZCL_RX_TIER7_BLOCK10_PRICE_ATTRIBUTE_ID (0x8479)
+#define ZCL_RX_TIER7_BLOCK11_PRICE_ATTRIBUTE_ID (0x847A)
+#define ZCL_RX_TIER7_BLOCK12_PRICE_ATTRIBUTE_ID (0x847B)
+#define ZCL_RX_TIER7_BLOCK13_PRICE_ATTRIBUTE_ID (0x847C)
+#define ZCL_RX_TIER7_BLOCK14_PRICE_ATTRIBUTE_ID (0x847D)
+#define ZCL_RX_TIER7_BLOCK15_PRICE_ATTRIBUTE_ID (0x847E)
+#define ZCL_RX_TIER7_BLOCK16_PRICE_ATTRIBUTE_ID (0x847F)
+#define ZCL_RX_TIER8_BLOCK1_PRICE_ATTRIBUTE_ID (0x8480)
+#define ZCL_RX_TIER8_BLOCK2_PRICE_ATTRIBUTE_ID (0x8481)
+#define ZCL_RX_TIER8_BLOCK3_PRICE_ATTRIBUTE_ID (0x8482)
+#define ZCL_RX_TIER8_BLOCK4_PRICE_ATTRIBUTE_ID (0x8483)
+#define ZCL_RX_TIER8_BLOCK5_PRICE_ATTRIBUTE_ID (0x8484)
+#define ZCL_RX_TIER8_BLOCK6_PRICE_ATTRIBUTE_ID (0x8485)
+#define ZCL_RX_TIER8_BLOCK7_PRICE_ATTRIBUTE_ID (0x8486)
+#define ZCL_RX_TIER8_BLOCK8_PRICE_ATTRIBUTE_ID (0x8487)
+#define ZCL_RX_TIER8_BLOCK9_PRICE_ATTRIBUTE_ID (0x8488)
+#define ZCL_RX_TIER8_BLOCK10_PRICE_ATTRIBUTE_ID (0x8489)
+#define ZCL_RX_TIER8_BLOCK11_PRICE_ATTRIBUTE_ID (0x848A)
+#define ZCL_RX_TIER8_BLOCK12_PRICE_ATTRIBUTE_ID (0x848B)
+#define ZCL_RX_TIER8_BLOCK13_PRICE_ATTRIBUTE_ID (0x848C)
+#define ZCL_RX_TIER8_BLOCK14_PRICE_ATTRIBUTE_ID (0x848D)
+#define ZCL_RX_TIER8_BLOCK15_PRICE_ATTRIBUTE_ID (0x848E)
+#define ZCL_RX_TIER8_BLOCK16_PRICE_ATTRIBUTE_ID (0x848F)
+#define ZCL_RX_TIER9_BLOCK1_PRICE_ATTRIBUTE_ID (0x8490)
+#define ZCL_RX_TIER9_BLOCK2_PRICE_ATTRIBUTE_ID (0x8491)
+#define ZCL_RX_TIER9_BLOCK3_PRICE_ATTRIBUTE_ID (0x8492)
+#define ZCL_RX_TIER9_BLOCK4_PRICE_ATTRIBUTE_ID (0x8493)
+#define ZCL_RX_TIER9_BLOCK5_PRICE_ATTRIBUTE_ID (0x8494)
+#define ZCL_RX_TIER9_BLOCK6_PRICE_ATTRIBUTE_ID (0x8495)
+#define ZCL_RX_TIER9_BLOCK7_PRICE_ATTRIBUTE_ID (0x8496)
+#define ZCL_RX_TIER9_BLOCK8_PRICE_ATTRIBUTE_ID (0x8497)
+#define ZCL_RX_TIER9_BLOCK9_PRICE_ATTRIBUTE_ID (0x8498)
+#define ZCL_RX_TIER9_BLOCK10_PRICE_ATTRIBUTE_ID (0x8499)
+#define ZCL_RX_TIER9_BLOCK11_PRICE_ATTRIBUTE_ID (0x849A)
+#define ZCL_RX_TIER9_BLOCK12_PRICE_ATTRIBUTE_ID (0x849B)
+#define ZCL_RX_TIER9_BLOCK13_PRICE_ATTRIBUTE_ID (0x849C)
+#define ZCL_RX_TIER9_BLOCK14_PRICE_ATTRIBUTE_ID (0x849D)
+#define ZCL_RX_TIER9_BLOCK15_PRICE_ATTRIBUTE_ID (0x849E)
+#define ZCL_RX_TIER9_BLOCK16_PRICE_ATTRIBUTE_ID (0x849F)
+#define ZCL_RX_TIER10_BLOCK1_PRICE_ATTRIBUTE_ID (0x84A0)
+#define ZCL_RX_TIER10_BLOCK2_PRICE_ATTRIBUTE_ID (0x84A1)
+#define ZCL_RX_TIER10_BLOCK3_PRICE_ATTRIBUTE_ID (0x84A2)
+#define ZCL_RX_TIER10_BLOCK4_PRICE_ATTRIBUTE_ID (0x84A3)
+#define ZCL_RX_TIER10_BLOCK5_PRICE_ATTRIBUTE_ID (0x84A4)
+#define ZCL_RX_TIER10_BLOCK6_PRICE_ATTRIBUTE_ID (0x84A5)
+#define ZCL_RX_TIER10_BLOCK7_PRICE_ATTRIBUTE_ID (0x84A6)
+#define ZCL_RX_TIER10_BLOCK8_PRICE_ATTRIBUTE_ID (0x84A7)
+#define ZCL_RX_TIER10_BLOCK9_PRICE_ATTRIBUTE_ID (0x84A8)
+#define ZCL_RX_TIER10_BLOCK10_PRICE_ATTRIBUTE_ID (0x84A9)
+#define ZCL_RX_TIER10_BLOCK11_PRICE_ATTRIBUTE_ID (0x84AA)
+#define ZCL_RX_TIER10_BLOCK12_PRICE_ATTRIBUTE_ID (0x84AB)
+#define ZCL_RX_TIER10_BLOCK13_PRICE_ATTRIBUTE_ID (0x84AC)
+#define ZCL_RX_TIER10_BLOCK14_PRICE_ATTRIBUTE_ID (0x84AD)
+#define ZCL_RX_TIER10_BLOCK15_PRICE_ATTRIBUTE_ID (0x84AE)
+#define ZCL_RX_TIER10_BLOCK16_PRICE_ATTRIBUTE_ID (0x84AF)
+#define ZCL_RX_TIER11_BLOCK1_PRICE_ATTRIBUTE_ID (0x84B0)
+#define ZCL_RX_TIER11_BLOCK2_PRICE_ATTRIBUTE_ID (0x84B1)
+#define ZCL_RX_TIER11_BLOCK3_PRICE_ATTRIBUTE_ID (0x84B2)
+#define ZCL_RX_TIER11_BLOCK4_PRICE_ATTRIBUTE_ID (0x84B3)
+#define ZCL_RX_TIER11_BLOCK5_PRICE_ATTRIBUTE_ID (0x84B4)
+#define ZCL_RX_TIER11_BLOCK6_PRICE_ATTRIBUTE_ID (0x84B5)
+#define ZCL_RX_TIER11_BLOCK7_PRICE_ATTRIBUTE_ID (0x84B6)
+#define ZCL_RX_TIER11_BLOCK8_PRICE_ATTRIBUTE_ID (0x84B7)
+#define ZCL_RX_TIER11_BLOCK9_PRICE_ATTRIBUTE_ID (0x84B8)
+#define ZCL_RX_TIER11_BLOCK10_PRICE_ATTRIBUTE_ID (0x84B9)
+#define ZCL_RX_TIER11_BLOCK11_PRICE_ATTRIBUTE_ID (0x84BA)
+#define ZCL_RX_TIER11_BLOCK12_PRICE_ATTRIBUTE_ID (0x84BB)
+#define ZCL_RX_TIER11_BLOCK13_PRICE_ATTRIBUTE_ID (0x84BC)
+#define ZCL_RX_TIER11_BLOCK14_PRICE_ATTRIBUTE_ID (0x84BD)
+#define ZCL_RX_TIER11_BLOCK15_PRICE_ATTRIBUTE_ID (0x84BE)
+#define ZCL_RX_TIER11_BLOCK16_PRICE_ATTRIBUTE_ID (0x84BF)
+#define ZCL_RX_TIER12_BLOCK1_PRICE_ATTRIBUTE_ID (0x84C0)
+#define ZCL_RX_TIER12_BLOCK2_PRICE_ATTRIBUTE_ID (0x84C1)
+#define ZCL_RX_TIER12_BLOCK3_PRICE_ATTRIBUTE_ID (0x84C2)
+#define ZCL_RX_TIER12_BLOCK4_PRICE_ATTRIBUTE_ID (0x84C3)
+#define ZCL_RX_TIER12_BLOCK5_PRICE_ATTRIBUTE_ID (0x84C4)
+#define ZCL_RX_TIER12_BLOCK6_PRICE_ATTRIBUTE_ID (0x84C5)
+#define ZCL_RX_TIER12_BLOCK7_PRICE_ATTRIBUTE_ID (0x84C6)
+#define ZCL_RX_TIER12_BLOCK8_PRICE_ATTRIBUTE_ID (0x84C7)
+#define ZCL_RX_TIER12_BLOCK9_PRICE_ATTRIBUTE_ID (0x84C8)
+#define ZCL_RX_TIER12_BLOCK10_PRICE_ATTRIBUTE_ID (0x84C9)
+#define ZCL_RX_TIER12_BLOCK11_PRICE_ATTRIBUTE_ID (0x84CA)
+#define ZCL_RX_TIER12_BLOCK12_PRICE_ATTRIBUTE_ID (0x84CB)
+#define ZCL_RX_TIER12_BLOCK13_PRICE_ATTRIBUTE_ID (0x84CC)
+#define ZCL_RX_TIER12_BLOCK14_PRICE_ATTRIBUTE_ID (0x84CD)
+#define ZCL_RX_TIER12_BLOCK15_PRICE_ATTRIBUTE_ID (0x84CE)
+#define ZCL_RX_TIER12_BLOCK16_PRICE_ATTRIBUTE_ID (0x84CF)
+#define ZCL_RX_TIER13_BLOCK1_PRICE_ATTRIBUTE_ID (0x84D0)
+#define ZCL_RX_TIER13_BLOCK2_PRICE_ATTRIBUTE_ID (0x84D1)
+#define ZCL_RX_TIER13_BLOCK3_PRICE_ATTRIBUTE_ID (0x84D2)
+#define ZCL_RX_TIER13_BLOCK4_PRICE_ATTRIBUTE_ID (0x84D3)
+#define ZCL_RX_TIER13_BLOCK5_PRICE_ATTRIBUTE_ID (0x84D4)
+#define ZCL_RX_TIER13_BLOCK6_PRICE_ATTRIBUTE_ID (0x84D5)
+#define ZCL_RX_TIER13_BLOCK7_PRICE_ATTRIBUTE_ID (0x84D6)
+#define ZCL_RX_TIER13_BLOCK8_PRICE_ATTRIBUTE_ID (0x84D7)
+#define ZCL_RX_TIER13_BLOCK9_PRICE_ATTRIBUTE_ID (0x84D8)
+#define ZCL_RX_TIER13_BLOCK10_PRICE_ATTRIBUTE_ID (0x84D9)
+#define ZCL_RX_TIER13_BLOCK11_PRICE_ATTRIBUTE_ID (0x84DA)
+#define ZCL_RX_TIER13_BLOCK12_PRICE_ATTRIBUTE_ID (0x84DB)
+#define ZCL_RX_TIER13_BLOCK13_PRICE_ATTRIBUTE_ID (0x84DC)
+#define ZCL_RX_TIER13_BLOCK14_PRICE_ATTRIBUTE_ID (0x84DD)
+#define ZCL_RX_TIER13_BLOCK15_PRICE_ATTRIBUTE_ID (0x84DE)
+#define ZCL_RX_TIER13_BLOCK16_PRICE_ATTRIBUTE_ID (0x84DF)
+#define ZCL_RX_TIER14_BLOCK1_PRICE_ATTRIBUTE_ID (0x84E0)
+#define ZCL_RX_TIER14_BLOCK2_PRICE_ATTRIBUTE_ID (0x84E1)
+#define ZCL_RX_TIER14_BLOCK3_PRICE_ATTRIBUTE_ID (0x84E2)
+#define ZCL_RX_TIER14_BLOCK4_PRICE_ATTRIBUTE_ID (0x84E3)
+#define ZCL_RX_TIER14_BLOCK5_PRICE_ATTRIBUTE_ID (0x84E4)
+#define ZCL_RX_TIER14_BLOCK6_PRICE_ATTRIBUTE_ID (0x84E5)
+#define ZCL_RX_TIER14_BLOCK7_PRICE_ATTRIBUTE_ID (0x84E6)
+#define ZCL_RX_TIER14_BLOCK8_PRICE_ATTRIBUTE_ID (0x84E7)
+#define ZCL_RX_TIER14_BLOCK9_PRICE_ATTRIBUTE_ID (0x84E8)
+#define ZCL_RX_TIER14_BLOCK10_PRICE_ATTRIBUTE_ID (0x84E9)
+#define ZCL_RX_TIER14_BLOCK11_PRICE_ATTRIBUTE_ID (0x84EA)
+#define ZCL_RX_TIER14_BLOCK12_PRICE_ATTRIBUTE_ID (0x84EB)
+#define ZCL_RX_TIER14_BLOCK13_PRICE_ATTRIBUTE_ID (0x84EC)
+#define ZCL_RX_TIER14_BLOCK14_PRICE_ATTRIBUTE_ID (0x84ED)
+#define ZCL_RX_TIER14_BLOCK15_PRICE_ATTRIBUTE_ID (0x84EE)
+#define ZCL_RX_TIER14_BLOCK16_PRICE_ATTRIBUTE_ID (0x84EF)
+#define ZCL_RX_TIER15_BLOCK1_PRICE_ATTRIBUTE_ID (0x84F0)
+#define ZCL_RX_TIER15_BLOCK2_PRICE_ATTRIBUTE_ID (0x84F1)
+#define ZCL_RX_TIER15_BLOCK3_PRICE_ATTRIBUTE_ID (0x84F2)
+#define ZCL_RX_TIER15_BLOCK4_PRICE_ATTRIBUTE_ID (0x84F3)
+#define ZCL_RX_TIER15_BLOCK5_PRICE_ATTRIBUTE_ID (0x84F4)
+#define ZCL_RX_TIER15_BLOCK6_PRICE_ATTRIBUTE_ID (0x84F5)
+#define ZCL_RX_TIER15_BLOCK7_PRICE_ATTRIBUTE_ID (0x84F6)
+#define ZCL_RX_TIER15_BLOCK8_PRICE_ATTRIBUTE_ID (0x84F7)
+#define ZCL_RX_TIER15_BLOCK9_PRICE_ATTRIBUTE_ID (0x84F8)
+#define ZCL_RX_TIER15_BLOCK10_PRICE_ATTRIBUTE_ID (0x84F9)
+#define ZCL_RX_TIER15_BLOCK11_PRICE_ATTRIBUTE_ID (0x84FA)
+#define ZCL_RX_TIER15_BLOCK12_PRICE_ATTRIBUTE_ID (0x84FB)
+#define ZCL_RX_TIER15_BLOCK13_PRICE_ATTRIBUTE_ID (0x84FC)
+#define ZCL_RX_TIER15_BLOCK14_PRICE_ATTRIBUTE_ID (0x84FD)
+#define ZCL_RX_TIER15_BLOCK15_PRICE_ATTRIBUTE_ID (0x84FE)
+#define ZCL_RX_TIER15_BLOCK16_PRICE_ATTRIBUTE_ID (0x84FF)
+#define ZCL_RX_PRICE_TIER16_ATTRIBUTE_ID (0x850F)
+#define ZCL_RX_PRICE_TIER17_ATTRIBUTE_ID (0x8510)
+#define ZCL_RX_PRICE_TIER18_ATTRIBUTE_ID (0x8511)
+#define ZCL_RX_PRICE_TIER19_ATTRIBUTE_ID (0x8512)
+#define ZCL_RX_PRICE_TIER20_ATTRIBUTE_ID (0x8513)
+#define ZCL_RX_PRICE_TIER21_ATTRIBUTE_ID (0x8514)
+#define ZCL_RX_PRICE_TIER22_ATTRIBUTE_ID (0x8515)
+#define ZCL_RX_PRICE_TIER23_ATTRIBUTE_ID (0x8516)
+#define ZCL_RX_PRICE_TIER24_ATTRIBUTE_ID (0x8517)
+#define ZCL_RX_PRICE_TIER25_ATTRIBUTE_ID (0x8518)
+#define ZCL_RX_PRICE_TIER26_ATTRIBUTE_ID (0x8519)
+#define ZCL_RX_PRICE_TIER27_ATTRIBUTE_ID (0x851A)
+#define ZCL_RX_PRICE_TIER28_ATTRIBUTE_ID (0x851B)
+#define ZCL_RX_PRICE_TIER29_ATTRIBUTE_ID (0x851C)
+#define ZCL_RX_PRICE_TIER30_ATTRIBUTE_ID (0x851D)
+#define ZCL_RX_PRICE_TIER31_ATTRIBUTE_ID (0x851E)
+#define ZCL_RX_PRICE_TIER32_ATTRIBUTE_ID (0x851F)
+#define ZCL_RX_PRICE_TIER33_ATTRIBUTE_ID (0x8520)
+#define ZCL_RX_PRICE_TIER34_ATTRIBUTE_ID (0x8521)
+#define ZCL_RX_PRICE_TIER35_ATTRIBUTE_ID (0x8522)
+#define ZCL_RX_PRICE_TIER36_ATTRIBUTE_ID (0x8523)
+#define ZCL_RX_PRICE_TIER37_ATTRIBUTE_ID (0x8524)
+#define ZCL_RX_PRICE_TIER38_ATTRIBUTE_ID (0x8525)
+#define ZCL_RX_PRICE_TIER39_ATTRIBUTE_ID (0x8526)
+#define ZCL_RX_PRICE_TIER40_ATTRIBUTE_ID (0x8527)
+#define ZCL_RX_PRICE_TIER41_ATTRIBUTE_ID (0x8528)
+#define ZCL_RX_PRICE_TIER42_ATTRIBUTE_ID (0x8529)
+#define ZCL_RX_PRICE_TIER43_ATTRIBUTE_ID (0x852A)
+#define ZCL_RX_PRICE_TIER44_ATTRIBUTE_ID (0x852B)
+#define ZCL_RX_PRICE_TIER45_ATTRIBUTE_ID (0x852C)
+#define ZCL_RX_PRICE_TIER46_ATTRIBUTE_ID (0x852D)
+#define ZCL_RX_PRICE_TIER47_ATTRIBUTE_ID (0x852E)
+#define ZCL_RX_PRICE_TIER48_ATTRIBUTE_ID (0x852F)
+#define ZCL_RX_TARIFF_LABEL_ATTRIBUTE_ID (0x8610)
+#define ZCL_RX_NUMBER_OF_PRICE_TIERS_IN_USE_ATTRIBUTE_ID (0x8611)
+#define ZCL_RX_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE_ATTRIBUTE_ID (0x8612)
+#define ZCL_RX_TIER_BLOCK_MODE_ATTRIBUTE_ID (0x8613)
+#define ZCL_RX_TARIFF_RESOLUTION_PERIOD_ATTRIBUTE_ID (0x8615)
+#define ZCL_RX_CO2_ATTRIBUTE_ID (0x8625)
+#define ZCL_RX_CO2_UNIT_ATTRIBUTE_ID (0x8626)
+#define ZCL_RX_CO2_TRAILING_DIGIT_ATTRIBUTE_ID (0x8627)
+#define ZCL_RX_CURRENT_BILLING_PERIOD_START_ATTRIBUTE_ID (0x8700)
+#define ZCL_RX_CURRENT_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x8701)
+#define ZCL_RX_LAST_BILLING_PERIOD_START_ATTRIBUTE_ID (0x8702)
+#define ZCL_RX_LAST_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x8703)
+#define ZCL_RX_LAST_BILLING_PERIOD_CONSOLIDATED_BILL_ATTRIBUTE_ID (0x8704)
+
+// Attribute ids for cluster: Demand Response and Load Control
+
+// Client attributes
+#define ZCL_UTILITY_ENROLLMENT_GROUP_ATTRIBUTE_ID (0x0000)
+#define ZCL_START_RANDOMIZATION_MINUTES_ATTRIBUTE_ID (0x0001)
+#define ZCL_DURATION_RANDOMIZATION_MINUTES_ATTRIBUTE_ID (0x0002)
+#define ZCL_DEVICE_CLASS_VALUE_ATTRIBUTE_ID (0x0003)
+
+// Server attributes
+
+// Attribute ids for cluster: Simple Metering
+
+// Client attributes
+#define ZCL_FUNCTIONAL_NOTIFICATION_FLAGS_ATTRIBUTE_ID (0x0000)
+#define ZCL_NOTIFICATION_FLAGS_2_ATTRIBUTE_ID (0x0001)
+#define ZCL_NOTIFICATION_FLAGS_3_ATTRIBUTE_ID (0x0002)
+#define ZCL_NOTIFICATION_FLAGS_4_ATTRIBUTE_ID (0x0003)
+#define ZCL_NOTIFICATION_FLAGS_5_ATTRIBUTE_ID (0x0004)
+#define ZCL_NOTIFICATION_FLAGS_6_ATTRIBUTE_ID (0x0005)
+#define ZCL_NOTIFICATION_FLAGS_7_ATTRIBUTE_ID (0x0006)
+#define ZCL_NOTIFICATION_FLAGS_8_ATTRIBUTE_ID (0x0007)
+
+// Server attributes
+#define ZCL_CURRENT_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0000)
+#define ZCL_CURRENT_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0001)
+#define ZCL_CURRENT_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0002)
+#define ZCL_CURRENT_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x0003)
+#define ZCL_DFT_SUMMATION_ATTRIBUTE_ID (0x0004)
+#define ZCL_DAILY_FREEZE_TIME_ATTRIBUTE_ID (0x0005)
+#define ZCL_POWER_FACTOR_ATTRIBUTE_ID (0x0006)
+#define ZCL_READING_SNAP_SHOT_TIME_ATTRIBUTE_ID (0x0007)
+#define ZCL_CURRENT_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x0008)
+#define ZCL_CURRENT_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0009)
+#define ZCL_DEFAULT_UPDATE_PERIOD_ATTRIBUTE_ID (0x000A)
+#define ZCL_FAST_POLL_UPDATE_PERIOD_ATTRIBUTE_ID (0x000B)
+#define ZCL_CURRENT_BLOCK_PERIOD_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x000C)
+#define ZCL_DAILY_CONSUMPTION_TARGET_ATTRIBUTE_ID (0x000D)
+#define ZCL_CURRENT_BLOCK_ATTRIBUTE_ID (0x000E)
+#define ZCL_PROFILE_INTERVAL_PERIOD_ATTRIBUTE_ID (0x000F)
+#define ZCL_INTERVAL_READ_REPORTING_PERIOD_ATTRIBUTE_ID (0x0010)
+#define ZCL_PRESET_READING_TIME_ATTRIBUTE_ID (0x0011)
+#define ZCL_VOLUME_PER_REPORT_ATTRIBUTE_ID (0x0012)
+#define ZCL_FLOW_RESTRICTION_ATTRIBUTE_ID (0x0013)
+#define ZCL_SUPPLY_STATUS_ATTRIBUTE_ID (0x0014)
+#define ZCL_CURRENT_INLET_ENERGY_CARRIER_SUMMATION_ATTRIBUTE_ID (0x0015)
+#define ZCL_CURRENT_OUTLET_ENERGY_CARRIER_SUMMATION_ATTRIBUTE_ID (0x0016)
+#define ZCL_INLET_TEMPERATURE_ATTRIBUTE_ID (0x0017)
+#define ZCL_OUTLET_TEMPERATURE_ATTRIBUTE_ID (0x0018)
+#define ZCL_CONTROL_TEMPERATURE_ATTRIBUTE_ID (0x0019)
+#define ZCL_CURRENT_INLET_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x001A)
+#define ZCL_CURRENT_OUTLET_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x001B)
+#define ZCL_PREVIOUS_BLOCK_PERIOD_CONSUMIPTION_DELIVERED_ATTRIBUTE_ID (0x001C)
+#define ZCL_CURRENT_BLOCK_PERIOD_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x001D)
+#define ZCL_CURRENT_BLOCK_RECEIVED_ATTRIBUTE_ID (0x001E)
+#define ZCL_DFT_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x001F)
+#define ZCL_ACTIVE_REGISTER_TIER_DELIVERED_ATTRIBUTE_ID (0x0020)
+#define ZCL_ACTIVE_REGISTER_TIER_RECEIVED_ATTRIBUTE_ID (0x0021)
+#define ZCL_LAST_BLOCK_SWITCH_TIME_ATTRIBUTE_ID (0x0022)
+#define ZCL_CURRENT_TIER1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0100)
+#define ZCL_CURRENT_TIER1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0101)
+#define ZCL_CURRENT_TIER2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0102)
+#define ZCL_CURRENT_TIER2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0103)
+#define ZCL_CURRENT_TIER3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0104)
+#define ZCL_CURRENT_TIER3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0105)
+#define ZCL_CURRENT_TIER4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0106)
+#define ZCL_CURRENT_TIER4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0107)
+#define ZCL_CURRENT_TIER5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0108)
+#define ZCL_CURRENT_TIER5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0109)
+#define ZCL_CURRENT_TIER6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x010A)
+#define ZCL_CURRENT_TIER6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x010B)
+#define ZCL_CURRENT_TIER7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x010C)
+#define ZCL_CURRENT_TIER7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x010D)
+#define ZCL_CURRENT_TIER8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x010E)
+#define ZCL_CURRENT_TIER8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x010F)
+#define ZCL_CURRENT_TIER9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0110)
+#define ZCL_CURRENT_TIER9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0111)
+#define ZCL_CURRENT_TIER10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0112)
+#define ZCL_CURRENT_TIER10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0113)
+#define ZCL_CURRENT_TIER11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0114)
+#define ZCL_CURRENT_TIER11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0115)
+#define ZCL_CURRENT_TIER12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0116)
+#define ZCL_CURRENT_TIER12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0117)
+#define ZCL_CURRENT_TIER13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0118)
+#define ZCL_CURRENT_TIER13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0119)
+#define ZCL_CURRENT_TIER14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x011A)
+#define ZCL_CURRENT_TIER14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x011B)
+#define ZCL_CURRENT_TIER15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x011C)
+#define ZCL_CURRENT_TIER15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x011D)
+#define ZCL_CURRENT_TIER16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x011E)
+#define ZCL_CURRENT_TIER16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x011F)
+#define ZCL_CURRENT_TIER17_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0120)
+#define ZCL_CURRENT_TIER17_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0121)
+#define ZCL_CURRENT_TIER18_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0122)
+#define ZCL_CURRENT_TIER18_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0123)
+#define ZCL_CURRENT_TIER19_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0124)
+#define ZCL_CURRENT_TIER19_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0125)
+#define ZCL_CURRENT_TIER20_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0126)
+#define ZCL_CURRENT_TIER20_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0127)
+#define ZCL_CURRENT_TIER21_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0128)
+#define ZCL_CURRENT_TIER21_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0129)
+#define ZCL_CURRENT_TIER22_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x012A)
+#define ZCL_CURRENT_TIER22_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x012B)
+#define ZCL_CURRENT_TIER23_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x012C)
+#define ZCL_CURRENT_TIER23_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x012D)
+#define ZCL_CURRENT_TIER24_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x012E)
+#define ZCL_CURRENT_TIER24_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x012F)
+#define ZCL_CURRENT_TIER25_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0130)
+#define ZCL_CURRENT_TIER25_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0131)
+#define ZCL_CURRENT_TIER26_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0132)
+#define ZCL_CURRENT_TIER26_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0133)
+#define ZCL_CURRENT_TIER27_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0134)
+#define ZCL_CURRENT_TIER27_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0135)
+#define ZCL_CURRENT_TIER28_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0136)
+#define ZCL_CURRENT_TIER28_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0137)
+#define ZCL_CURRENT_TIER29_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0138)
+#define ZCL_CURRENT_TIER29_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0139)
+#define ZCL_CURRENT_TIER30_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x013A)
+#define ZCL_CURRENT_TIER30_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x013B)
+#define ZCL_CURRENT_TIER31_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x013C)
+#define ZCL_CURRENT_TIER31_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x013D)
+#define ZCL_CURRENT_TIER32_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x013E)
+#define ZCL_CURRENT_TIER32_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x013F)
+#define ZCL_CURRENT_TIER33_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0140)
+#define ZCL_CURRENT_TIER33_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0141)
+#define ZCL_CURRENT_TIER34_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0142)
+#define ZCL_CURRENT_TIER34_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0143)
+#define ZCL_CURRENT_TIER35_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0144)
+#define ZCL_CURRENT_TIER35_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0145)
+#define ZCL_CURRENT_TIER36_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0146)
+#define ZCL_CURRENT_TIER36_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0147)
+#define ZCL_CURRENT_TIER37_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0148)
+#define ZCL_CURRENT_TIER37_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0149)
+#define ZCL_CURRENT_TIER38_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x014A)
+#define ZCL_CURRENT_TIER38_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x014B)
+#define ZCL_CURRENT_TIER39_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x014C)
+#define ZCL_CURRENT_TIER39_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x014D)
+#define ZCL_CURRENT_TIER40_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x014E)
+#define ZCL_CURRENT_TIER40_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x014F)
+#define ZCL_CURRENT_TIER41_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0150)
+#define ZCL_CURRENT_TIER41_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0151)
+#define ZCL_CURRENT_TIER42_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0152)
+#define ZCL_CURRENT_TIER42_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0153)
+#define ZCL_CURRENT_TIER43_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0154)
+#define ZCL_CURRENT_TIER43_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0155)
+#define ZCL_CURRENT_TIER44_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0156)
+#define ZCL_CURRENT_TIER44_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0157)
+#define ZCL_CURRENT_TIER45_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0158)
+#define ZCL_CURRENT_TIER45_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0159)
+#define ZCL_CURRENT_TIER46_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x015A)
+#define ZCL_CURRENT_TIER46_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x015B)
+#define ZCL_CURRENT_TIER47_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x015C)
+#define ZCL_CURRENT_TIER47_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x015D)
+#define ZCL_CURRENT_TIER48_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x015E)
+#define ZCL_CURRENT_TIER48_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x015F)
+#define ZCL_CPP1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x01FC)
+#define ZCL_CPP2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x01FE)
+#define ZCL_STATUS_ATTRIBUTE_ID (0x0200)
+#define ZCL_REMAINING_BATTERY_LIFE_ATTRIBUTE_ID (0x0201)
+#define ZCL_HOURS_IN_OPERATION_ATTRIBUTE_ID (0x0202)
+#define ZCL_HOURS_IN_FAULT_ATTRIBUTE_ID (0x0203)
+#define ZCL_EXTENDED_STATUS_ATTRIBUTE_ID (0x0204)
+#define ZCL_REMAINING_BATTERY_LIFE_IN_DAYS_ATTRIBUTE_ID (0x0205)
+#define ZCL_CURRENT_METER_ID_ATTRIBUTE_ID (0x0206)
+#define ZCL_AMBIENT_CONSUMPTION_INDICATOR_ATTRIBUTE_ID (0x0207)
+#define ZCL_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0300)
+#define ZCL_MULTIPLIER_ATTRIBUTE_ID (0x0301)
+#define ZCL_DIVISOR_ATTRIBUTE_ID (0x0302)
+#define ZCL_SUMMATION_FORMATTING_ATTRIBUTE_ID (0x0303)
+#define ZCL_DEMAND_FORMATTING_ATTRIBUTE_ID (0x0304)
+#define ZCL_HISTORICAL_CONSUMPTION_FORMATTING_ATTRIBUTE_ID (0x0305)
+#define ZCL_METERING_DEVICE_TYPE_ATTRIBUTE_ID (0x0306)
+#define ZCL_SITE_ID_ATTRIBUTE_ID (0x0307)
+#define ZCL_METER_SERIAL_NUMBER_ATTRIBUTE_ID (0x0308)
+#define ZCL_ENERGY_CARRIER_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0309)
+#define ZCL_ENERGY_CARRIER_SUMMATION_FORMATTING_ATTRIBUTE_ID (0x030A)
+#define ZCL_ENERGY_CARRIER_DEMAND_FORMATTING_ATTRIBUTE_ID (0x030B)
+#define ZCL_TEMPERATURE_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x030C)
+#define ZCL_TEMPERATURE_FORMATTING_ATTRIBUTE_ID (0x030D)
+#define ZCL_MODULE_SERIAL_NUMBER_ATTRIBUTE_ID (0x030E)
+#define ZCL_OPERATING_TARIFF_LABEL_DELIVERED_ATTRIBUTE_ID (0x030F)
+#define ZCL_OPERATING_TARIFF_LABEL_RECEIVED_ATTRIBUTE_ID (0x0310)
+#define ZCL_CUSTOMER_ID_NUMBER_ATTRIBUTE_ID (0x0311)
+#define ZCL_ALTERNATIVE_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0312)
+#define ZCL_ALTERNATIVE_DEMAND_FORMATTING_ATTRIBUTE_ID (0x0313)
+#define ZCL_ALTERNATIVE_CONSUMPTION_FORMATTING_ATTRIBUTE_ID (0x0314)
+#define ZCL_INSTANTANEOUS_DEMAND_ATTRIBUTE_ID (0x0400)
+#define ZCL_CURRENT_DAY_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0401)
+#define ZCL_CURRENT_DAY_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0402)
+#define ZCL_PREVIOUS_DAY_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0403)
+#define ZCL_PREVIOUS_DAY_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0404)
+#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_START_TIME_DELIVERED_ATTRIBUTE_ID (0x0405)
+#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_START_TIME_RECEIVED_ATTRIBUTE_ID (0x0406)
+#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_VALUE_DELIVERED_ATTRIBUTE_ID (0x0407)
+#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_VALUE_RECEIVED_ATTRIBUTE_ID (0x0408)
+#define ZCL_CURRENT_DAY_MAX_PRESSURE_ATTRIBUTE_ID (0x0409)
+#define ZCL_CURRENT_DAY_MIN_PRESSURE_ATTRIBUTE_ID (0x040A)
+#define ZCL_PREVIOUS_DAY_MAX_PRESSURE_ATTRIBUTE_ID (0x040B)
+#define ZCL_PREVIOUS_DAY_MIN_PRESSURE_ATTRIBUTE_ID (0x040C)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_ATTRIBUTE_ID (0x040D)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_ATTRIBUTE_ID (0x040E)
+#define ZCL_CURRENT_MONTH_MAX_DEMAND_ATTRIBUTE_ID (0x040F)
+#define ZCL_CURRENT_YEAR_MAX_DEMAND_ATTRIBUTE_ID (0x0410)
+#define ZCL_CURRENT_DAY_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0411)
+#define ZCL_PREVIOUS_DAY_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0412)
+#define ZCL_CURRENT_MONTH_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0413)
+#define ZCL_CURRENT_MONTH_MIN_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0414)
+#define ZCL_CURRENT_YEAR_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0415)
+#define ZCL_CURRENT_YEAR_MIN_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x0416)
+#define ZCL_PREVIOUS_DAY2_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0420)
+#define ZCL_PREVIOUS_DAY2_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0421)
+#define ZCL_PREVIOUS_DAY3_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0422)
+#define ZCL_PREVIOUS_DAY3_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0423)
+#define ZCL_PREVIOUS_DAY4_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0424)
+#define ZCL_PREVIOUS_DAY4_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0425)
+#define ZCL_PREVIOUS_DAY5_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0426)
+#define ZCL_PREVIOUS_DAY5_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0427)
+#define ZCL_PREVIOUS_DAY6_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0428)
+#define ZCL_PREVIOUS_DAY6_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0429)
+#define ZCL_PREVIOUS_DAY7_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x042A)
+#define ZCL_PREVIOUS_DAY7_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x042B)
+#define ZCL_PREVIOUS_DAY8_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x042C)
+#define ZCL_PREVIOUS_DAY8_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x042D)
+#define ZCL_CURRENT_WEEK_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0430)
+#define ZCL_CURRENT_WEEK_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0431)
+#define ZCL_PREVIOUS_WEEK_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0432)
+#define ZCL_PREVIOUS_WEEK_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0433)
+#define ZCL_PREVIOUS_WEEK2_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0434)
+#define ZCL_PREVIOUS_WEEK2_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0435)
+#define ZCL_PREVIOUS_WEEK3_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0436)
+#define ZCL_PREVIOUS_WEEK3_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0437)
+#define ZCL_PREVIOUS_WEEK4_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0438)
+#define ZCL_PREVIOUS_WEEK4_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0439)
+#define ZCL_PREVIOUS_WEEK5_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x043A)
+#define ZCL_PREVIOUS_WEEK5_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x043B)
+#define ZCL_CURRENT_MONTH_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0440)
+#define ZCL_CURRENT_MONTH_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0441)
+#define ZCL_PREVIOUS_MONTH_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0442)
+#define ZCL_PREVIOUS_MONTH_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0443)
+#define ZCL_PREVIOUS_MONTH2_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0444)
+#define ZCL_PREVIOUS_MONTH2_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0445)
+#define ZCL_PREVIOUS_MONTH3_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0446)
+#define ZCL_PREVIOUS_MONTH3_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0447)
+#define ZCL_PREVIOUS_MONTH4_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0448)
+#define ZCL_PREVIOUS_MONTH4_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0449)
+#define ZCL_PREVIOUS_MONTH5_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x044A)
+#define ZCL_PREVIOUS_MONTH5_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x044B)
+#define ZCL_PREVIOUS_MONTH6_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x044C)
+#define ZCL_PREVIOUS_MONTH6_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x044D)
+#define ZCL_PREVIOUS_MONTH7_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x044E)
+#define ZCL_PREVIOUS_MONTH7_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x044F)
+#define ZCL_PREVIOUS_MONTH8_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0450)
+#define ZCL_PREVIOUS_MONTH8_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0451)
+#define ZCL_PREVIOUS_MONTH9_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0452)
+#define ZCL_PREVIOUS_MONTH9_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0453)
+#define ZCL_PREVIOUS_MONTH10_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0454)
+#define ZCL_PREVIOUS_MONTH10_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0455)
+#define ZCL_PREVIOUS_MONTH11_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0456)
+#define ZCL_PREVIOUS_MONTH11_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0457)
+#define ZCL_PREVIOUS_MONTH12_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0458)
+#define ZCL_PREVIOUS_MONTH12_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0459)
+#define ZCL_PREVIOUS_MONTH13_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x045A)
+#define ZCL_PREVIOUS_MONTH13_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x045B)
+#define ZCL_METERING_HISTORICAL_FREEZE_TIME_ATTRIBUTE_ID (0x045C)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x045D)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x045E)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x045F)
+#define ZCL_CURRENT_DAY_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0460)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0461)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x0462)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x0463)
+#define ZCL_PREVIOUS_DAY_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0464)
+#define ZCL_MAX_NUMBER_OF_PERIODS_DELIVERED_ATTRIBUTE_ID (0x0500)
+#define ZCL_CURRENT_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0600)
+#define ZCL_DEMAND_LIMIT_ATTRIBUTE_ID (0x0601)
+#define ZCL_DEMAND_INTEGRATION_PERIOD_ATTRIBUTE_ID (0x0602)
+#define ZCL_NUMBER_OF_DEMAND_SUBINTERVALS_ATTRIBUTE_ID (0x0603)
+#define ZCL_DEMAND_LIMIT_ARM_DURATION_IN_MINUTES_ATTRIBUTE_ID (0x0604)
+#define ZCL_LOAD_LIMIT_SUPPLY_STATE_ATTRIBUTE_ID (0x0605)
+#define ZCL_LOAD_LIMIT_COUNTER_ATTRIBUTE_ID (0x0606)
+#define ZCL_SUPPLY_TAMPER_STATE_ATTRIBUTE_ID (0x0607)
+#define ZCL_SUPPLY_DEPLETION_STATE_ATTRIBUTE_ID (0x0608)
+#define ZCL_SUPPLY_UNCONTROLLED_FLOW_STATE_ATTRIBUTE_ID (0x0609)
+#define ZCL_CURRENT_NO_TIER_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0700)
+#define ZCL_CURRENT_NO_TIER_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0701)
+#define ZCL_CURRENT_NO_TIER_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0702)
+#define ZCL_CURRENT_NO_TIER_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0703)
+#define ZCL_CURRENT_NO_TIER_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0704)
+#define ZCL_CURRENT_NO_TIER_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0705)
+#define ZCL_CURRENT_NO_TIER_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0706)
+#define ZCL_CURRENT_NO_TIER_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0707)
+#define ZCL_CURRENT_NO_TIER_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0708)
+#define ZCL_CURRENT_NO_TIER_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0709)
+#define ZCL_CURRENT_NO_TIER_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070A)
+#define ZCL_CURRENT_NO_TIER_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070B)
+#define ZCL_CURRENT_NO_TIER_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070C)
+#define ZCL_CURRENT_NO_TIER_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070D)
+#define ZCL_CURRENT_NO_TIER_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070E)
+#define ZCL_CURRENT_NO_TIER_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x070F)
+#define ZCL_CURRENT_TIER1_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0710)
+#define ZCL_CURRENT_TIER1_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0711)
+#define ZCL_CURRENT_TIER1_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0712)
+#define ZCL_CURRENT_TIER1_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0713)
+#define ZCL_CURRENT_TIER1_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0714)
+#define ZCL_CURRENT_TIER1_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0715)
+#define ZCL_CURRENT_TIER1_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0716)
+#define ZCL_CURRENT_TIER1_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0717)
+#define ZCL_CURRENT_TIER1_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0718)
+#define ZCL_CURRENT_TIER1_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0719)
+#define ZCL_CURRENT_TIER1_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071A)
+#define ZCL_CURRENT_TIER1_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071B)
+#define ZCL_CURRENT_TIER1_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071C)
+#define ZCL_CURRENT_TIER1_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071D)
+#define ZCL_CURRENT_TIER1_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071E)
+#define ZCL_CURRENT_TIER1_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x071F)
+#define ZCL_CURRENT_TIER2_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0720)
+#define ZCL_CURRENT_TIER2_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0721)
+#define ZCL_CURRENT_TIER2_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0722)
+#define ZCL_CURRENT_TIER2_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0723)
+#define ZCL_CURRENT_TIER2_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0724)
+#define ZCL_CURRENT_TIER2_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0725)
+#define ZCL_CURRENT_TIER2_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0726)
+#define ZCL_CURRENT_TIER2_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0727)
+#define ZCL_CURRENT_TIER2_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0728)
+#define ZCL_CURRENT_TIER2_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0729)
+#define ZCL_CURRENT_TIER2_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072A)
+#define ZCL_CURRENT_TIER2_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072B)
+#define ZCL_CURRENT_TIER2_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072C)
+#define ZCL_CURRENT_TIER2_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072D)
+#define ZCL_CURRENT_TIER2_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072E)
+#define ZCL_CURRENT_TIER2_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x072F)
+#define ZCL_CURRENT_TIER3_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0730)
+#define ZCL_CURRENT_TIER3_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0731)
+#define ZCL_CURRENT_TIER3_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0732)
+#define ZCL_CURRENT_TIER3_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0733)
+#define ZCL_CURRENT_TIER3_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0734)
+#define ZCL_CURRENT_TIER3_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0735)
+#define ZCL_CURRENT_TIER3_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0736)
+#define ZCL_CURRENT_TIER3_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0737)
+#define ZCL_CURRENT_TIER3_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0738)
+#define ZCL_CURRENT_TIER3_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0739)
+#define ZCL_CURRENT_TIER3_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073A)
+#define ZCL_CURRENT_TIER3_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073B)
+#define ZCL_CURRENT_TIER3_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073C)
+#define ZCL_CURRENT_TIER3_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073D)
+#define ZCL_CURRENT_TIER3_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073E)
+#define ZCL_CURRENT_TIER3_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x073F)
+#define ZCL_CURRENT_TIER4_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0740)
+#define ZCL_CURRENT_TIER4_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0741)
+#define ZCL_CURRENT_TIER4_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0742)
+#define ZCL_CURRENT_TIER4_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0743)
+#define ZCL_CURRENT_TIER4_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0744)
+#define ZCL_CURRENT_TIER4_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0745)
+#define ZCL_CURRENT_TIER4_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0746)
+#define ZCL_CURRENT_TIER4_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0747)
+#define ZCL_CURRENT_TIER4_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0748)
+#define ZCL_CURRENT_TIER4_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0749)
+#define ZCL_CURRENT_TIER4_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074A)
+#define ZCL_CURRENT_TIER4_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074B)
+#define ZCL_CURRENT_TIER4_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074C)
+#define ZCL_CURRENT_TIER4_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074D)
+#define ZCL_CURRENT_TIER4_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074E)
+#define ZCL_CURRENT_TIER4_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x074F)
+#define ZCL_CURRENT_TIER5_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0750)
+#define ZCL_CURRENT_TIER5_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0751)
+#define ZCL_CURRENT_TIER5_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0752)
+#define ZCL_CURRENT_TIER5_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0753)
+#define ZCL_CURRENT_TIER5_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0754)
+#define ZCL_CURRENT_TIER5_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0755)
+#define ZCL_CURRENT_TIER5_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0756)
+#define ZCL_CURRENT_TIER5_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0757)
+#define ZCL_CURRENT_TIER5_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0758)
+#define ZCL_CURRENT_TIER5_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0759)
+#define ZCL_CURRENT_TIER5_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075A)
+#define ZCL_CURRENT_TIER5_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075B)
+#define ZCL_CURRENT_TIER5_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075C)
+#define ZCL_CURRENT_TIER5_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075D)
+#define ZCL_CURRENT_TIER5_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075E)
+#define ZCL_CURRENT_TIER5_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x075F)
+#define ZCL_CURRENT_TIER6_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0760)
+#define ZCL_CURRENT_TIER6_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0761)
+#define ZCL_CURRENT_TIER6_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0762)
+#define ZCL_CURRENT_TIER6_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0763)
+#define ZCL_CURRENT_TIER6_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0764)
+#define ZCL_CURRENT_TIER6_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0765)
+#define ZCL_CURRENT_TIER6_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0766)
+#define ZCL_CURRENT_TIER6_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0767)
+#define ZCL_CURRENT_TIER6_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0768)
+#define ZCL_CURRENT_TIER6_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0769)
+#define ZCL_CURRENT_TIER6_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076A)
+#define ZCL_CURRENT_TIER6_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076B)
+#define ZCL_CURRENT_TIER6_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076C)
+#define ZCL_CURRENT_TIER6_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076D)
+#define ZCL_CURRENT_TIER6_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076E)
+#define ZCL_CURRENT_TIER6_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x076F)
+#define ZCL_CURRENT_TIER7_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0770)
+#define ZCL_CURRENT_TIER7_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0771)
+#define ZCL_CURRENT_TIER7_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0772)
+#define ZCL_CURRENT_TIER7_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0773)
+#define ZCL_CURRENT_TIER7_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0774)
+#define ZCL_CURRENT_TIER7_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0775)
+#define ZCL_CURRENT_TIER7_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0776)
+#define ZCL_CURRENT_TIER7_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0777)
+#define ZCL_CURRENT_TIER7_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0778)
+#define ZCL_CURRENT_TIER7_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0779)
+#define ZCL_CURRENT_TIER7_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077A)
+#define ZCL_CURRENT_TIER7_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077B)
+#define ZCL_CURRENT_TIER7_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077C)
+#define ZCL_CURRENT_TIER7_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077D)
+#define ZCL_CURRENT_TIER7_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077E)
+#define ZCL_CURRENT_TIER7_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x077F)
+#define ZCL_CURRENT_TIER8_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0780)
+#define ZCL_CURRENT_TIER8_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0781)
+#define ZCL_CURRENT_TIER8_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0782)
+#define ZCL_CURRENT_TIER8_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0783)
+#define ZCL_CURRENT_TIER8_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0784)
+#define ZCL_CURRENT_TIER8_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0785)
+#define ZCL_CURRENT_TIER8_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0786)
+#define ZCL_CURRENT_TIER8_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0787)
+#define ZCL_CURRENT_TIER8_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0788)
+#define ZCL_CURRENT_TIER8_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0789)
+#define ZCL_CURRENT_TIER8_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078A)
+#define ZCL_CURRENT_TIER8_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078B)
+#define ZCL_CURRENT_TIER8_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078C)
+#define ZCL_CURRENT_TIER8_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078D)
+#define ZCL_CURRENT_TIER8_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078E)
+#define ZCL_CURRENT_TIER8_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x078F)
+#define ZCL_CURRENT_TIER9_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0790)
+#define ZCL_CURRENT_TIER9_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0791)
+#define ZCL_CURRENT_TIER9_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0792)
+#define ZCL_CURRENT_TIER9_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0793)
+#define ZCL_CURRENT_TIER9_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0794)
+#define ZCL_CURRENT_TIER9_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0795)
+#define ZCL_CURRENT_TIER9_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0796)
+#define ZCL_CURRENT_TIER9_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0797)
+#define ZCL_CURRENT_TIER9_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0798)
+#define ZCL_CURRENT_TIER9_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0799)
+#define ZCL_CURRENT_TIER9_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079A)
+#define ZCL_CURRENT_TIER9_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079B)
+#define ZCL_CURRENT_TIER9_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079C)
+#define ZCL_CURRENT_TIER9_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079D)
+#define ZCL_CURRENT_TIER9_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079E)
+#define ZCL_CURRENT_TIER9_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x079F)
+#define ZCL_CURRENT_TIER10_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A0)
+#define ZCL_CURRENT_TIER10_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A1)
+#define ZCL_CURRENT_TIER10_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A2)
+#define ZCL_CURRENT_TIER10_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A3)
+#define ZCL_CURRENT_TIER10_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A4)
+#define ZCL_CURRENT_TIER10_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A5)
+#define ZCL_CURRENT_TIER10_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A6)
+#define ZCL_CURRENT_TIER10_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A7)
+#define ZCL_CURRENT_TIER10_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A8)
+#define ZCL_CURRENT_TIER10_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07A9)
+#define ZCL_CURRENT_TIER10_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AA)
+#define ZCL_CURRENT_TIER10_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AB)
+#define ZCL_CURRENT_TIER10_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AC)
+#define ZCL_CURRENT_TIER10_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AD)
+#define ZCL_CURRENT_TIER10_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AE)
+#define ZCL_CURRENT_TIER10_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07AF)
+#define ZCL_CURRENT_TIER11_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B0)
+#define ZCL_CURRENT_TIER11_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B1)
+#define ZCL_CURRENT_TIER11_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B2)
+#define ZCL_CURRENT_TIER11_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B3)
+#define ZCL_CURRENT_TIER11_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B4)
+#define ZCL_CURRENT_TIER11_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B5)
+#define ZCL_CURRENT_TIER11_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B6)
+#define ZCL_CURRENT_TIER11_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B7)
+#define ZCL_CURRENT_TIER11_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B8)
+#define ZCL_CURRENT_TIER11_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07B9)
+#define ZCL_CURRENT_TIER11_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BA)
+#define ZCL_CURRENT_TIER11_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BB)
+#define ZCL_CURRENT_TIER11_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BC)
+#define ZCL_CURRENT_TIER11_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BD)
+#define ZCL_CURRENT_TIER11_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BE)
+#define ZCL_CURRENT_TIER11_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07BF)
+#define ZCL_CURRENT_TIER12_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C0)
+#define ZCL_CURRENT_TIER12_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C1)
+#define ZCL_CURRENT_TIER12_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C2)
+#define ZCL_CURRENT_TIER12_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C3)
+#define ZCL_CURRENT_TIER12_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C4)
+#define ZCL_CURRENT_TIER12_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C5)
+#define ZCL_CURRENT_TIER12_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C6)
+#define ZCL_CURRENT_TIER12_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C7)
+#define ZCL_CURRENT_TIER12_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C8)
+#define ZCL_CURRENT_TIER12_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07C9)
+#define ZCL_CURRENT_TIER12_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CA)
+#define ZCL_CURRENT_TIER12_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CB)
+#define ZCL_CURRENT_TIER12_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CC)
+#define ZCL_CURRENT_TIER12_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CD)
+#define ZCL_CURRENT_TIER12_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CE)
+#define ZCL_CURRENT_TIER12_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07CF)
+#define ZCL_CURRENT_TIER13_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D0)
+#define ZCL_CURRENT_TIER13_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D1)
+#define ZCL_CURRENT_TIER13_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D2)
+#define ZCL_CURRENT_TIER13_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D3)
+#define ZCL_CURRENT_TIER13_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D4)
+#define ZCL_CURRENT_TIER13_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D5)
+#define ZCL_CURRENT_TIER13_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D6)
+#define ZCL_CURRENT_TIER13_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D7)
+#define ZCL_CURRENT_TIER13_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D8)
+#define ZCL_CURRENT_TIER13_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07D9)
+#define ZCL_CURRENT_TIER13_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DA)
+#define ZCL_CURRENT_TIER13_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DB)
+#define ZCL_CURRENT_TIER13_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DC)
+#define ZCL_CURRENT_TIER13_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DD)
+#define ZCL_CURRENT_TIER13_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DE)
+#define ZCL_CURRENT_TIER13_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07DF)
+#define ZCL_CURRENT_TIER14_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E0)
+#define ZCL_CURRENT_TIER14_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E1)
+#define ZCL_CURRENT_TIER14_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E2)
+#define ZCL_CURRENT_TIER14_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E3)
+#define ZCL_CURRENT_TIER14_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E4)
+#define ZCL_CURRENT_TIER14_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E5)
+#define ZCL_CURRENT_TIER14_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E6)
+#define ZCL_CURRENT_TIER14_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E7)
+#define ZCL_CURRENT_TIER14_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E8)
+#define ZCL_CURRENT_TIER14_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07E9)
+#define ZCL_CURRENT_TIER14_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EA)
+#define ZCL_CURRENT_TIER14_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EB)
+#define ZCL_CURRENT_TIER14_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EC)
+#define ZCL_CURRENT_TIER14_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07ED)
+#define ZCL_CURRENT_TIER14_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EE)
+#define ZCL_CURRENT_TIER14_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07EF)
+#define ZCL_CURRENT_TIER15_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F0)
+#define ZCL_CURRENT_TIER15_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F1)
+#define ZCL_CURRENT_TIER15_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F2)
+#define ZCL_CURRENT_TIER15_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F3)
+#define ZCL_CURRENT_TIER15_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F4)
+#define ZCL_CURRENT_TIER15_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F5)
+#define ZCL_CURRENT_TIER15_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F6)
+#define ZCL_CURRENT_TIER15_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F7)
+#define ZCL_CURRENT_TIER15_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F8)
+#define ZCL_CURRENT_TIER15_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07F9)
+#define ZCL_CURRENT_TIER15_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FA)
+#define ZCL_CURRENT_TIER15_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FB)
+#define ZCL_CURRENT_TIER15_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FC)
+#define ZCL_CURRENT_TIER15_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FD)
+#define ZCL_CURRENT_TIER15_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FE)
+#define ZCL_CURRENT_TIER15_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x07FF)
+#define ZCL_GENERIC_ALARM_MASK_ATTRIBUTE_ID (0x0800)
+#define ZCL_ELECTRICITY_ALARM_MASK_ATTRIBUTE_ID (0x0801)
+#define ZCL_GENERIC_FLOW_PRESSURE_ALARM_MASK_ATTRIBUTE_ID (0x0802)
+#define ZCL_WATER_SPECIFIC_ALARM_MASK_ATTRIBUTE_ID (0x0803)
+#define ZCL_HEAT_AND_COOLING_SPECIFIC_ALARM_MASK_ATTRIBUTE_ID (0x0804)
+#define ZCL_GAS_SPECIFIC_ALARM_MASK_ATTRIBUTE_ID (0x0805)
+#define ZCL_METERING_EXTENDED_GENERIC_ALARM_MASK_ATTRIBUTE_ID (0x0806)
+#define ZCL_METERING_MANUFACTURE_ALARM_MASK_ATTRIBUTE_ID (0x0807)
+#define ZCL_CURRENT_NO_TIER_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0900)
+#define ZCL_CURRENT_NO_TIER_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0901)
+#define ZCL_CURRENT_NO_TIER_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0902)
+#define ZCL_CURRENT_NO_TIER_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0903)
+#define ZCL_CURRENT_NO_TIER_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0904)
+#define ZCL_CURRENT_NO_TIER_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0905)
+#define ZCL_CURRENT_NO_TIER_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0906)
+#define ZCL_CURRENT_NO_TIER_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0907)
+#define ZCL_CURRENT_NO_TIER_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0908)
+#define ZCL_CURRENT_NO_TIER_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0909)
+#define ZCL_CURRENT_NO_TIER_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090A)
+#define ZCL_CURRENT_NO_TIER_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090B)
+#define ZCL_CURRENT_NO_TIER_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090C)
+#define ZCL_CURRENT_NO_TIER_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090D)
+#define ZCL_CURRENT_NO_TIER_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090E)
+#define ZCL_CURRENT_NO_TIER_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x090F)
+#define ZCL_CURRENT_TIER1_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0910)
+#define ZCL_CURRENT_TIER1_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0911)
+#define ZCL_CURRENT_TIER1_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0912)
+#define ZCL_CURRENT_TIER1_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0913)
+#define ZCL_CURRENT_TIER1_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0914)
+#define ZCL_CURRENT_TIER1_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0915)
+#define ZCL_CURRENT_TIER1_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0916)
+#define ZCL_CURRENT_TIER1_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0917)
+#define ZCL_CURRENT_TIER1_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0918)
+#define ZCL_CURRENT_TIER1_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0919)
+#define ZCL_CURRENT_TIER1_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091A)
+#define ZCL_CURRENT_TIER1_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091B)
+#define ZCL_CURRENT_TIER1_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091C)
+#define ZCL_CURRENT_TIER1_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091D)
+#define ZCL_CURRENT_TIER1_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091E)
+#define ZCL_CURRENT_TIER1_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x091F)
+#define ZCL_CURRENT_TIER2_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0920)
+#define ZCL_CURRENT_TIER2_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0921)
+#define ZCL_CURRENT_TIER2_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0922)
+#define ZCL_CURRENT_TIER2_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0923)
+#define ZCL_CURRENT_TIER2_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0924)
+#define ZCL_CURRENT_TIER2_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0925)
+#define ZCL_CURRENT_TIER2_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0926)
+#define ZCL_CURRENT_TIER2_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0927)
+#define ZCL_CURRENT_TIER2_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0928)
+#define ZCL_CURRENT_TIER2_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0929)
+#define ZCL_CURRENT_TIER2_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092A)
+#define ZCL_CURRENT_TIER2_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092B)
+#define ZCL_CURRENT_TIER2_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092C)
+#define ZCL_CURRENT_TIER2_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092D)
+#define ZCL_CURRENT_TIER2_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092E)
+#define ZCL_CURRENT_TIER2_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x092F)
+#define ZCL_CURRENT_TIER3_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0930)
+#define ZCL_CURRENT_TIER3_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0931)
+#define ZCL_CURRENT_TIER3_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0932)
+#define ZCL_CURRENT_TIER3_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0933)
+#define ZCL_CURRENT_TIER3_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0934)
+#define ZCL_CURRENT_TIER3_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0935)
+#define ZCL_CURRENT_TIER3_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0936)
+#define ZCL_CURRENT_TIER3_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0937)
+#define ZCL_CURRENT_TIER3_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0938)
+#define ZCL_CURRENT_TIER3_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0939)
+#define ZCL_CURRENT_TIER3_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093A)
+#define ZCL_CURRENT_TIER3_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093B)
+#define ZCL_CURRENT_TIER3_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093C)
+#define ZCL_CURRENT_TIER3_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093D)
+#define ZCL_CURRENT_TIER3_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093E)
+#define ZCL_CURRENT_TIER3_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x093F)
+#define ZCL_CURRENT_TIER4_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0940)
+#define ZCL_CURRENT_TIER4_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0941)
+#define ZCL_CURRENT_TIER4_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0942)
+#define ZCL_CURRENT_TIER4_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0943)
+#define ZCL_CURRENT_TIER4_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0944)
+#define ZCL_CURRENT_TIER4_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0945)
+#define ZCL_CURRENT_TIER4_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0946)
+#define ZCL_CURRENT_TIER4_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0947)
+#define ZCL_CURRENT_TIER4_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0948)
+#define ZCL_CURRENT_TIER4_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0949)
+#define ZCL_CURRENT_TIER4_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094A)
+#define ZCL_CURRENT_TIER4_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094B)
+#define ZCL_CURRENT_TIER4_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094C)
+#define ZCL_CURRENT_TIER4_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094D)
+#define ZCL_CURRENT_TIER4_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094E)
+#define ZCL_CURRENT_TIER4_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x094F)
+#define ZCL_CURRENT_TIER5_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0950)
+#define ZCL_CURRENT_TIER5_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0951)
+#define ZCL_CURRENT_TIER5_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0952)
+#define ZCL_CURRENT_TIER5_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0953)
+#define ZCL_CURRENT_TIER5_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0954)
+#define ZCL_CURRENT_TIER5_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0955)
+#define ZCL_CURRENT_TIER5_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0956)
+#define ZCL_CURRENT_TIER5_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0957)
+#define ZCL_CURRENT_TIER5_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0958)
+#define ZCL_CURRENT_TIER5_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0959)
+#define ZCL_CURRENT_TIER5_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095A)
+#define ZCL_CURRENT_TIER5_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095B)
+#define ZCL_CURRENT_TIER5_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095C)
+#define ZCL_CURRENT_TIER5_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095D)
+#define ZCL_CURRENT_TIER5_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095E)
+#define ZCL_CURRENT_TIER5_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x095F)
+#define ZCL_CURRENT_TIER6_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0960)
+#define ZCL_CURRENT_TIER6_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0961)
+#define ZCL_CURRENT_TIER6_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0962)
+#define ZCL_CURRENT_TIER6_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0963)
+#define ZCL_CURRENT_TIER6_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0964)
+#define ZCL_CURRENT_TIER6_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0965)
+#define ZCL_CURRENT_TIER6_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0966)
+#define ZCL_CURRENT_TIER6_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0967)
+#define ZCL_CURRENT_TIER6_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0968)
+#define ZCL_CURRENT_TIER6_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0969)
+#define ZCL_CURRENT_TIER6_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096A)
+#define ZCL_CURRENT_TIER6_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096B)
+#define ZCL_CURRENT_TIER6_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096C)
+#define ZCL_CURRENT_TIER6_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096D)
+#define ZCL_CURRENT_TIER6_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096E)
+#define ZCL_CURRENT_TIER6_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x096F)
+#define ZCL_CURRENT_TIER7_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0970)
+#define ZCL_CURRENT_TIER7_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0971)
+#define ZCL_CURRENT_TIER7_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0972)
+#define ZCL_CURRENT_TIER7_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0973)
+#define ZCL_CURRENT_TIER7_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0974)
+#define ZCL_CURRENT_TIER7_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0975)
+#define ZCL_CURRENT_TIER7_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0976)
+#define ZCL_CURRENT_TIER7_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0977)
+#define ZCL_CURRENT_TIER7_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0978)
+#define ZCL_CURRENT_TIER7_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0979)
+#define ZCL_CURRENT_TIER7_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097A)
+#define ZCL_CURRENT_TIER7_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097B)
+#define ZCL_CURRENT_TIER7_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097C)
+#define ZCL_CURRENT_TIER7_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097D)
+#define ZCL_CURRENT_TIER7_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097E)
+#define ZCL_CURRENT_TIER7_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x097F)
+#define ZCL_CURRENT_TIER8_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0980)
+#define ZCL_CURRENT_TIER8_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0981)
+#define ZCL_CURRENT_TIER8_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0982)
+#define ZCL_CURRENT_TIER8_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0983)
+#define ZCL_CURRENT_TIER8_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0984)
+#define ZCL_CURRENT_TIER8_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0985)
+#define ZCL_CURRENT_TIER8_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0986)
+#define ZCL_CURRENT_TIER8_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0987)
+#define ZCL_CURRENT_TIER8_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0988)
+#define ZCL_CURRENT_TIER8_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0989)
+#define ZCL_CURRENT_TIER8_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098A)
+#define ZCL_CURRENT_TIER8_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098B)
+#define ZCL_CURRENT_TIER8_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098C)
+#define ZCL_CURRENT_TIER8_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098D)
+#define ZCL_CURRENT_TIER8_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098E)
+#define ZCL_CURRENT_TIER8_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x098F)
+#define ZCL_CURRENT_TIER9_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0990)
+#define ZCL_CURRENT_TIER9_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0991)
+#define ZCL_CURRENT_TIER9_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0992)
+#define ZCL_CURRENT_TIER9_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0993)
+#define ZCL_CURRENT_TIER9_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0994)
+#define ZCL_CURRENT_TIER9_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0995)
+#define ZCL_CURRENT_TIER9_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0996)
+#define ZCL_CURRENT_TIER9_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0997)
+#define ZCL_CURRENT_TIER9_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0998)
+#define ZCL_CURRENT_TIER9_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x0999)
+#define ZCL_CURRENT_TIER9_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099A)
+#define ZCL_CURRENT_TIER9_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099B)
+#define ZCL_CURRENT_TIER9_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099C)
+#define ZCL_CURRENT_TIER9_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099D)
+#define ZCL_CURRENT_TIER9_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099E)
+#define ZCL_CURRENT_TIER9_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x099F)
+#define ZCL_CURRENT_TIER10_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A0)
+#define ZCL_CURRENT_TIER10_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A1)
+#define ZCL_CURRENT_TIER10_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A2)
+#define ZCL_CURRENT_TIER10_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A3)
+#define ZCL_CURRENT_TIER10_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A4)
+#define ZCL_CURRENT_TIER10_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A5)
+#define ZCL_CURRENT_TIER10_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A6)
+#define ZCL_CURRENT_TIER10_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A7)
+#define ZCL_CURRENT_TIER10_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A8)
+#define ZCL_CURRENT_TIER10_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09A9)
+#define ZCL_CURRENT_TIER10_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AA)
+#define ZCL_CURRENT_TIER10_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AB)
+#define ZCL_CURRENT_TIER10_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AC)
+#define ZCL_CURRENT_TIER10_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AD)
+#define ZCL_CURRENT_TIER10_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AE)
+#define ZCL_CURRENT_TIER10_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09AF)
+#define ZCL_CURRENT_TIER11_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B0)
+#define ZCL_CURRENT_TIER11_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B1)
+#define ZCL_CURRENT_TIER11_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B2)
+#define ZCL_CURRENT_TIER11_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B3)
+#define ZCL_CURRENT_TIER11_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B4)
+#define ZCL_CURRENT_TIER11_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B5)
+#define ZCL_CURRENT_TIER11_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B6)
+#define ZCL_CURRENT_TIER11_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B7)
+#define ZCL_CURRENT_TIER11_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B8)
+#define ZCL_CURRENT_TIER11_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09B9)
+#define ZCL_CURRENT_TIER11_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BA)
+#define ZCL_CURRENT_TIER11_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BB)
+#define ZCL_CURRENT_TIER11_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BC)
+#define ZCL_CURRENT_TIER11_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BD)
+#define ZCL_CURRENT_TIER11_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BE)
+#define ZCL_CURRENT_TIER11_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09BF)
+#define ZCL_CURRENT_TIER12_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C0)
+#define ZCL_CURRENT_TIER12_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C1)
+#define ZCL_CURRENT_TIER12_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C2)
+#define ZCL_CURRENT_TIER12_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C3)
+#define ZCL_CURRENT_TIER12_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C4)
+#define ZCL_CURRENT_TIER12_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C5)
+#define ZCL_CURRENT_TIER12_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C6)
+#define ZCL_CURRENT_TIER12_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C7)
+#define ZCL_CURRENT_TIER12_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C8)
+#define ZCL_CURRENT_TIER12_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09C9)
+#define ZCL_CURRENT_TIER12_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CA)
+#define ZCL_CURRENT_TIER12_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CB)
+#define ZCL_CURRENT_TIER12_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CC)
+#define ZCL_CURRENT_TIER12_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CD)
+#define ZCL_CURRENT_TIER12_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CE)
+#define ZCL_CURRENT_TIER12_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09CF)
+#define ZCL_CURRENT_TIER13_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D0)
+#define ZCL_CURRENT_TIER13_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D1)
+#define ZCL_CURRENT_TIER13_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D2)
+#define ZCL_CURRENT_TIER13_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D3)
+#define ZCL_CURRENT_TIER13_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D4)
+#define ZCL_CURRENT_TIER13_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D5)
+#define ZCL_CURRENT_TIER13_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D6)
+#define ZCL_CURRENT_TIER13_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D7)
+#define ZCL_CURRENT_TIER13_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D8)
+#define ZCL_CURRENT_TIER13_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09D9)
+#define ZCL_CURRENT_TIER13_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DA)
+#define ZCL_CURRENT_TIER13_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DB)
+#define ZCL_CURRENT_TIER13_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DC)
+#define ZCL_CURRENT_TIER13_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DD)
+#define ZCL_CURRENT_TIER13_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DE)
+#define ZCL_CURRENT_TIER13_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09DF)
+#define ZCL_CURRENT_TIER14_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E0)
+#define ZCL_CURRENT_TIER14_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E1)
+#define ZCL_CURRENT_TIER14_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E2)
+#define ZCL_CURRENT_TIER14_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E3)
+#define ZCL_CURRENT_TIER14_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E4)
+#define ZCL_CURRENT_TIER14_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E5)
+#define ZCL_CURRENT_TIER14_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E6)
+#define ZCL_CURRENT_TIER14_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E7)
+#define ZCL_CURRENT_TIER14_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E8)
+#define ZCL_CURRENT_TIER14_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09E9)
+#define ZCL_CURRENT_TIER14_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EA)
+#define ZCL_CURRENT_TIER14_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EB)
+#define ZCL_CURRENT_TIER14_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EC)
+#define ZCL_CURRENT_TIER14_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09ED)
+#define ZCL_CURRENT_TIER14_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EE)
+#define ZCL_CURRENT_TIER14_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09EF)
+#define ZCL_CURRENT_TIER15_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F0)
+#define ZCL_CURRENT_TIER15_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F1)
+#define ZCL_CURRENT_TIER15_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F2)
+#define ZCL_CURRENT_TIER15_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F3)
+#define ZCL_CURRENT_TIER15_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F4)
+#define ZCL_CURRENT_TIER15_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F5)
+#define ZCL_CURRENT_TIER15_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F6)
+#define ZCL_CURRENT_TIER15_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F7)
+#define ZCL_CURRENT_TIER15_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F8)
+#define ZCL_CURRENT_TIER15_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09F9)
+#define ZCL_CURRENT_TIER15_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FA)
+#define ZCL_CURRENT_TIER15_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FB)
+#define ZCL_CURRENT_TIER15_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FC)
+#define ZCL_CURRENT_TIER15_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FD)
+#define ZCL_CURRENT_TIER15_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FE)
+#define ZCL_CURRENT_TIER15_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x09FF)
+#define ZCL_BILL_TO_DATE_DELIVERED_ATTRIBUTE_ID (0x0A00)
+#define ZCL_BILL_TO_DATE_TIME_STAMP_DELIVERED_ATTRIBUTE_ID (0x0A01)
+#define ZCL_PROJECTED_BILL_DELIVERED_ATTRIBUTE_ID (0x0A02)
+#define ZCL_PROJECTED_BILL_TIME_STAMP_DELIVERED_ATTRIBUTE_ID (0x0A03)
+#define ZCL_BILL_DELIVERED_TRAILING_DIGIT_ATTRIBUTE_ID (0x0A04)
+#define ZCL_BILL_TO_DATE_RECEIVED_ATTRIBUTE_ID (0x0A10)
+#define ZCL_BILL_TO_DATE_TIME_STAMP_RECEIVED_ATTRIBUTE_ID (0x0A11)
+#define ZCL_PROJECTED_BILL_RECEIVED_ATTRIBUTE_ID (0x0A12)
+#define ZCL_PROJECTED_BILL_TIME_STAMP_RECEIVED_ATTRIBUTE_ID (0x0A13)
+#define ZCL_BILL_RECEIVED_TRAILING_DIGIT_ATTRIBUTE_ID (0x0A14)
+#define ZCL_PROPOSED_CHANGE_SUPPLY_IMPLEMENTATION_TIME_ATTRIBUTE_ID (0x0B00)
+#define ZCL_PROPOSED_CHANGE_SUPPLY_STATUS_ATTRIBUTE_ID (0x0B01)
+#define ZCL_UNCONTROLLED_FLOW_THESHOLD_ATTRIBUTE_ID (0x0B10)
+#define ZCL_UNCONTROLLED_FLOW_THESHOLD_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x0B11)
+#define ZCL_UNCONTROLLED_FLOW_MULTIPLIER_ATTRIBUTE_ID (0x0B12)
+#define ZCL_UNCONTROLLED_FLOW_DIVISOR_ATTRIBUTE_ID (0x0B13)
+#define ZCL_FLOW_STABILIZATION_PERIOD_ATTRIBUTE_ID (0x0B14)
+#define ZCL_FLOW_MEASUREMENT_PERIOD_ATTRIBUTE_ID (0x0B15)
+#define ZCL_ALTERNATIVE_INSTANTANEOUS_DEMAND_ATTRIBUTE_ID (0x0C00)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C01)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C02)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C03)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C04)
+#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_START_TIME_DELIVERED_ATTRIBUTE_ID (0x0C05)
+#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_START_TIME_RECEIVED_ATTRIBUTE_ID (0x0C06)
+#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_VALUE_DELIVERED_ATTRIBUTE_ID (0x0C07)
+#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_VALUE_RECEIVED_ATTRIBUTE_ID (0x0C08)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_MAX_PRESSURE_ATTRIBUTE_ID (0x0C09)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_MIN_PRESSURE_ATTRIBUTE_ID (0x0C0A)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_PRESSURE_ATTRIBUTE_ID (0x0C0B)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MIN_PRESSURE_ATTRIBUTE_ID (0x0C0C)
+#define ZCL_CURRENT_ALTERNATIVE_DAY_ALTERNATIVE_MAX_DEMAND_ATTRIBUTE_ID (0x0C0D)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_ATTRIBUTE_ID (0x0C0E)
+#define ZCL_CURRENT_ALTERNATIVE_MONTH_MAX_DEMAND_ATTRIBUTE_ID (0x0C0F)
+#define ZCL_CURRENT_ALTERNATIVE_YEAR_MAX_DEMAND_ATTRIBUTE_ID (0x0C10)
+#define ZCL_PREVIOUS_DAY2_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C20)
+#define ZCL_PREVIOUS_DAY2_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C21)
+#define ZCL_PREVIOUS_DAY3_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C22)
+#define ZCL_PREVIOUS_DAY3_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C23)
+#define ZCL_PREVIOUS_DAY4_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C24)
+#define ZCL_PREVIOUS_DAY4_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C25)
+#define ZCL_PREVIOUS_DAY5_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C26)
+#define ZCL_PREVIOUS_DAY5_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C27)
+#define ZCL_PREVIOUS_DAY6_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C28)
+#define ZCL_PREVIOUS_DAY6_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C29)
+#define ZCL_PREVIOUS_DAY7_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C2A)
+#define ZCL_PREVIOUS_DAY7_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C2B)
+#define ZCL_PREVIOUS_DAY8_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C2C)
+#define ZCL_PREVIOUS_DAY8_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C2D)
+#define ZCL_CURRENT_WEEK_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C30)
+#define ZCL_CURRENT_WEEK_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C31)
+#define ZCL_PREVIOUS_WEEK_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C32)
+#define ZCL_PREVIOUS_WEEK_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C33)
+#define ZCL_PREVIOUS_WEEK2_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C34)
+#define ZCL_PREVIOUS_WEEK2_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C35)
+#define ZCL_PREVIOUS_WEEK3_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C36)
+#define ZCL_PREVIOUS_WEEK3_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C37)
+#define ZCL_PREVIOUS_WEEK4_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C38)
+#define ZCL_PREVIOUS_WEEK4_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C39)
+#define ZCL_PREVIOUS_WEEK5_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C3A)
+#define ZCL_PREVIOUS_WEEK5_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C3B)
+#define ZCL_CURRENT_MONTH_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C40)
+#define ZCL_CURRENT_MONTH_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C41)
+#define ZCL_PREVIOUS_MONTH_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C42)
+#define ZCL_PREVIOUS_MONTH_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C43)
+#define ZCL_PREVIOUS_MONTH2_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C44)
+#define ZCL_PREVIOUS_MONTH2_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C45)
+#define ZCL_PREVIOUS_MONTH3_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C46)
+#define ZCL_PREVIOUS_MONTH3_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C47)
+#define ZCL_PREVIOUS_MONTH4_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C48)
+#define ZCL_PREVIOUS_MONTH4_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C49)
+#define ZCL_PREVIOUS_MONTH5_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C4A)
+#define ZCL_PREVIOUS_MONTH5_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C4B)
+#define ZCL_PREVIOUS_MONTH6_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C4C)
+#define ZCL_PREVIOUS_MONTH6_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C4D)
+#define ZCL_PREVIOUS_MONTH7_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C4E)
+#define ZCL_PREVIOUS_MONTH7_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C4F)
+#define ZCL_PREVIOUS_MONTH8_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C50)
+#define ZCL_PREVIOUS_MONTH8_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C51)
+#define ZCL_PREVIOUS_MONTH9_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C52)
+#define ZCL_PREVIOUS_MONTH9_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C53)
+#define ZCL_PREVIOUS_MONTH10_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C54)
+#define ZCL_PREVIOUS_MONTH10_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C55)
+#define ZCL_PREVIOUS_MONTH11_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C56)
+#define ZCL_PREVIOUS_MONTH11_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C57)
+#define ZCL_PREVIOUS_MONTH12_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C58)
+#define ZCL_PREVIOUS_MONTH12_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C59)
+#define ZCL_PREVIOUS_MONTH13_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0C5A)
+#define ZCL_PREVIOUS_MONTH13_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0C5B)
+#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0C5C)
+#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x0C5D)
+#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x0C5E)
+#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0C5F)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x0C60)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x0C61)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x0C62)
+#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x0C63)
+#define ZCL_CURRENT_ACTIVE_SUMMATION_Q1_ATTRIBUTE_ID (0x0D01)
+#define ZCL_CURRENT_ACTIVE_SUMMATION_Q2_ATTRIBUTE_ID (0x0D02)
+#define ZCL_CURRENT_ACTIVE_SUMMATION_Q3_ATTRIBUTE_ID (0x0D03)
+#define ZCL_CURRENT_ACTIVE_SUMMATION_Q4_ATTRIBUTE_ID (0x0D04)
+#define ZCL_CURRENT_REACTIVE_SUMMATION_Q1_ATTRIBUTE_ID (0x0D05)
+#define ZCL_CURRENT_REACTIVE_SUMMATION_Q2_ATTRIBUTE_ID (0x0D06)
+#define ZCL_CURRENT_REACTIVE_SUMMATION_Q3_ATTRIBUTE_ID (0x0D07)
+#define ZCL_CURRENT_REACTIVE_SUMMATION_Q4_ATTRIBUTE_ID (0x0D08)
+
+// Attribute ids for cluster: Messaging
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Tunneling
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CLOSE_TUNNEL_TIMEOUT_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Prepayment
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PAYMENT_CONTROL_CONFIGURATION_ATTRIBUTE_ID (0x0000)
+#define ZCL_CREDIT_REMAINING_ATTRIBUTE_ID (0x0001)
+#define ZCL_EMERGENCY_CREDIT_REMAINING_ATTRIBUTE_ID (0x0002)
+#define ZCL_CREDIT_STATUS_ATTRIBUTE_ID (0x0003)
+#define ZCL_CREDIT_REMAINING_TIMESTAMP_ATTRIBUTE_ID (0x0004)
+#define ZCL_ACCUMULATED_DEBT_ATTRIBUTE_ID (0x0005)
+#define ZCL_OVERALL_DEBT_CAP_ATTRIBUTE_ID (0x0006)
+#define ZCL_EMERGENCY_CREDIT_LIMIT_ALLOWANCE_ATTRIBUTE_ID (0x0010)
+#define ZCL_EMERGENCY_CREDIT_THRESHOLD_ATTRIBUTE_ID (0x0011)
+#define ZCL_TOTAL_CREDIT_ADDED_ATTRIBUTE_ID (0x0020)
+#define ZCL_MAX_CREDIT_LIMIT_ATTRIBUTE_ID (0x0021)
+#define ZCL_MAX_CREDIT_PER_TOP_UP_ATTRIBUTE_ID (0x0022)
+#define ZCL_FRIENDLY_CREDIT_WARNING_ATTRIBUTE_ID (0x0030)
+#define ZCL_LOW_CREDIT_WARNING_ATTRIBUTE_ID (0x0031)
+#define ZCL_IHD_LOW_CREDIT_WARNING_ATTRIBUTE_ID (0x0032)
+#define ZCL_INTERRUPT_SUSPEND_TIME_ATTRIBUTE_ID (0x0033)
+#define ZCL_REMAINING_FRIENDLY_CREDIT_TIME_ATTRIBUTE_ID (0x0034)
+#define ZCL_NEXT_FRIENDLY_CREDIT_PERIOD_ATTRIBUTE_ID (0x0035)
+#define ZCL_CUT_OFF_VALUE_ATTRIBUTE_ID (0x0040)
+#define ZCL_TOKEN_CARRIER_ID_ATTRIBUTE_ID (0x0080)
+#define ZCL_TOP_UP_DATE_TIME_1_ATTRIBUTE_ID (0x0100)
+#define ZCL_TOP_UP_AMOUNT_1_ATTRIBUTE_ID (0x0101)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_1_ATTRIBUTE_ID (0x0102)
+#define ZCL_TOP_UP_CODE_1_ATTRIBUTE_ID (0x0103)
+#define ZCL_TOP_UP_DATE_TIME_2_ATTRIBUTE_ID (0x0110)
+#define ZCL_TOP_UP_AMOUNT_2_ATTRIBUTE_ID (0x0111)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_2_ATTRIBUTE_ID (0x0112)
+#define ZCL_TOP_UP_CODE_2_ATTRIBUTE_ID (0x0113)
+#define ZCL_TOP_UP_DATE_TIME_3_ATTRIBUTE_ID (0x0120)
+#define ZCL_TOP_UP_AMOUNT_3_ATTRIBUTE_ID (0x0121)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_3_ATTRIBUTE_ID (0x0122)
+#define ZCL_TOP_UP_CODE_3_ATTRIBUTE_ID (0x0123)
+#define ZCL_TOP_UP_DATE_TIME_4_ATTRIBUTE_ID (0x0130)
+#define ZCL_TOP_UP_AMOUNT_4_ATTRIBUTE_ID (0x0131)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_4_ATTRIBUTE_ID (0x0132)
+#define ZCL_TOP_UP_CODE_4_ATTRIBUTE_ID (0x0133)
+#define ZCL_TOP_UP_DATE_TIME_5_ATTRIBUTE_ID (0x0140)
+#define ZCL_TOP_UP_AMOUNT_5_ATTRIBUTE_ID (0x0141)
+#define ZCL_TOP_UP_ORIGINATING_DEVICE_5_ATTRIBUTE_ID (0x0142)
+#define ZCL_TOP_UP_CODE_5_ATTRIBUTE_ID (0x0143)
+#define ZCL_DEBT_LABEL_1_ATTRIBUTE_ID (0x0210)
+#define ZCL_DEBT_AMOUNT_1_ATTRIBUTE_ID (0x0211)
+#define ZCL_DEBT_RECOVERY_METHOD_1_ATTRIBUTE_ID (0x0212)
+#define ZCL_DEBT_RECOVERY_START_TIME_1_ATTRIBUTE_ID (0x0213)
+#define ZCL_DEBT_RECOVERY_COLLECTION_TIME_1_ATTRIBUTE_ID (0x0214)
+#define ZCL_DEBT_RECOVERY_FREQUENCY_1_ATTRIBUTE_ID (0x0216)
+#define ZCL_DEBT_RECOVERY_AMOUNT_1_ATTRIBUTE_ID (0x0217)
+#define ZCL_DEBT_RECOVERY_TOP_UP_PERCENTAGE_1_ATTRIBUTE_ID (0x0219)
+#define ZCL_DEBT_LABEL_2_ATTRIBUTE_ID (0x0220)
+#define ZCL_DEBT_AMOUNT_2_ATTRIBUTE_ID (0x0221)
+#define ZCL_DEBT_RECOVERY_METHOD_2_ATTRIBUTE_ID (0x0222)
+#define ZCL_DEBT_RECOVERY_START_TIME_2_ATTRIBUTE_ID (0x0223)
+#define ZCL_DEBT_RECOVERY_COLLECTION_TIME_2_ATTRIBUTE_ID (0x0224)
+#define ZCL_DEBT_RECOVERY_FREQUENCY_2_ATTRIBUTE_ID (0x0226)
+#define ZCL_DEBT_RECOVERY_AMOUNT_2_ATTRIBUTE_ID (0x0227)
+#define ZCL_DEBT_RECOVERY_TOP_UP_PERCENTAGE_2_ATTRIBUTE_ID (0x0229)
+#define ZCL_DEBT_LABEL_3_ATTRIBUTE_ID (0x0230)
+#define ZCL_DEBT_AMOUNT_3_ATTRIBUTE_ID (0x0231)
+#define ZCL_DEBT_RECOVERY_METHOD_3_ATTRIBUTE_ID (0x0232)
+#define ZCL_DEBT_RECOVERY_START_TIME_3_ATTRIBUTE_ID (0x0233)
+#define ZCL_DEBT_RECOVERY_COLLECTION_TIME_3_ATTRIBUTE_ID (0x0234)
+#define ZCL_DEBT_RECOVERY_FREQUENCY_3_ATTRIBUTE_ID (0x0236)
+#define ZCL_DEBT_RECOVERY_AMOUNT_3_ATTRIBUTE_ID (0x0237)
+#define ZCL_DEBT_RECOVERY_TOP_UP_PERCENTAGE_3_ATTRIBUTE_ID (0x0239)
+#define ZCL_PREPAYMENT_ALARM_STATUS_ATTRIBUTE_ID (0x0400)
+#define ZCL_PREPAY_GENERIC_ALARM_MASK_ATTRIBUTE_ID (0x0401)
+#define ZCL_PREPAY_SWITCH_ALARM_MASK_ATTRIBUTE_ID (0x0402)
+#define ZCL_PREPAY_EVENT_ALARM_MASK_ATTRIBUTE_ID (0x0403)
+#define ZCL_HISTORICAL_COST_CONSUMPTION_FORMATTING_ATTRIBUTE_ID (0x0500)
+#define ZCL_CONSUMPTION_UNIT_OF_MEASUREMENT_ATTRIBUTE_ID (0x0501)
+#define ZCL_CURRENCY_SCALING_FACTOR_ATTRIBUTE_ID (0x0502)
+#define ZCL_PREPAYMANT_CURRENCY_ATTRIBUTE_ID (0x0503)
+#define ZCL_CURRENT_DAY_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x051C)
+#define ZCL_CURRENT_DAY_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x051D)
+#define ZCL_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x051E)
+#define ZCL_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x051F)
+#define ZCL_PREVIOUS_DAY_2_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0520)
+#define ZCL_PREVIOUS_DAY_2_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0521)
+#define ZCL_PREVIOUS_DAY_3_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0522)
+#define ZCL_PREVIOUS_DAY_3_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0523)
+#define ZCL_PREVIOUS_DAY_4_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0524)
+#define ZCL_PREVIOUS_DAY_4_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0525)
+#define ZCL_PREVIOUS_DAY_5_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0526)
+#define ZCL_PREVIOUS_DAY_5_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0527)
+#define ZCL_PREVIOUS_DAY_6_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0528)
+#define ZCL_PREVIOUS_DAY_6_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0529)
+#define ZCL_PREVIOUS_DAY_7_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x052A)
+#define ZCL_PREVIOUS_DAY_7_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x052B)
+#define ZCL_PREVIOUS_DAY_8_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x052C)
+#define ZCL_PREVIOUS_DAY_8_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x052D)
+#define ZCL_CURRENT_WEEK_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0530)
+#define ZCL_CURRENT_WEEK_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0531)
+#define ZCL_PREVIOUS_WEEK_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0532)
+#define ZCL_PREVIOUS_WEEK_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0533)
+#define ZCL_PREVIOUS_WEEK_2_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0534)
+#define ZCL_PREVIOUS_WEEK_2_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0535)
+#define ZCL_PREVIOUS_WEEK_3_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0536)
+#define ZCL_PREVIOUS_WEEK_3_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0537)
+#define ZCL_PREVIOUS_WEEK_4_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0538)
+#define ZCL_PREVIOUS_WEEK_4_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0539)
+#define ZCL_PREVIOUS_WEEK_5_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x053A)
+#define ZCL_PREVIOUS_WEEK_5_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x053B)
+#define ZCL_CURRENT_MONTH_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0540)
+#define ZCL_CURRENT_MONTH_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0541)
+#define ZCL_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0542)
+#define ZCL_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0543)
+#define ZCL_PREVIOUS_MONTH_2_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0544)
+#define ZCL_PREVIOUS_MONTH_2_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0545)
+#define ZCL_PREVIOUS_MONTH_3_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0546)
+#define ZCL_PREVIOUS_MONTH_3_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0547)
+#define ZCL_PREVIOUS_MONTH_4_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0548)
+#define ZCL_PREVIOUS_MONTH_4_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0549)
+#define ZCL_PREVIOUS_MONTH_5_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x054A)
+#define ZCL_PREVIOUS_MONTH_5_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x054B)
+#define ZCL_PREVIOUS_MONTH_6_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x054C)
+#define ZCL_PREVIOUS_MONTH_6_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x054D)
+#define ZCL_PREVIOUS_MONTH_7_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x054E)
+#define ZCL_PREVIOUS_MONTH_7_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x054F)
+#define ZCL_PREVIOUS_MONTH_8_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0550)
+#define ZCL_PREVIOUS_MONTH_8_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0551)
+#define ZCL_PREVIOUS_MONTH_9_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0552)
+#define ZCL_PREVIOUS_MONTH_9_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0553)
+#define ZCL_PREVIOUS_MONTH_10_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0554)
+#define ZCL_PREVIOUS_MONTH_10_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0555)
+#define ZCL_PREVIOUS_MONTH_11_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0556)
+#define ZCL_PREVIOUS_MONTH_11_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0557)
+#define ZCL_PREVIOUS_MONTH_12_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x0558)
+#define ZCL_PREVIOUS_MONTH_12_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x0559)
+#define ZCL_PREVIOUS_MONTH_13_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x055A)
+#define ZCL_PREVIOUS_MONTH_13_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x055B)
+#define ZCL_PREPAYMENT_HISTORICAL_FREEZE_TIME_ATTRIBUTE_ID (0x055C)
+
+// Attribute ids for cluster: Energy Management
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOAD_CONTROL_STATE_ATTRIBUTE_ID (0x0000)
+#define ZCL_CURRENT_EVENT_ID_ATTRIBUTE_ID (0x0001)
+#define ZCL_CURRENT_EVENT_STATUS_ATTRIBUTE_ID (0x0002)
+#define ZCL_CONFORMANCE_LEVEL_ATTRIBUTE_ID (0x0003)
+#define ZCL_MINIMUM_OFF_TIME_ATTRIBUTE_ID (0x0004)
+#define ZCL_MINIMUM_ON_TIME_ATTRIBUTE_ID (0x0005)
+#define ZCL_MINIMUM_CYCLE_PERIOD_ATTRIBUTE_ID (0x0006)
+
+// Attribute ids for cluster: Calendar
+
+// Client attributes
+
+// Server attributes
+#define ZCL_AUXILIARY_SWITCH_1_LABEL_ATTRIBUTE_ID (0x0000)
+#define ZCL_AUXILIARY_SWITCH_2_LABEL_ATTRIBUTE_ID (0x0001)
+#define ZCL_AUXILIARY_SWITCH_3_LABEL_ATTRIBUTE_ID (0x0002)
+#define ZCL_AUXILIARY_SWITCH_4_LABEL_ATTRIBUTE_ID (0x0003)
+#define ZCL_AUXILIARY_SWITCH_5_LABEL_ATTRIBUTE_ID (0x0004)
+#define ZCL_AUXILIARY_SWITCH_6_LABEL_ATTRIBUTE_ID (0x0005)
+#define ZCL_AUXILIARY_SWITCH_7_LABEL_ATTRIBUTE_ID (0x0006)
+#define ZCL_AUXILIARY_SWITCH_8_LABEL_ATTRIBUTE_ID (0x0007)
+
+// Attribute ids for cluster: Device Management
+
+// Client attributes
+#define ZCL_PROVIDER_ID_CLIENT_ATTRIBUTE_ID (0x0000)
+#define ZCL_RECEIVED_PROVIDER_ID_CLIENT_ATTRIBUTE_ID (0x0010)
+#define ZCL_TOU_TARIFF_ACTIVATION_ATTRIBUTE_ID (0x0100)
+#define ZCL_BLOCK_TARIFF_ACTIVATED_ATTRIBUTE_ID (0x0101)
+#define ZCL_BLOCK_TOU_TARIFF_ACTIVATED_ATTRIBUTE_ID (0x0102)
+#define ZCL_SINGLE_TARIFF_RATE_ACTIVATED_ATTRIBUTE_ID (0x0103)
+#define ZCL_ASYNCHRONOUS_BILLING_OCCURRED_ATTRIBUTE_ID (0x0104)
+#define ZCL_SYNCHRONOUS_BILLING_OCCURRED_ATTRIBUTE_ID (0x0105)
+#define ZCL_TARIFF_NOT_SUPPORTED_ATTRIBUTE_ID (0x0106)
+#define ZCL_PRICE_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x0107)
+#define ZCL_CURRENCY_CHANGE_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x0108)
+#define ZCL_CURRENCY_CHANGE_PASSIVE_UPDATED_ATTRIBUTE_ID (0x0109)
+#define ZCL_PRICE_MATRIX_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x010A)
+#define ZCL_PRICE_MATRIX_PASSIVE_UPDATED_ATTRIBUTE_ID (0x010B)
+#define ZCL_TARIFF_CHANGE_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x010C)
+#define ZCL_TARIFF_CHANGE_PASSIVE_UPDATED_ATTRIBUTE_ID (0x010D)
+#define ZCL_PUBLISH_PRICE_RECEIVED_ATTRIBUTE_ID (0x01B0)
+#define ZCL_PUBLISH_PRICE_ACTIONED_ATTRIBUTE_ID (0x01B1)
+#define ZCL_PUBLISH_PRICE_CANCELLED_ATTRIBUTE_ID (0x01B2)
+#define ZCL_PUBLISH_PRICE_REJECTED_ATTRIBUTE_ID (0x01B3)
+#define ZCL_PUBLISH_TARIFF_INFO_RECEIVED_ATTRIBUTE_ID (0x01B4)
+#define ZCL_PUBLISH_TARIFF_INFO_ACTIONED_ATTRIBUTE_ID (0x01B5)
+#define ZCL_PUBLISH_TARIFF_INFO_CANCELLED_ATTRIBUTE_ID (0x01B6)
+#define ZCL_PUBLISH_TARIFF_INFO_REJECTED_ATTRIBUTE_ID (0x01B7)
+#define ZCL_PUBLISH_PRICE_MATRIX_RECEIVED_ATTRIBUTE_ID (0x01B8)
+#define ZCL_PUBLISH_PRICE_MATRIX_ACTIONED_ATTRIBUTE_ID (0x01B9)
+#define ZCL_PUBLISH_PRICE_MATRIX_CANCELLED_ATTRIBUTE_ID (0x01BA)
+#define ZCL_PUBLISH_PRICE_MATRIX_REJECTED_ATTRIBUTE_ID (0x01BB)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_RECEIVED_ATTRIBUTE_ID (0x01BC)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_ACTIONED_ATTRIBUTE_ID (0x01BD)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_CANCELLED_ATTRIBUTE_ID (0x01BE)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_REJECTED_ATTRIBUTE_ID (0x01BF)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_RECEIVED_ATTRIBUTE_ID (0x01C0)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_ACTIONED_ATTRIBUTE_ID (0x01C1)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_CANCELLED_ATTRIBUTE_ID (0x01C2)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_REJECTED_ATTRIBUTE_ID (0x01C3)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_RECEIVED_ATTRIBUTE_ID (0x01C4)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_ACTIONED_ATTRIBUTE_ID (0x01C5)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_CANCELLED_ATTRIBUTE_ID (0x01C6)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_REJECTED_ATTRIBUTE_ID (0x01C7)
+#define ZCL_PUBLISH_CO2_VALUE_RECEIVED_ATTRIBUTE_ID (0x01C8)
+#define ZCL_PUBLISH_CO2_VALUE_ACTIONED_ATTRIBUTE_ID (0x01C9)
+#define ZCL_PUBLISH_CO2_VALUE_CANCELLED_ATTRIBUTE_ID (0x01CA)
+#define ZCL_PUBLISH_CO2_VALUE_REJECTED_ATTRIBUTE_ID (0x01CB)
+#define ZCL_PUBLISH_CPP_EVENT_RECEIVED_ATTRIBUTE_ID (0x01CC)
+#define ZCL_PUBLISH_CPP_EVENT_ACTIONED_ATTRIBUTE_ID (0x01CD)
+#define ZCL_PUBLISH_CPP_EVENT_CANCELLED_ATTRIBUTE_ID (0x01CE)
+#define ZCL_PUBLISH_CPP_EVENT_REJECTED_ATTRIBUTE_ID (0x01CF)
+#define ZCL_PUBLISH_TIER_LABELS_RECEIVED_ATTRIBUTE_ID (0x01D0)
+#define ZCL_PUBLISH_TIER_LABELS_ACTIONED_ATTRIBUTE_ID (0x01D1)
+#define ZCL_PUBLISH_TIER_LABELS_CANCELLED_ATTRIBUTE_ID (0x01D2)
+#define ZCL_PUBLISH_TIER_LABELS_REJECTED_ATTRIBUTE_ID (0x01D3)
+#define ZCL_PUBLISH_BILLING_PERIOD_RECEIVED_ATTRIBUTE_ID (0x01D4)
+#define ZCL_PUBLISH_BILLING_PERIOD_ACTIONED_ATTRIBUTE_ID (0x01D5)
+#define ZCL_PUBLISH_BILLING_PERIOD_CANCELLED_ATTRIBUTE_ID (0x01D6)
+#define ZCL_PUBLISH_BILLING_PERIOD_REJECTED_ATTRIBUTE_ID (0x01D7)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_RECEIVED_ATTRIBUTE_ID (0x01D8)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_ACTIONED_ATTRIBUTE_ID (0x01D9)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_CANCELLED_ATTRIBUTE_ID (0x01DA)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_REJECTED_ATTRIBUTE_ID (0x01DB)
+#define ZCL_PUBLISH_BLOCK_PERIOD_RECEIVED_ATTRIBUTE_ID (0x01DC)
+#define ZCL_PUBLISH_BLOCK_PERIOD_ACTIONED_ATTRIBUTE_ID (0x01DD)
+#define ZCL_PUBLISH_BLOCK_PERIOD_CANCELLED_ATTRIBUTE_ID (0x01DE)
+#define ZCL_PUBLISH_BLOCK_PERIOD_REJECTED_ATTRIBUTE_ID (0x01DF)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_RECEIVED_ATTRIBUTE_ID (0x01E0)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_ACTIONED_ATTRIBUTE_ID (0x01E1)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_CANCELLED_ATTRIBUTE_ID (0x01E2)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_REJECTED_ATTRIBUTE_ID (0x01E3)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_RECEIVED_ATTRIBUTE_ID (0x01E4)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_ACTIONED_ATTRIBUTE_ID (0x01E5)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_CANCELLED_ATTRIBUTE_ID (0x01E6)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_REJECTED_ATTRIBUTE_ID (0x01E7)
+#define ZCL_CHECK_METER_ATTRIBUTE_ID (0x0200)
+#define ZCL_LOW_BATTERY_ATTRIBUTE_ID (0x0201)
+#define ZCL_TAMPER_DETECT_ATTRIBUTE_ID (0x0202)
+#define ZCL_DEVICE_MANAGEMENT_SUPPLY_STATUS_ATTRIBUTE_ID (0x0203)
+#define ZCL_SUPPLY_QUALITY_ATTRIBUTE_ID (0x0204)
+#define ZCL_LEAK_DETECT_ATTRIBUTE_ID (0x0205)
+#define ZCL_SERVICE_DISCONNECT_ATTRIBUTE_ID (0x0206)
+#define ZCL_REVERSE_FLOW_GENERAL_ATTRIBUTE_ID (0x0207)
+#define ZCL_METER_COVER_REMOVED_ATTRIBUTE_ID (0x0208)
+#define ZCL_METER_COVER_CLOSED_ATTRIBUTE_ID (0x0209)
+#define ZCL_STRONG_MAGNETIC_FIELD_ATTRIBUTE_ID (0x020A)
+#define ZCL_NO_STRONG_MAGNETIC_FIELD_ATTRIBUTE_ID (0x020B)
+#define ZCL_BATTERY_FAILURE_ATTRIBUTE_ID (0x020C)
+#define ZCL_PROGRAM_MEMORY_ERROR_ATTRIBUTE_ID (0x020D)
+#define ZCL_RAM_ERROR_ATTRIBUTE_ID (0x020E)
+#define ZCL_NV_MEMORY_ERROR_ATTRIBUTE_ID (0x020F)
+#define ZCL_LOW_VOLTAGE_L1_ATTRIBUTE_ID (0x0210)
+#define ZCL_HIGH_VOLTAGE_L1_ATTRIBUTE_ID (0x0211)
+#define ZCL_LOW_VOLTAGE_L2_ATTRIBUTE_ID (0x0212)
+#define ZCL_HIGH_VOLTAGE_L2_ATTRIBUTE_ID (0x0213)
+#define ZCL_LOW_VOLTAGE_L3_ATTRIBUTE_ID (0x0214)
+#define ZCL_HIGH_VOLTAGE_L3_ATTRIBUTE_ID (0x0215)
+#define ZCL_OVER_CURRENT_L1_ATTRIBUTE_ID (0x0216)
+#define ZCL_OVER_CURRENT_L2_ATTRIBUTE_ID (0x0217)
+#define ZCL_OVER_CURRENT_L3_ATTRIBUTE_ID (0x0218)
+#define ZCL_FREQUENCY_TOO_LOW_L1_ATTRIBUTE_ID (0x0219)
+#define ZCL_FREQUENCY_TOO_HIGH_L1_ATTRIBUTE_ID (0x021A)
+#define ZCL_FREQUENCY_TOO_LOW_L2_ATTRIBUTE_ID (0x021B)
+#define ZCL_FREQUENCY_TOO_HIGH_L2_ATTRIBUTE_ID (0x021C)
+#define ZCL_FREQUENCY_TOO_LOW_L3_ATTRIBUTE_ID (0x021D)
+#define ZCL_FREQUENCY_TOO_HIGH_L3_ATTRIBUTE_ID (0x021E)
+#define ZCL_GROUND_FAULT_ATTRIBUTE_ID (0x021F)
+#define ZCL_ELECTRIC_TAMPER_DETECT_ATTRIBUTE_ID (0x0220)
+#define ZCL_INCORRECT_POLARITY_ATTRIBUTE_ID (0x0221)
+#define ZCL_CURRENT_NO_VOLTAGE_ATTRIBUTE_ID (0x0222)
+#define ZCL_UNDER_VOLTAGE_ATTRIBUTE_ID (0x0223)
+#define ZCL_OVER_VOLTAGE_ATTRIBUTE_ID (0x0224)
+#define ZCL_NORMAL_VOLTAGE_ATTRIBUTE_ID (0x0225)
+#define ZCL_PF_BELOW_THRESHOLD_ATTRIBUTE_ID (0x0226)
+#define ZCL_PF_ABOVE_THRESHOLD_ATTRIBUTE_ID (0x0227)
+#define ZCL_TERMINAL_COVER_REMOVED_ATTRIBUTE_ID (0x0228)
+#define ZCL_TERMINAL_COVER_CLOSED_ATTRIBUTE_ID (0x0229)
+#define ZCL_BURST_DETECT_ATTRIBUTE_ID (0x0230)
+#define ZCL_PRESSURE_TOO_LOW_ATTRIBUTE_ID (0x0231)
+#define ZCL_PRESSURE_TOO_HIGH_ATTRIBUTE_ID (0x0232)
+#define ZCL_FLOW_SENSOR_COMMUNICATION_ERROR_ATTRIBUTE_ID (0x0233)
+#define ZCL_FLOW_SENSOR_MEASUREMENT_FAULT_ATTRIBUTE_ID (0x0234)
+#define ZCL_FLOW_SENSOR_REVERSE_FLOW_ATTRIBUTE_ID (0x0235)
+#define ZCL_FLOW_SENSOR_AIR_DETECT_ATTRIBUTE_ID (0x0236)
+#define ZCL_PIPE_EMPTY_ATTRIBUTE_ID (0x0237)
+#define ZCL_INLET_TEMP_SENSOR_FAULT_ATTRIBUTE_ID (0x0250)
+#define ZCL_OUTLET_TEMP_SENSOR_FAULT_ATTRIBUTE_ID (0x0251)
+#define ZCL_REVERSE_FLOW_ATTRIBUTE_ID (0x0260)
+#define ZCL_TILT_TAMPER_ATTRIBUTE_ID (0x0261)
+#define ZCL_BATTERY_COVER_REMOVED_ATTRIBUTE_ID (0x0262)
+#define ZCL_BATTERY_COVER_CLOSED_ATTRIBUTE_ID (0x0263)
+#define ZCL_EXCESS_FLOW_ATTRIBUTE_ID (0x0264)
+#define ZCL_TILT_TAMPER_ENABLED_ATTRIBUTE_ID (0x0265)
+#define ZCL_MEASUREMENT_SYSTEM_ERROR_ATTRIBUTE_ID (0x0270)
+#define ZCL_WATCHDOG_ERROR_ATTRIBUTE_ID (0x0271)
+#define ZCL_SUPPLY_DISCONNECT_FAILURE_ATTRIBUTE_ID (0x0272)
+#define ZCL_SUPPLY_CONNECT_FAILURE_ATTRIBUTE_ID (0x0273)
+#define ZCL_MEASUREMENT_SOFTWARE_CHANGED_ATTRIBUTE_ID (0x0274)
+#define ZCL_DST_ENABLED_ATTRIBUTE_ID (0x0275)
+#define ZCL_DST_DISABLED_ATTRIBUTE_ID (0x0276)
+#define ZCL_CLOCK_ADJ_BACKWARD_ATTRIBUTE_ID (0x0277)
+#define ZCL_CLOCK_ADJ_FORWARD_ATTRIBUTE_ID (0x0278)
+#define ZCL_CLOCK_INVALID_ATTRIBUTE_ID (0x0279)
+#define ZCL_COMMUNICATION_ERROR_HAN_ATTRIBUTE_ID (0x027A)
+#define ZCL_COMMUNICATION_OK_HAN_ATTRIBUTE_ID (0x027B)
+#define ZCL_METER_FRAUD_ATTEMPT_ATTRIBUTE_ID (0x027C)
+#define ZCL_POWER_LOSS_ATTRIBUTE_ID (0x027D)
+#define ZCL_UNUSUAL_HAN_TRAFFIC_ATTRIBUTE_ID (0x027E)
+#define ZCL_UNEXPECTED_CLOCK_CHANGE_ATTRIBUTE_ID (0x027F)
+#define ZCL_COMMS_USING_UNAUTHENTICATED_COMPONENT_ATTRIBUTE_ID (0x0280)
+#define ZCL_METERING_ERROR_REG_CLEAR_ATTRIBUTE_ID (0x0281)
+#define ZCL_METERING_ALARM_REG_CLEAR_ATTRIBUTE_ID (0x0282)
+#define ZCL_UNEXPECTED_HW_RESET_ATTRIBUTE_ID (0x0283)
+#define ZCL_UNEXPECTED_PROGRAM_EXECUTION_ATTRIBUTE_ID (0x0284)
+#define ZCL_LIMIT_THRESHOLD_EXCEEDED_ATTRIBUTE_ID (0x0285)
+#define ZCL_LIMIT_THRESHOLD_OK_ATTRIBUTE_ID (0x0286)
+#define ZCL_LIMIT_THRESHOLD_CHANGED_ATTRIBUTE_ID (0x0287)
+#define ZCL_MAXIMUM_DEMAND_EXCEEDED_ATTRIBUTE_ID (0x0288)
+#define ZCL_PROFILE_CLEARED_ATTRIBUTE_ID (0x0289)
+#define ZCL_LOAD_PROFILE_CLEARED_ATTRIBUTE_ID (0x028A)
+#define ZCL_BATTERY_WARN_ATTRIBUTE_ID (0x028B)
+#define ZCL_WRONG_SIGNATURE_ATTRIBUTE_ID (0x028C)
+#define ZCL_NO_SIGNATURE_ATTRIBUTE_ID (0x028D)
+#define ZCL_SIGNATURE_NOT_VALID_ATTRIBUTE_ID (0x028E)
+#define ZCL_UNAUTHORISE_ACTION_FROM_HAN_ATTRIBUTE_ID (0x028F)
+#define ZCL_FAST_POLLING_START_ATTRIBUTE_ID (0x0290)
+#define ZCL_FAST_POLLING_END_ATTRIBUTE_ID (0x0291)
+#define ZCL_METER_REPORTING_INTERVAL_CHANGED_ATTRIBUTE_ID (0x0292)
+#define ZCL_DISCONNECT_TO_LOAD_LIMIT_ATTRIBUTE_ID (0x0293)
+#define ZCL_METER_SUPPLY_STATUS_REGISTER_CHANGED_ATTRIBUTE_ID (0x0294)
+#define ZCL_METER_ALARM_STATUS_REGISTER_CHANGED_ATTRIBUTE_ID (0x0295)
+#define ZCL_EXTENDED_METER_ALARM_STATUS_REGISTER_CHANGED_ATTRIBUTE_ID (0x0296)
+#define ZCL_DATA_ACCESS_VIA_LOCAL_PORT_ATTRIBUTE_ID (0x0297)
+#define ZCL_CONFIGURE_MIRROR_SUCCESS_ATTRIBUTE_ID (0x0298)
+#define ZCL_CONFIGURE_MIRROR_FAILURE_ATTRIBUTE_ID (0x0299)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAG_SCHEME_SUCCESS_ATTRIBUTE_ID (0x029A)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAG_SCHEME_FAILURE_ATTRIBUTE_ID (0x029B)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAGS_SUCCESS_ATTRIBUTE_ID (0x029C)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAGS_FAILURE_ATTRIBUTE_ID (0x029D)
+#define ZCL_STAY_AWAKE_REQUEST_HAN_ATTRIBUTE_ID (0x029E)
+#define ZCL_STAY_AWAKE_REQUEST_WAN_ATTRIBUTE_ID (0x029F)
+#define ZCL_MANUFACTURER_SPECIFIC_A_ATTRIBUTE_ID (0x02B0)
+#define ZCL_MANUFACTURER_SPECIFIC_B_ATTRIBUTE_ID (0x02B1)
+#define ZCL_MANUFACTURER_SPECIFIC_C_ATTRIBUTE_ID (0x02B2)
+#define ZCL_MANUFACTURER_SPECIFIC_D_ATTRIBUTE_ID (0x02B3)
+#define ZCL_MANUFACTURER_SPECIFIC_E_ATTRIBUTE_ID (0x02B4)
+#define ZCL_MANUFACTURER_SPECIFIC_F_ATTRIBUTE_ID (0x02B5)
+#define ZCL_MANUFACTURER_SPECIFIC_G_ATTRIBUTE_ID (0x02B6)
+#define ZCL_MANUFACTURER_SPECIFIC_H_ATTRIBUTE_ID (0x02B7)
+#define ZCL_MANUFACTURER_SPECIFIC_I_ATTRIBUTE_ID (0x02B8)
+#define ZCL_GET_PROFILE_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02C0)
+#define ZCL_GET_PROFILE_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02C1)
+#define ZCL_GET_PROFILE_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02C2)
+#define ZCL_GET_PROFILE_COMMAND_REJECTED_ATTRIBUTE_ID (0x02C3)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02C4)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02C5)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02C6)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_REJECTED_ATTRIBUTE_ID (0x02C7)
+#define ZCL_MIRROR_REMOVED_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02C8)
+#define ZCL_MIRROR_REMOVED_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02C9)
+#define ZCL_MIRROR_REMOVED_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02CA)
+#define ZCL_MIRROR_REMOVED_COMMAND_REJECTED_ATTRIBUTE_ID (0x02CB)
+#define ZCL_GET_SNAPSHOT_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02CC)
+#define ZCL_GET_SNAPSHOT_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02CD)
+#define ZCL_GET_SNAPSHOT_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02CE)
+#define ZCL_GET_SNAPSHOT_COMMAND_REJECTED_ATTRIBUTE_ID (0x02CF)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02D0)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02D1)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02D2)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_REJECTED_ATTRIBUTE_ID (0x02D3)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02D4)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02D5)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02D6)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_REJECTED_ATTRIBUTE_ID (0x02D7)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02D8)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02D9)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02DA)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_REJECTED_ATTRIBUTE_ID (0x02DB)
+#define ZCL_START_SAMPLING_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02DC)
+#define ZCL_START_SAMPLING_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02DD)
+#define ZCL_START_SAMPLING_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02DE)
+#define ZCL_START_SAMPLING_COMMAND_REJECTED_ATTRIBUTE_ID (0x02DF)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x02E0)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_ACTIONED_ATTRIBUTE_ID (0x02E1)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_CANCELLED_ATTRIBUTE_ID (0x02E2)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x02E3)
+#define ZCL_SUPPLY_ON_ATTRIBUTE_ID (0x02E4)
+#define ZCL_SUPPLY_ARMED_ATTRIBUTE_ID (0x02E5)
+#define ZCL_SUPPLY_OFF_ATTRIBUTE_ID (0x02E6)
+#define ZCL_DISCONNECTED_DUE_TO_TAMPER_DETECTED_ATTRIBUTE_ID (0x02E7)
+#define ZCL_MANUAL_DISCONNECT_ATTRIBUTE_ID (0x02E8)
+#define ZCL_MANUAL_CONNECT_ATTRIBUTE_ID (0x02E9)
+#define ZCL_REMOTE_DISCONNECTION_ATTRIBUTE_ID (0x02EA)
+#define ZCL_REMOTE_CONNECT_ATTRIBUTE_ID (0x02EB)
+#define ZCL_LOCAL_DISCONNECTION_ATTRIBUTE_ID (0x02EC)
+#define ZCL_LOCAL_CONNECT_ATTRIBUTE_ID (0x02ED)
+#define ZCL_CHANGE_SUPPLY_RECEIVED_ATTRIBUTE_ID (0x02EE)
+#define ZCL_CHANGE_SUPPLY_ACTIONED_ATTRIBUTE_ID (0x02EF)
+#define ZCL_CHANGE_SUPPLY_CANCELLED_ATTRIBUTE_ID (0x02F0)
+#define ZCL_CHANGE_SUPPLY_REJECTED_ATTRIBUTE_ID (0x02F1)
+#define ZCL_LOCAL_CHANGE_SUPPLY_RECEIVED_ATTRIBUTE_ID (0x02F2)
+#define ZCL_LOCAL_CHANGE_SUPPLY_ACTIONED_ATTRIBUTE_ID (0x02F3)
+#define ZCL_LOCAL_CHANGE_SUPPLY_CANCELLED_ATTRIBUTE_ID (0x02F4)
+#define ZCL_LOCAL_CHANGE_SUPPLY_REJECTED_ATTRIBUTE_ID (0x02F5)
+#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_RECEIVED_ATTRIBUTE_ID (0x02F6)
+#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_ACTIONED_ATTRIBUTE_ID (0x02F7)
+#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_CANCELLED_ATTRIBUTE_ID (0x02F8)
+#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_REJECTED_ATTRIBUTE_ID (0x02F9)
+#define ZCL_MESSAGE_CONFIRMATION_SENT_ATTRIBUTE_ID (0x0300)
+#define ZCL_DISPLAY_MESSAGE_RECEIVED_ATTRIBUTE_ID (0x03C0)
+#define ZCL_DISPLAY_MESSAGE_ACTIONED_ATTRIBUTE_ID (0x03C1)
+#define ZCL_DISPLAY_MESSAGE_CANCELLED_ATTRIBUTE_ID (0x03C2)
+#define ZCL_DISPLAY_MESSAGE_REJECTED_ATTRIBUTE_ID (0x03C3)
+#define ZCL_CANCEL_MESSAGE_RECEIVED_ATTRIBUTE_ID (0x03C4)
+#define ZCL_CANCEL_MESSAGE_ACTIONED_ATTRIBUTE_ID (0x03C5)
+#define ZCL_CANCEL_MESSAGE_CANCELLED_ATTRIBUTE_ID (0x03C6)
+#define ZCL_CANCEL_MESSAGE_REJECTED_ATTRIBUTE_ID (0x03C7)
+#define ZCL_LOW_CREDIT_ATTRIBUTE_ID (0x0400)
+#define ZCL_NO_CREDIT_ATTRIBUTE_ID (0x0401)
+#define ZCL_CREDIT_EXHAUSTED_ATTRIBUTE_ID (0x0402)
+#define ZCL_EMERGENCY_CREDIT_ENABLED_ATTRIBUTE_ID (0x0403)
+#define ZCL_EMERGENCY_CREDIT_EXHAUSTED_ATTRIBUTE_ID (0x0404)
+#define ZCL_PREPAY_IHD_LOW_CREDIT_WARNING_ATTRIBUTE_ID (0x0405)
+#define ZCL_PHYSICAL_ATTACK_ON_THE_PREPAY_METER_ATTRIBUTE_ID (0x0420)
+#define ZCL_ELECTRONIC_ATTACK_ON_THE_PREPAY_METER_ATTRIBUTE_ID (0x0421)
+#define ZCL_DISCOUNT_APPLIED_ATTRIBUTE_ID (0x0422)
+#define ZCL_CREDIT_ADJUSTMENT_ATTRIBUTE_ID (0x0423)
+#define ZCL_CREDIT_ADJUST_FAIL_ATTRIBUTE_ID (0x0424)
+#define ZCL_DEBT_ADJUSTMENT_ATTRIBUTE_ID (0x0425)
+#define ZCL_DEBT_ADJUST_FAIL_ATTRIBUTE_ID (0x0426)
+#define ZCL_MODE_CHANGE_ATTRIBUTE_ID (0x0427)
+#define ZCL_TOPUP_CODE_ERROR_ATTRIBUTE_ID (0x0428)
+#define ZCL_TOPUP_ALREADY_USED_ATTRIBUTE_ID (0x0429)
+#define ZCL_TOPUP_CODE_INVALID_ATTRIBUTE_ID (0x042A)
+#define ZCL_TOPUP_ACCEPTED_VIA_REMOTE_ATTRIBUTE_ID (0x042B)
+#define ZCL_TOPUP_ACCEPTED_VIA_MANUAL_ENTRY_ATTRIBUTE_ID (0x042C)
+#define ZCL_FRIENDLY_CREDIT_IN_USE_ATTRIBUTE_ID (0x042D)
+#define ZCL_FRIENDLY_CREDIT_END_WARNING_ATTRIBUTE_ID (0x042E)
+#define ZCL_FRIENDLY_CREDIT_PERIOD_END_ATTRIBUTE_ID (0x042F)
+#define ZCL_PREPAY_ERROR_REG_CLEAR_ATTRIBUTE_ID (0x0430)
+#define ZCL_PREPAY_ALARM_REG_CLEAR_ATTRIBUTE_ID (0x0431)
+#define ZCL_PREPAY_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x0432)
+#define ZCL_TOPUP_VALUE_TOO_LARGE_ATTRIBUTE_ID (0x0433)
+#define ZCL_MODE_CREDIT_2_PREPAY_ATTRIBUTE_ID (0x0441)
+#define ZCL_MODE_PREPAY_2_CREDIT_ATTRIBUTE_ID (0x0442)
+#define ZCL_MODE_DEFAULT_ATTRIBUTE_ID (0x0443)
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_RECEIVED_ATTRIBUTE_ID (0x04C0)
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_ACTIONED_ATTRIBUTE_ID (0x04C1)
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_CANCELLED_ATTRIBUTE_ID (0x04C2)
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_REJECTED_ATTRIBUTE_ID (0x04C3)
+#define ZCL_CHANGE_DEBT_RECEIVED_ATTRIBUTE_ID (0x04C4)
+#define ZCL_CHANGE_DEBT_ACTIONED_ATTRIBUTE_ID (0x04C5)
+#define ZCL_CHANGE_DEBT_CANCELLED_ATTRIBUTE_ID (0x04C6)
+#define ZCL_CHANGE_DEBT_REJECTED_ATTRIBUTE_ID (0x04C7)
+#define ZCL_EMERGENCY_CREDIT_SETUP_RECEIVED_ATTRIBUTE_ID (0x04C8)
+#define ZCL_EMERGENCY_CREDIT_SETUP_ACTIONED_ATTRIBUTE_ID (0x04C9)
+#define ZCL_EMERGENCY_CREDIT_SETUP_CANCELLED_ATTRIBUTE_ID (0x04CA)
+#define ZCL_EMERGENCY_CREDIT_SETUP_REJECTED_ATTRIBUTE_ID (0x04CB)
+#define ZCL_CONSUMER_TOPUP_RECEIVED_ATTRIBUTE_ID (0x04CC)
+#define ZCL_CONSUMER_TOPUP_ACTIONED_ATTRIBUTE_ID (0x04CD)
+#define ZCL_CONSUMER_TOPUP_CANCELLED_ATTRIBUTE_ID (0x04CE)
+#define ZCL_CONSUMER_TOPUP_REJECTED_ATTRIBUTE_ID (0x04CF)
+#define ZCL_CREDIT_ADJUSTMENT_RECEIVED_ATTRIBUTE_ID (0x04D0)
+#define ZCL_CREDIT_ADJUSTMENT_ACTIONED_ATTRIBUTE_ID (0x04D1)
+#define ZCL_CREDIT_ADJUSTMENT_CANCELLED_ATTRIBUTE_ID (0x04D2)
+#define ZCL_CREDIT_ADJUSTMENT_REJECTED_ATTRIBUTE_ID (0x04D3)
+#define ZCL_CHANGE_PAYMENT_MODE_RECEIVED_ATTRIBUTE_ID (0x04D4)
+#define ZCL_CHANGE_PAYMENT_MODE_ACTIONED_ATTRIBUTE_ID (0x04D5)
+#define ZCL_CHANGE_PAYMENT_MODE_CANCELLED_ATTRIBUTE_ID (0x04D6)
+#define ZCL_CHANGE_PAYMENT_MODE_REJECTED_ATTRIBUTE_ID (0x04D7)
+#define ZCL_GET_PREPAY_SNAPSHOT_RECEIVED_ATTRIBUTE_ID (0x04D8)
+#define ZCL_GET_PREPAY_SNAPSHOT_ACTIONED_ATTRIBUTE_ID (0x04D9)
+#define ZCL_GET_PREPAY_SNAPSHOT_CANCELLED_ATTRIBUTE_ID (0x04DA)
+#define ZCL_GET_PREPAY_SNAPSHOT_REJECTED_ATTRIBUTE_ID (0x04DB)
+#define ZCL_GET_TOPUP_LOG_RECEIVED_ATTRIBUTE_ID (0x04DC)
+#define ZCL_GET_TOPUP_LOG_ACTIONED_ATTRIBUTE_ID (0x04DD)
+#define ZCL_GET_TOPUP_LOG_CANCELLED_ATTRIBUTE_ID (0x04DE)
+#define ZCL_GET_TOPUP_LOG_REJECTED_ATTRIBUTE_ID (0x04DF)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_RECEIVED_ATTRIBUTE_ID (0x04E0)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_ACTIONED_ATTRIBUTE_ID (0x04E1)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_CANCELLED_ATTRIBUTE_ID (0x04E2)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_REJECTED_ATTRIBUTE_ID (0x04E3)
+#define ZCL_GET_DEBT_REPAY_LOG_RECEIVED_ATTRIBUTE_ID (0x04E4)
+#define ZCL_GET_DEBT_REPAY_LOG_ACTIONED_ATTRIBUTE_ID (0x04E5)
+#define ZCL_GET_DEBT_REPAY_LOG_CANCELLED_ATTRIBUTE_ID (0x04E6)
+#define ZCL_GET_DEBT_REPAY_LOG_REJECTED_ATTRIBUTE_ID (0x04E7)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_RECEIVED_ATTRIBUTE_ID (0x04E8)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_ACTIONED_ATTRIBUTE_ID (0x04E9)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_CANCELLED_ATTRIBUTE_ID (0x04EA)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_REJECTED_ATTRIBUTE_ID (0x04EB)
+#define ZCL_SET_OVERALL_DEBT_CAP_RECEIVED_ATTRIBUTE_ID (0x04EC)
+#define ZCL_SET_OVERALL_DEBT_CAP_ACTIONED_ATTRIBUTE_ID (0x04ED)
+#define ZCL_SET_OVERALL_DEBT_CAP_CANCELLED_ATTRIBUTE_ID (0x04EE)
+#define ZCL_SET_OVERALL_DEBT_CAP_REJECTED_ATTRIBUTE_ID (0x04EF)
+#define ZCL_CALENDAR_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x0500)
+#define ZCL_CALENDAR_CHANGE_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x0501)
+#define ZCL_CALENDAR_CHANGE_PASSIVE_UPDATED_ATTRIBUTE_ID (0x0502)
+#define ZCL_PUBLISH_CALENDAR_RECEIVED_ATTRIBUTE_ID (0x05C0)
+#define ZCL_PUBLISH_CALENDAR_ACTIONED_ATTRIBUTE_ID (0x05C1)
+#define ZCL_PUBLISH_CALENDAR_CANCELLED_ATTRIBUTE_ID (0x05C2)
+#define ZCL_PUBLISH_CALENDAR_REJECTED_ATTRIBUTE_ID (0x05C3)
+#define ZCL_PUBLISH_DAY_PROFILE_RECEIVED_ATTRIBUTE_ID (0x05C4)
+#define ZCL_PUBLISH_DAY_PROFILE_ACTIONED_ATTRIBUTE_ID (0x05C5)
+#define ZCL_PUBLISH_DAY_PROFILE_CANCELLED_ATTRIBUTE_ID (0x05C6)
+#define ZCL_PUBLISH_DAY_PROFILE_REJECTED_ATTRIBUTE_ID (0x05C7)
+#define ZCL_PUBLISH_WEEK_PROFILE_RECEIVED_ATTRIBUTE_ID (0x05C8)
+#define ZCL_PUBLISH_WEEK_PROFILE_ACTIONED_ATTRIBUTE_ID (0x05C9)
+#define ZCL_PUBLISH_WEEK_PROFILE_CANCELLED_ATTRIBUTE_ID (0x05CA)
+#define ZCL_PUBLISH_WEEK_PROFILE_REJECTED_ATTRIBUTE_ID (0x05CB)
+#define ZCL_PUBLISH_SEASONS_RECEIVED_ATTRIBUTE_ID (0x05CC)
+#define ZCL_PUBLISH_SEASONS_ACTIONED_ATTRIBUTE_ID (0x05CD)
+#define ZCL_PUBLISH_SEASONS_CANCELLED_ATTRIBUTE_ID (0x05CE)
+#define ZCL_PUBLISH_SEASONS_REJECTED_ATTRIBUTE_ID (0x05CF)
+#define ZCL_PUBLISH_SPECIAL_DAYS_RECEIVED_ATTRIBUTE_ID (0x05D0)
+#define ZCL_PUBLISH_SPECIAL_DAYS_ACTIONED_ATTRIBUTE_ID (0x05D1)
+#define ZCL_PUBLISH_SPECIAL_DAYS_CANCELLED_ATTRIBUTE_ID (0x05D2)
+#define ZCL_PUBLISH_SPECIAL_DAYS_REJECTED_ATTRIBUTE_ID (0x05D3)
+#define ZCL_PASSWORD_1_CHANGE_ATTRIBUTE_ID (0x0600)
+#define ZCL_PASSWORD_2_CHANGE_ATTRIBUTE_ID (0x0601)
+#define ZCL_PASSWORD_3_CHANGE_ATTRIBUTE_ID (0x0602)
+#define ZCL_PASSWORD_4_CHANGE_ATTRIBUTE_ID (0x0603)
+#define ZCL_EVENT_LOG_CLEARED_ATTRIBUTE_ID (0x0604)
+#define ZCL_ZIGBEE_APS_TIMEOUT_ATTRIBUTE_ID (0x0610)
+#define ZCL_ZIGBEE_IEEE_TRANSMISSION_FAILURE_OVER_THRESHOLD_ATTRIBUTE_ID (0x0611)
+#define ZCL_ZIGBEE_IEEE_FRAME_CHECK_SEQUENCE_THRESHOLD_ATTRIBUTE_ID (0x0612)
+#define ZCL_ERROR_CERTIFICATE_ATTRIBUTE_ID (0x0613)
+#define ZCL_ERROR_SIGNATURE_ATTRIBUTE_ID (0x0614)
+#define ZCL_ERROR_PROGRAM_STORAGE_ATTRIBUTE_ID (0x0615)
+#define ZCL_PUBLISH_COT_RECEIVED_ATTRIBUTE_ID (0x06C0)
+#define ZCL_PUBLISH_COT_ACTIONED_ATTRIBUTE_ID (0x06C1)
+#define ZCL_PUBLISH_COT_CANCELLED_ATTRIBUTE_ID (0x06C2)
+#define ZCL_PUBLISH_COT_REJECTED_ATTRIBUTE_ID (0x06C3)
+#define ZCL_PUBLISH_COS_RECEIVED_ATTRIBUTE_ID (0x06C4)
+#define ZCL_PUBLISH_COS_ACTIONED_ATTRIBUTE_ID (0x06C5)
+#define ZCL_PUBLISH_COS_CANCELLED_ATTRIBUTE_ID (0x06C6)
+#define ZCL_PUBLISH_COS_REJECTED_ATTRIBUTE_ID (0x06C7)
+#define ZCL_CHANGE_PASSWORD_RECEIVED_ATTRIBUTE_ID (0x06C8)
+#define ZCL_CHANGE_PASSWORD_ACTIONED_ATTRIBUTE_ID (0x06C9)
+#define ZCL_CHANGE_PASSWORD_CANCELLED_ATTRIBUTE_ID (0x06CA)
+#define ZCL_CHANGE_PASSWORD_REJECTED_ATTRIBUTE_ID (0x06CB)
+#define ZCL_SET_EVENT_CONFIGURATION_RECEIVED_ATTRIBUTE_ID (0x06CC)
+#define ZCL_SET_EVENT_CONFIGURATION_ACTIONED_ATTRIBUTE_ID (0x06CD)
+#define ZCL_SET_EVENT_CONFIGURATION_CANCELLED_ATTRIBUTE_ID (0x06CE)
+#define ZCL_SET_EVENT_CONFIGURATION_REJECTED_ATTRIBUTE_ID (0x06CF)
+#define ZCL_UPDATE_SITE_ID_RECEIVED_ATTRIBUTE_ID (0x06D0)
+#define ZCL_UPDATE_SITE_ID_ACTIONED_ATTRIBUTE_ID (0x06D1)
+#define ZCL_UPDATE_SITE_ID_CANCELLED_ATTRIBUTE_ID (0x06D2)
+#define ZCL_UPDATE_SITE_ID_REJECTED_ATTRIBUTE_ID (0x06D3)
+#define ZCL_UPDATE_CIN_RECEIVED_ATTRIBUTE_ID (0x06D4)
+#define ZCL_UPDATE_CIN_ACTIONED_ATTRIBUTE_ID (0x06D5)
+#define ZCL_UPDATE_CIN_CANCELLED_ATTRIBUTE_ID (0x06D6)
+#define ZCL_UPDATE_CIN_REJECTED_ATTRIBUTE_ID (0x06D7)
+#define ZCL_TUNNELING_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x0700)
+#define ZCL_UNSUPPORTED_PROTOCOL_ATTRIBUTE_ID (0x0701)
+#define ZCL_INCORRECT_PROTOCOL_ATTRIBUTE_ID (0x0702)
+#define ZCL_REQUEST_TUNNEL_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07C0)
+#define ZCL_REQUEST_TUNNEL_COMMAND_REJECTED_ATTRIBUTE_ID (0x07C1)
+#define ZCL_REQUEST_TUNNEL_COMMAND_GENERATED_ATTRIBUTE_ID (0x07C2)
+#define ZCL_CLOSE_TUNNEL_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07C3)
+#define ZCL_CLOSE_TUNNEL_COMMAND_REJECTED_ATTRIBUTE_ID (0x07C4)
+#define ZCL_CLOSE_TUNNEL_COMMAND_GENERATED_ATTRIBUTE_ID (0x07C5)
+#define ZCL_TRANSFER_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07C6)
+#define ZCL_TRANSFER_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x07C7)
+#define ZCL_TRANSFER_DATA_COMMAND_GENERATED_ATTRIBUTE_ID (0x07C8)
+#define ZCL_TRANSFER_DATA_ERROR_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07C9)
+#define ZCL_TRANSFER_DATA_ERROR_COMMAND_REJECTED_ATTRIBUTE_ID (0x07CA)
+#define ZCL_TRANSFER_DATA_ERROR_COMMAND_GENERATED_ATTRIBUTE_ID (0x07CB)
+#define ZCL_ACK_TRANSFER_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07CC)
+#define ZCL_ACK_TRANSFER_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x07CD)
+#define ZCL_ACK_TRANSFER_DATA_COMMAND_GENERATED_ATTRIBUTE_ID (0x07CE)
+#define ZCL_READY_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07CF)
+#define ZCL_READY_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x07D0)
+#define ZCL_READY_DATA_COMMAND_GENERATED_ATTRIBUTE_ID (0x07D1)
+#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_RECEIVED_ATTRIBUTE_ID (0x07D2)
+#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_REJECTED_ATTRIBUTE_ID (0x07D3)
+#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_GENERATED_ATTRIBUTE_ID (0x07D4)
+#define ZCL_FIRMWARE_READY_FOR_ACTIVATION_ATTRIBUTE_ID (0x0800)
+#define ZCL_FIRMWARE_ACTIVATED_ATTRIBUTE_ID (0x0801)
+#define ZCL_FIRMWARE_ACTIVATION_FAILURE_ATTRIBUTE_ID (0x0802)
+#define ZCL_PATCH_READY_FOR_ACTIVATION_ATTRIBUTE_ID (0x0803)
+#define ZCL_PATCH_ACTIVATED_ATTRIBUTE_ID (0x0804)
+#define ZCL_PATCH_FAILURE_ATTRIBUTE_ID (0x0805)
+#define ZCL_IMAGE_NOTIFY_COMMAND_RECEIVED_ATTRIBUTE_ID (0x08C0)
+#define ZCL_IMAGE_NOTIFY_COMMAND_REJECTED_ATTRIBUTE_ID (0x08C1)
+#define ZCL_QUERY_NEXT_IMAGE_REQUEST_GENERATED_ATTRIBUTE_ID (0x08C2)
+#define ZCL_QUERY_NEXT_IMAGE_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x08C3)
+#define ZCL_QUERY_NEXT_IMAGE_RESPONSE_REJECTED_ATTRIBUTE_ID (0x08C4)
+#define ZCL_IMAGE_BLOCK_REQUEST_GENERATED_ATTRIBUTE_ID (0x08C5)
+#define ZCL_IMAGE_PAGE_REQUEST_GENERATED_ATTRIBUTE_ID (0x08C6)
+#define ZCL_IMAGE_BLOCK_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x08C7)
+#define ZCL_IMAGE_BLOCK_RESPONSE_REJECTED_ATTRIBUTE_ID (0x08C8)
+#define ZCL_UPGRADE_END_REQUEST_GENERATED_ATTRIBUTE_ID (0x08C9)
+#define ZCL_UPGRADE_END_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x08CA)
+#define ZCL_UPGRADE_END_RESPONSE_REJECTED_ATTRIBUTE_ID (0x08CB)
+#define ZCL_QUERY_SPECIFIC_FILE_REQUEST_GENERATED_ATTRIBUTE_ID (0x08CC)
+#define ZCL_QUERY_SPECIFIC_FILE_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x08CD)
+#define ZCL_QUERY_SPECIFIC_FILE_RESPONSE_REJECTED_ATTRIBUTE_ID (0x08CE)
+
+// Server attributes
+#define ZCL_PROVIDER_ID_SERVER_ATTRIBUTE_ID (0x0100)
+#define ZCL_PROVIDER_NAME_ATTRIBUTE_ID (0x0101)
+#define ZCL_PROVIDER_CONTACT_DETAILS_ATTRIBUTE_ID (0x0102)
+#define ZCL_PROPOSED_PROVIDER_ID_ATTRIBUTE_ID (0x0110)
+#define ZCL_PROPOSED_PROVIDER_NAME_ATTRIBUTE_ID (0x0111)
+#define ZCL_PROPOSED_PROVIDER_CHANGE_DATE_TIME_ATTRIBUTE_ID (0x0112)
+#define ZCL_PROPOSED_PROVIDER_CHANGE_CONTROL_ATTRIBUTE_ID (0x0113)
+#define ZCL_RECEIVED_PROVIDER_ID_SERVER_ATTRIBUTE_ID (0x0120)
+#define ZCL_RECEIVED_PROVIDER_NAME_ATTRIBUTE_ID (0x0121)
+#define ZCL_RECEIVED_PROVIDER_CONTACT_DETAILS_ATTRIBUTE_ID (0x0122)
+#define ZCL_RECEIVED_PROPOSED_PROVIDER_ID_ATTRIBUTE_ID (0x0130)
+#define ZCL_RECEIVED_PROPOSED_PROVIDER_NAME_ATTRIBUTE_ID (0x0131)
+#define ZCL_RECEIVED_PROPOSED_PROVIDER_CHANGE_DATE_TIME_ATTRIBUTE_ID (0x0132)
+#define ZCL_RECEIVED_PROPOSED_PROVIDER_CHANGE_CONTROL_ATTRIBUTE_ID (0x0133)
+#define ZCL_CHANGE_OF_TENANCY_UPDATE_DATE_TIME_ATTRIBUTE_ID (0x0200)
+#define ZCL_PROPOSED_TENANCY_CHANGE_CONTROL_ATTRIBUTE_ID (0x0201)
+#define ZCL_WAN_STATUS_ATTRIBUTE_ID (0x0300)
+#define ZCL_LOW_MEDIUM_THRESHOLD_ATTRIBUTE_ID (0x0400)
+#define ZCL_MEDIUM_HIGH_THRESHOLD_ATTRIBUTE_ID (0x0401)
+
+// Attribute ids for cluster: Events
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: MDU Pairing
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Sub-GHz
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SUB_GHZ_CLUSTER_CHANNEL_CHANGE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SUB_GHZ_CLUSTER_PAGE_28_CHANNEL_MASK_ATTRIBUTE_ID (0x0001)
+#define ZCL_SUB_GHZ_CLUSTER_PAGE_29_CHANNEL_MASK_ATTRIBUTE_ID (0x0002)
+#define ZCL_SUB_GHZ_CLUSTER_PAGE_30_CHANNEL_MASK_ATTRIBUTE_ID (0x0003)
+#define ZCL_SUB_GHZ_CLUSTER_PAGE_31_CHANNEL_MASK_ATTRIBUTE_ID (0x0004)
+
+// Attribute ids for cluster: Key Establishment
+
+// Client attributes
+#define ZCL_KEY_ESTABLISHMENT_SUITE_CLIENT_ATTRIBUTE_ID (0x0000)
+
+// Server attributes
+#define ZCL_KEY_ESTABLISHMENT_SUITE_SERVER_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: Information
+
+// Client attributes
+
+// Server attributes
+#define ZCL_NODE_DESCRIPTION_ATTRIBUTE_ID (0x0000)
+#define ZCL_DELIVERY_ENABLE_ATTRIBUTE_ID (0x0001)
+#define ZCL_PUSH_INFORMATION_TIMER_ATTRIBUTE_ID (0x0002)
+#define ZCL_ENABLE_SECURE_CONFIGURATION_ATTRIBUTE_ID (0x0003)
+#define ZCL_NUMBER_OF_CONTENTS_ATTRIBUTE_ID (0x0010)
+#define ZCL_CONTENT_ROOT_ID_ATTRIBUTE_ID (0x0011)
+
+// Attribute ids for cluster: Data Sharing
+
+// Client attributes
+
+// Server attributes
+#define ZCL_DEVICE_NAME_ATTRIBUTE_ID (0x0000)
+#define ZCL_DEVICE_DESCRIPTION_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Gaming
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PLAYER_NAME_ATTRIBUTE_ID (0x0000)
+#define ZCL_NB_OF_GAMES_ATTRIBUTE_ID (0x0001)
+#define ZCL_LIST_OF_GAMES_ATTRIBUTE_ID (0x0002)
+#define ZCL_ANNOUNCEMENT_INTERVAL_ATTRIBUTE_ID (0x0003)
+#define ZCL_GAME_ID_ATTRIBUTE_ID (0x0010)
+#define ZCL_NAME_OF_GAME_ATTRIBUTE_ID (0x0011)
+#define ZCL_GAME_MASTER_ATTRIBUTE_ID (0x0012)
+#define ZCL_GAMING_STATUS_ATTRIBUTE_ID (0x0013)
+#define ZCL_CURRENT_NB_OF_PLAYERS_ATTRIBUTE_ID (0x0014)
+#define ZCL_LIST_OF_CURRENT_PLAYERS_ATTRIBUTE_ID (0x0015)
+#define ZCL_MAX_NB_OF_PLAYERS_ATTRIBUTE_ID (0x0016)
+#define ZCL_MIN_NB_OF_PLAYERS_ATTRIBUTE_ID (0x0017)
+#define ZCL_CURRENT_GAME_LEVEL_ATTRIBUTE_ID (0x0018)
+#define ZCL_SCORE_OF_THIS_PLAYER_ATTRIBUTE_ID (0x0019)
+#define ZCL_TIMER1_ATTRIBUTE_ID (0x001A)
+#define ZCL_TIMER2_ATTRIBUTE_ID (0x001B)
+#define ZCL_TIMER3_ATTRIBUTE_ID (0x001C)
+#define ZCL_COUNTER1_ATTRIBUTE_ID (0x001D)
+#define ZCL_COUNTER2_ATTRIBUTE_ID (0x001E)
+#define ZCL_DOWNLOADABLE_ATTRIBUTE_ID (0x001F)
+
+// Attribute ids for cluster: Data Rate Control
+
+// Client attributes
+
+// Server attributes
+#define ZCL_AVERAGE_LATENCY_REQUIREMENT_ATTRIBUTE_ID (0x0000)
+#define ZCL_MAX_LATENCY_REQUIREMENT_ATTRIBUTE_ID (0x0001)
+#define ZCL_BANDWIDTH_REQUIREMENT_ATTRIBUTE_ID (0x0002)
+
+// Attribute ids for cluster: Voice over ZigBee
+
+// Client attributes
+
+// Server attributes
+#define ZCL_CODEC_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAMPLING_FREQUENCY_ATTRIBUTE_ID (0x0001)
+#define ZCL_CODEC_RATE_ATTRIBUTE_ID (0x0002)
+#define ZCL_ESTABLISHMENT_TIMEOUT_ATTRIBUTE_ID (0x0003)
+#define ZCL_CODEC_TYPE_SUB1_ATTRIBUTE_ID (0x0004)
+#define ZCL_CODEC_TYPE_SUB2_ATTRIBUTE_ID (0x0005)
+#define ZCL_CODEC_TYPE_SUB3_ATTRIBUTE_ID (0x0006)
+#define ZCL_COMPRESSION_TYPE_ATTRIBUTE_ID (0x0007)
+#define ZCL_COMPRESSION_RATE_ATTRIBUTE_ID (0x0008)
+#define ZCL_OPTION_FLAGS_ATTRIBUTE_ID (0x0009)
+#define ZCL_THRESHOLD_ATTRIBUTE_ID (0x000A)
+
+// Attribute ids for cluster: Chatting
+
+// Client attributes
+
+// Server attributes
+#define ZCL_U_ID_ATTRIBUTE_ID (0x0000)
+#define ZCL_NICKNAME_ATTRIBUTE_ID (0x0001)
+#define ZCL_C_ID_ATTRIBUTE_ID (0x0010)
+#define ZCL_NAME_ATTRIBUTE_ID (0x0011)
+#define ZCL_ENABLE_ADD_CHAT_ATTRIBUTE_ID (0x0020)
+
+// Attribute ids for cluster: Payment
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PAYMENT_USER_ID_ATTRIBUTE_ID (0x0000)
+#define ZCL_USER_TYPE_ATTRIBUTE_ID (0x0001)
+#define ZCL_PAYMENT_SERVICE_ID_ATTRIBUTE_ID (0x0010)
+#define ZCL_PAYMENT_SERVICE_PROVIDER_ID_ATTRIBUTE_ID (0x0011)
+#define ZCL_TOTEM_ID_ATTRIBUTE_ID (0x0012)
+#define ZCL_CURRENCY_ATTRIBUTE_ID (0x0020)
+#define ZCL_PRICE_TRAILING_DIGIT_ATTRIBUTE_ID (0x0021)
+#define ZCL_PRICE_ATTRIBUTE_ID (0x0022)
+#define ZCL_GOOD_ID_ATTRIBUTE_ID (0x0030)
+#define ZCL_SERIAL_NUMBER_ATTRIBUTE_ID (0x0031)
+#define ZCL_PAYMENT_TIMESTAMP_ATTRIBUTE_ID (0x0032)
+#define ZCL_TRANS_ID_ATTRIBUTE_ID (0x0033)
+#define ZCL_TRANS_STATUS_ATTRIBUTE_ID (0x0034)
+#define ZCL_PAYMENT_STATUS_ATTRIBUTE_ID (0x0035)
+
+// Attribute ids for cluster: Billing
+
+// Client attributes
+
+// Server attributes
+#define ZCL_USER_ID_ATTRIBUTE_ID (0x0000)
+#define ZCL_SERVICE_ID_ATTRIBUTE_ID (0x0010)
+#define ZCL_SERVICE_PROVIDER_ID_ATTRIBUTE_ID (0x0011)
+#define ZCL_SESSION_INTERVAL_ATTRIBUTE_ID (0x0012)
+#define ZCL_TIMESTAMP_ATTRIBUTE_ID (0x0020)
+#define ZCL_DURATION_ATTRIBUTE_ID (0x0021)
+
+// Attribute ids for cluster: Appliance Identification
+
+// Client attributes
+
+// Server attributes
+#define ZCL_BASIC_IDENTIFICATION_ATTRIBUTE_ID (0x0000)
+#define ZCL_APPLIANCE_COMPANY_NAME_ATTRIBUTE_ID (0x0010)
+#define ZCL_COMPANY_ID_ATTRIBUTE_ID (0x0011)
+#define ZCL_BRAND_NAME_ATTRIBUTE_ID (0x0012)
+#define ZCL_BRAND_ID_ATTRIBUTE_ID (0x0013)
+#define ZCL_APPLIANCE_MODEL_ATTRIBUTE_ID (0x0014)
+#define ZCL_APPLIANCE_PART_NUMBER_ATTRIBUTE_ID (0x0015)
+#define ZCL_APPLIANCE_PRODUCT_REVISION_ATTRIBUTE_ID (0x0016)
+#define ZCL_APPLIANCE_SOFTWARE_REVISION_ATTRIBUTE_ID (0x0017)
+#define ZCL_PRODUCT_TYPE_NAME_ATTRIBUTE_ID (0x0018)
+#define ZCL_PRODUCT_TYPE_ID_ATTRIBUTE_ID (0x0019)
+#define ZCL_CECED_SPECIFICATION_VERSION_ATTRIBUTE_ID (0x001A)
+
+// Attribute ids for cluster: Meter Identification
+
+// Client attributes
+
+// Server attributes
+#define ZCL_METER_COMPANY_NAME_ATTRIBUTE_ID (0x0000)
+#define ZCL_METER_TYPE_ID_ATTRIBUTE_ID (0x0001)
+#define ZCL_DATA_QUALITY_ID_ATTRIBUTE_ID (0x0004)
+#define ZCL_CUSTOMER_NAME_ATTRIBUTE_ID (0x0005)
+#define ZCL_METER_MODEL_ATTRIBUTE_ID (0x0006)
+#define ZCL_METER_PART_NUMBER_ATTRIBUTE_ID (0x0007)
+#define ZCL_METER_PRODUCT_REVISION_ATTRIBUTE_ID (0x0008)
+#define ZCL_METER_SOFTWARE_REVISION_ATTRIBUTE_ID (0x000A)
+#define ZCL_UTILITY_NAME_ATTRIBUTE_ID (0x000B)
+#define ZCL_POD_ATTRIBUTE_ID (0x000C)
+#define ZCL_AVAILABLE_POWER_ATTRIBUTE_ID (0x000D)
+#define ZCL_POWER_THRESHOLD_ATTRIBUTE_ID (0x000E)
+
+// Attribute ids for cluster: Appliance Events and Alert
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Appliance Statistics
+
+// Client attributes
+
+// Server attributes
+#define ZCL_LOG_MAX_SIZE_ATTRIBUTE_ID (0x0000)
+#define ZCL_LOG_QUEUE_MAX_SIZE_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Electrical Measurement
+
+// Client attributes
+
+// Server attributes
+#define ZCL_MEASUREMENT_TYPE_ATTRIBUTE_ID (0x0000)
+#define ZCL_DC_VOLTAGE_ATTRIBUTE_ID (0x0100)
+#define ZCL_DC_VOLTAGE_MIN_ATTRIBUTE_ID (0x0101)
+#define ZCL_DC_VOLTAGE_MAX_ATTRIBUTE_ID (0x0102)
+#define ZCL_DC_CURRENT_ATTRIBUTE_ID (0x0103)
+#define ZCL_DC_CURRENT_MIN_ATTRIBUTE_ID (0x0104)
+#define ZCL_DC_CURRENT_MAX_ATTRIBUTE_ID (0x0105)
+#define ZCL_DC_POWER_ATTRIBUTE_ID (0x0106)
+#define ZCL_DC_POWER_MIN_ATTRIBUTE_ID (0x0107)
+#define ZCL_DC_POWER_MAX_ATTRIBUTE_ID (0x0108)
+#define ZCL_DC_VOLTAGE_MULTIPLIER_ATTRIBUTE_ID (0x0200)
+#define ZCL_DC_VOLTAGE_DIVISOR_ATTRIBUTE_ID (0x0201)
+#define ZCL_DC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x0202)
+#define ZCL_DC_CURRENT_DIVISOR_ATTRIBUTE_ID (0x0203)
+#define ZCL_DC_POWER_MULTIPLIER_ATTRIBUTE_ID (0x0204)
+#define ZCL_DC_POWER_DIVISOR_ATTRIBUTE_ID (0x0205)
+#define ZCL_AC_FREQUENCY_ATTRIBUTE_ID (0x0300)
+#define ZCL_AC_FREQUENCY_MIN_ATTRIBUTE_ID (0x0301)
+#define ZCL_AC_FREQUENCY_MAX_ATTRIBUTE_ID (0x0302)
+#define ZCL_NEUTRAL_CURRENT_ATTRIBUTE_ID (0x0303)
+#define ZCL_TOTAL_ACTIVE_POWER_ATTRIBUTE_ID (0x0304)
+#define ZCL_TOTAL_REACTIVE_POWER_ATTRIBUTE_ID (0x0305)
+#define ZCL_TOTAL_APPARENT_POWER_ATTRIBUTE_ID (0x0306)
+#define ZCL_MEASURED_1_ST_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0307)
+#define ZCL_MEASURED_3_RD_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0308)
+#define ZCL_MEASURED_5_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0309)
+#define ZCL_MEASURED_7_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030A)
+#define ZCL_MEASURED_9_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030B)
+#define ZCL_MEASURED_11_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030C)
+#define ZCL_MEASURED_PHASE_1_ST_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030D)
+#define ZCL_MEASURED_PHASE_3_RD_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030E)
+#define ZCL_MEASURED_PHASE_5_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x030F)
+#define ZCL_MEASURED_PHASE_7_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0310)
+#define ZCL_MEASURED_PHASE_9_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0311)
+#define ZCL_MEASURED_PHASE_11_TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x0312)
+#define ZCL_AC_FREQUENCY_MULTIPLIER_ATTRIBUTE_ID (0x0400)
+#define ZCL_AC_FREQUENCY_DIVISOR_ATTRIBUTE_ID (0x0401)
+#define ZCL_POWER_MULTIPLIER_ATTRIBUTE_ID (0x0402)
+#define ZCL_POWER_DIVISOR_ATTRIBUTE_ID (0x0403)
+#define ZCL_HARMONIC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x0404)
+#define ZCL_PHASE_HARMONIC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x0405)
+#define ZCL_INSTANTANEOUS_VOLTAGE_ATTRIBUTE_ID (0x0500)
+#define ZCL_INSTANTANEOUS_LINE_CURRENT_ATTRIBUTE_ID (0x0501)
+#define ZCL_INSTANTANEOUS_ACTIVE_CURRENT_ATTRIBUTE_ID (0x0502)
+#define ZCL_INSTANTANEOUS_REACTIVE_CURRENT_ATTRIBUTE_ID (0x0503)
+#define ZCL_INSTANTANEOUS_POWER_ATTRIBUTE_ID (0x0504)
+#define ZCL_RMS_VOLTAGE_ATTRIBUTE_ID (0x0505)
+#define ZCL_RMS_VOLTAGE_MIN_ATTRIBUTE_ID (0x0506)
+#define ZCL_RMS_VOLTAGE_MAX_ATTRIBUTE_ID (0x0507)
+#define ZCL_RMS_CURRENT_ATTRIBUTE_ID (0x0508)
+#define ZCL_RMS_CURRENT_MIN_ATTRIBUTE_ID (0x0509)
+#define ZCL_RMS_CURRENT_MAX_ATTRIBUTE_ID (0x050A)
+#define ZCL_ACTIVE_POWER_ATTRIBUTE_ID (0x050B)
+#define ZCL_ACTIVE_POWER_MIN_ATTRIBUTE_ID (0x050C)
+#define ZCL_ACTIVE_POWER_MAX_ATTRIBUTE_ID (0x050D)
+#define ZCL_REACTIVE_POWER_ATTRIBUTE_ID (0x050E)
+#define ZCL_APPARENT_POWER_ATTRIBUTE_ID (0x050F)
+#define ZCL_AC_POWER_FACTOR_ATTRIBUTE_ID (0x0510)
+#define ZCL_AVERAGE_RMS_VOLTAGE_MEASUREMENT_PERIOD_ATTRIBUTE_ID (0x0511)
+#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_COUNTER_ATTRIBUTE_ID (0x0513)
+#define ZCL_RMS_EXTREME_OVER_VOLTAGE_PERIOD_ATTRIBUTE_ID (0x0514)
+#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_PERIOD_ATTRIBUTE_ID (0x0515)
+#define ZCL_RMS_VOLTAGE_SAG_PERIOD_ATTRIBUTE_ID (0x0516)
+#define ZCL_RMS_VOLTAGE_SWELL_PERIOD_ATTRIBUTE_ID (0x0517)
+#define ZCL_AC_VOLTAGE_MULTIPLIER_ATTRIBUTE_ID (0x0600)
+#define ZCL_AC_VOLTAGE_DIVISOR_ATTRIBUTE_ID (0x0601)
+#define ZCL_AC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x0602)
+#define ZCL_AC_CURRENT_DIVISOR_ATTRIBUTE_ID (0x0603)
+#define ZCL_AC_POWER_MULTIPLIER_ATTRIBUTE_ID (0x0604)
+#define ZCL_AC_POWER_DIVISOR_ATTRIBUTE_ID (0x0605)
+#define ZCL_DC_OVERLOAD_ALARMS_MASK_ATTRIBUTE_ID (0x0700)
+#define ZCL_DC_VOLTAGE_OVERLOAD_ATTRIBUTE_ID (0x0701)
+#define ZCL_DC_CURRENT_OVERLOAD_ATTRIBUTE_ID (0x0702)
+#define ZCL_AC_OVERLOAD_ALARMS_MASK_ATTRIBUTE_ID (0x0800)
+#define ZCL_AC_VOLTAGE_OVERLOAD_ATTRIBUTE_ID (0x0801)
+#define ZCL_AC_CURRENT_OVERLOAD_ATTRIBUTE_ID (0x0802)
+#define ZCL_AC_POWER_OVERLOAD_ATTRIBUTE_ID (0x0803)
+#define ZCL_AC_REACTIVE_POWER_OVERLOAD_ATTRIBUTE_ID (0x0804)
+#define ZCL_AVERAGE_RMS_OVER_VOLTAGE_ATTRIBUTE_ID (0x0805)
+#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_ATTRIBUTE_ID (0x0806)
+#define ZCL_RMS_EXTREME_OVER_VOLTAGE_ATTRIBUTE_ID (0x0807)
+#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_ATTRIBUTE_ID (0x0808)
+#define ZCL_RMS_VOLTAGE_SAG_ATTRIBUTE_ID (0x0809)
+#define ZCL_RMS_VOLTAGE_SWELL_ATTRIBUTE_ID (0x080A)
+#define ZCL_LINE_CURRENT_PHASE_B_ATTRIBUTE_ID (0x0901)
+#define ZCL_ACTIVE_CURRENT_PHASE_B_ATTRIBUTE_ID (0x0902)
+#define ZCL_REACTIVE_CURRENT_PHASE_B_ATTRIBUTE_ID (0x0903)
+#define ZCL_RMS_VOLTAGE_PHASE_B_ATTRIBUTE_ID (0x0905)
+#define ZCL_RMS_VOLTAGE_MIN_PHASE_B_ATTRIBUTE_ID (0x0906)
+#define ZCL_RMS_VOLTAGE_MAX_PHASE_B_ATTRIBUTE_ID (0x0907)
+#define ZCL_RMS_CURRENT_PHASE_B_ATTRIBUTE_ID (0x0908)
+#define ZCL_RMS_CURRENT_MIN_PHASE_B_ATTRIBUTE_ID (0x0909)
+#define ZCL_RMS_CURRENT_MAX_PHASE_B_ATTRIBUTE_ID (0x090A)
+#define ZCL_ACTIVE_POWER_PHASE_B_ATTRIBUTE_ID (0x090B)
+#define ZCL_ACTIVE_POWER_MIN_PHASE_B_ATTRIBUTE_ID (0x090C)
+#define ZCL_ACTIVE_POWER_MAX_PHASE_B_ATTRIBUTE_ID (0x090D)
+#define ZCL_REACTIVE_POWER_PHASE_B_ATTRIBUTE_ID (0x090E)
+#define ZCL_APPARENT_POWER_PHASE_B_ATTRIBUTE_ID (0x090F)
+#define ZCL_POWER_FACTOR_PHASE_B_ATTRIBUTE_ID (0x0910)
+#define ZCL_AVERAGE_RMS_VOLTAGE_MEASUREMENT_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0911)
+#define ZCL_AVERAGE_RMS_OVER_VOLTAGE_COUNTER_PHASE_B_ATTRIBUTE_ID (0x0912)
+#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_COUNTER_PHASE_B_ATTRIBUTE_ID (0x0913)
+#define ZCL_RMS_EXTREME_OVER_VOLTAGE_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0914)
+#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0915)
+#define ZCL_RMS_VOLTAGE_SAG_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0916)
+#define ZCL_RMS_VOLTAGE_SWELL_PERIOD_PHASE_B_ATTRIBUTE_ID (0x0917)
+#define ZCL_LINE_CURRENT_PHASE_C_ATTRIBUTE_ID (0x0A01)
+#define ZCL_ACTIVE_CURRENT_PHASE_C_ATTRIBUTE_ID (0x0A02)
+#define ZCL_REACTIVE_CURRENT_PHASE_C_ATTRIBUTE_ID (0x0A03)
+#define ZCL_RMS_VOLTAGE_PHASE_C_ATTRIBUTE_ID (0x0A05)
+#define ZCL_RMS_VOLTAGE_MIN_PHASE_C_ATTRIBUTE_ID (0x0A06)
+#define ZCL_RMS_VOLTAGE_MAX_PHASE_C_ATTRIBUTE_ID (0x0A07)
+#define ZCL_RMS_CURRENT_PHASE_C_ATTRIBUTE_ID (0x0A08)
+#define ZCL_RMS_CURRENT_MIN_PHASE_C_ATTRIBUTE_ID (0x0A09)
+#define ZCL_RMS_CURRENT_MAX_PHASE_C_ATTRIBUTE_ID (0x0A0A)
+#define ZCL_ACTIVE_POWER_PHASE_C_ATTRIBUTE_ID (0x0A0B)
+#define ZCL_ACTIVE_POWER_MIN_PHASE_C_ATTRIBUTE_ID (0x0A0C)
+#define ZCL_ACTIVE_POWER_MAX_PHASE_C_ATTRIBUTE_ID (0x0A0D)
+#define ZCL_REACTIVE_POWER_PHASE_C_ATTRIBUTE_ID (0x0A0E)
+#define ZCL_APPARENT_POWER_PHASE_C_ATTRIBUTE_ID (0x0A0F)
+#define ZCL_POWER_FACTOR_PHASE_C_ATTRIBUTE_ID (0x0A10)
+#define ZCL_AVERAGE_RMS_VOLTAGE_MEASUREMENT_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A11)
+#define ZCL_AVERAGE_RMS_OVER_VOLTAGE_COUNTER_PHASE_C_ATTRIBUTE_ID (0x0A12)
+#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_COUNTER_PHASE_C_ATTRIBUTE_ID (0x0A13)
+#define ZCL_RMS_EXTREME_OVER_VOLTAGE_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A14)
+#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A15)
+#define ZCL_RMS_VOLTAGE_SAG_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A16)
+#define ZCL_RMS_VOLTAGE_SWELL_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A17)
+
+// Attribute ids for cluster: Diagnostics
+
+// Client attributes
+
+// Server attributes
+#define ZCL_NUMBER_OF_RESETS_ATTRIBUTE_ID (0x0000)
+#define ZCL_PERSISTENT_MEMORY_WRITES_ATTRIBUTE_ID (0x0001)
+#define ZCL_MAC_RX_BCAST_ATTRIBUTE_ID (0x0100)
+#define ZCL_MAC_TX_BCAST_ATTRIBUTE_ID (0x0101)
+#define ZCL_MAC_RX_UCAST_ATTRIBUTE_ID (0x0102)
+#define ZCL_MAC_TX_UCAST_ATTRIBUTE_ID (0x0103)
+#define ZCL_MAC_TX_UCAST_RETRY_ATTRIBUTE_ID (0x0104)
+#define ZCL_MAC_TX_UCAST_FAIL_ATTRIBUTE_ID (0x0105)
+#define ZCL_APS_RX_BCAST_ATTRIBUTE_ID (0x0106)
+#define ZCL_APS_TX_BCAST_ATTRIBUTE_ID (0x0107)
+#define ZCL_APS_RX_UCAST_ATTRIBUTE_ID (0x0108)
+#define ZCL_APS_UCAST_SUCCESS_ATTRIBUTE_ID (0x0109)
+#define ZCL_APS_TX_UCAST_RETRY_ATTRIBUTE_ID (0x010A)
+#define ZCL_APS_TX_UCAST_FAIL_ATTRIBUTE_ID (0x010B)
+#define ZCL_ROUTE_DISC_INITIATED_ATTRIBUTE_ID (0x010C)
+#define ZCL_NEIGHBOR_ADDED_ATTRIBUTE_ID (0x010D)
+#define ZCL_NEIGHBOR_REMOVED_ATTRIBUTE_ID (0x010E)
+#define ZCL_NEIGHBOR_STALE_ATTRIBUTE_ID (0x010F)
+#define ZCL_JOIN_INDICATION_ATTRIBUTE_ID (0x0110)
+#define ZCL_CHILD_MOVED_ATTRIBUTE_ID (0x0111)
+#define ZCL_NWK_FC_FAILURE_ATTRIBUTE_ID (0x0112)
+#define ZCL_APS_FC_FAILURE_ATTRIBUTE_ID (0x0113)
+#define ZCL_APS_UNAUTHORIZED_KEY_ATTRIBUTE_ID (0x0114)
+#define ZCL_NWK_DECRYPT_FAILURE_ATTRIBUTE_ID (0x0115)
+#define ZCL_APS_DECRYPT_FAILURE_ATTRIBUTE_ID (0x0116)
+#define ZCL_PACKET_BUFFER_ALLOC_FAILURES_ATTRIBUTE_ID (0x0117)
+#define ZCL_RELAYED_UNICAST_ATTRIBUTE_ID (0x0118)
+#define ZCL_PHY_TO_MAC_QUEUE_LIMIT_REACHED_ATTRIBUTE_ID (0x0119)
+#define ZCL_PACKET_VALIDATE_DROP_COUNT_ATTRIBUTE_ID (0x011A)
+#define ZCL_AVERAGE_MAC_RETRY_PER_APS_MSG_SENT_ATTRIBUTE_ID (0x011B)
+#define ZCL_LAST_MESSAGE_LQI_ATTRIBUTE_ID (0x011C)
+#define ZCL_LAST_MESSAGE_RSSI_ATTRIBUTE_ID (0x011D)
+
+// Attribute ids for cluster: ZLL Commissioning
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Binding
+
+// Client attributes
+
+// Server attributes
+
+// Attribute ids for cluster: Sample Mfg Specific Cluster
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ATTRIBUTE_ONE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ATTRIBUTE_TWO_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Sample Mfg Specific Cluster 2
+
+// Client attributes
+
+// Server attributes
+#define ZCL_ATTRIBUTE_THREE_ATTRIBUTE_ID (0x0000)
+#define ZCL_ATTRIBUTE_FOUR_ATTRIBUTE_ID (0x0001)
+
+// Attribute ids for cluster: Configuration Cluster
+
+// Client attributes
+
+// Server attributes
+#define ZCL_TOKENS_LOCKED_ATTRIBUTE_ID (0x0000)
+
+// Attribute ids for cluster: MFGLIB Cluster
+
+// Client attributes
+
+// Server attributes
+#define ZCL_PACKETS_RECEIVED_ATTRIBUTE_ID (0x0000)
+#define ZCL_SAVED_RSSI_ATTRIBUTE_ID (0x0001)
+#define ZCL_SAVED_LQI_ATTRIBUTE_ID (0x0002)
+
+// Attribute ids for cluster: SL Works With All Hubs
+
+// Client attributes
+
+// Server attributes
+#define ZCL_SL_DISABLE_OTA_DOWNGRADES_ATTRIBUTE_ID (0x0002)
+#define ZCL_SL_MGMT_LEAVE_WITHOUT_REJOIN_ENABLED_ATTRIBUTE_ID (0x0003)
+#define ZCL_SL_NWK_RETRY_COUNT_ATTRIBUTE_ID (0x0004)
+#define ZCL_SL_MAC_RETRY_COUNT_ATTRIBUTE_ID (0x0005)
+#define ZCL_SL_ROUTER_CHECKIN_ENABLED_ATTRIBUTE_ID (0x0006)
+#define ZCL_SL_TOUCHLINK_INTERPAN_ENABLED_ATTRIBUTE_ID (0x0007)
+#define ZCL_SL_WWAH_PARENT_CLASSIFICATION_ENABLED_ATTRIBUTE_ID (0x0008)
+#define ZCL_SL_WWAH_APP_EVENT_RETRY_ENABLED_ATTRIBUTE_ID (0x0009)
+#define ZCL_SL_WWAH_APP_EVENT_RETRY_QUEUE_SIZE_ATTRIBUTE_ID (0x000A)
+#define ZCL_SL_WWAH_REJOIN_ENABLED_ATTRIBUTE_ID (0x000B)
+#define ZCL_SL_MAC_POLL_FAILURE_WAIT_TIME_ATTRIBUTE_ID (0x000C)
+#define ZCL_SL_CONFIGURATION_MODE_ENABLED_ATTRIBUTE_ID (0x000D)
+#define ZCL_SL_CURRENT_DEBUG_REPORT_ID_ATTRIBUTE_ID (0x000E)
+#define ZCL_SL_TC_SECURITY_ON_NTWK_KEY_ROTATION_ENABLED_ATTRIBUTE_ID (0x000F)
+#define ZCL_SL_WWAH_BAD_PARENT_RECOVERY_ENABLED_ATTRIBUTE_ID (0x0010)
+#define ZCL_SL_PENDING_NETWORK_UPDATE_CHANNEL_ATTRIBUTE_ID (0x0011)
+#define ZCL_SL_PENDING_NETWORK_UPDATE_PANID_ATTRIBUTE_ID (0x0012)
+#define ZCL_SL_OTA_MAX_OFFLINE_DURATION_ATTRIBUTE_ID (0x0013)
diff --git a/src/darwin/Framework/CHIP/gen/attribute-size.h b/src/darwin/Framework/CHIP/gen/attribute-size.h
new file mode 100644
index 0000000..a6caf3a
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/attribute-size.h
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// ZCL attribute sizes
+ZCL_DATA8_ATTRIBUTE_TYPE, 1, ZCL_DATA16_ATTRIBUTE_TYPE, 2, ZCL_DATA24_ATTRIBUTE_TYPE, 3, ZCL_DATA32_ATTRIBUTE_TYPE, 4,
+ ZCL_DATA40_ATTRIBUTE_TYPE, 5, ZCL_DATA48_ATTRIBUTE_TYPE, 6, ZCL_DATA56_ATTRIBUTE_TYPE, 7, ZCL_DATA64_ATTRIBUTE_TYPE, 8,
+ ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, ZCL_BITMAP8_ATTRIBUTE_TYPE, 1, ZCL_BITMAP16_ATTRIBUTE_TYPE, 2, ZCL_BITMAP24_ATTRIBUTE_TYPE, 3,
+ ZCL_BITMAP32_ATTRIBUTE_TYPE, 4, ZCL_BITMAP40_ATTRIBUTE_TYPE, 5, ZCL_BITMAP48_ATTRIBUTE_TYPE, 6, ZCL_BITMAP56_ATTRIBUTE_TYPE, 7,
+ ZCL_BITMAP64_ATTRIBUTE_TYPE, 8, ZCL_INT8U_ATTRIBUTE_TYPE, 1, ZCL_INT16U_ATTRIBUTE_TYPE, 2, ZCL_INT24U_ATTRIBUTE_TYPE, 3,
+ ZCL_INT32U_ATTRIBUTE_TYPE, 4, ZCL_INT40U_ATTRIBUTE_TYPE, 5, ZCL_INT48U_ATTRIBUTE_TYPE, 6, ZCL_INT56U_ATTRIBUTE_TYPE, 7,
+ ZCL_INT64U_ATTRIBUTE_TYPE, 8, ZCL_INT8S_ATTRIBUTE_TYPE, 1, ZCL_INT16S_ATTRIBUTE_TYPE, 2, ZCL_INT24S_ATTRIBUTE_TYPE, 3,
+ ZCL_INT32S_ATTRIBUTE_TYPE, 4, ZCL_INT40S_ATTRIBUTE_TYPE, 5, ZCL_INT48S_ATTRIBUTE_TYPE, 6, ZCL_INT56S_ATTRIBUTE_TYPE, 7,
+ ZCL_INT64S_ATTRIBUTE_TYPE, 8, ZCL_ENUM8_ATTRIBUTE_TYPE, 1, ZCL_ENUM16_ATTRIBUTE_TYPE, 2, ZCL_FLOAT_SEMI_ATTRIBUTE_TYPE, 2,
+ ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE, 4, ZCL_FLOAT_DOUBLE_ATTRIBUTE_TYPE, 8, ZCL_TIME_OF_DAY_ATTRIBUTE_TYPE, 4,
+ ZCL_DATE_ATTRIBUTE_TYPE, 4, ZCL_UTC_TIME_ATTRIBUTE_TYPE, 4, ZCL_CLUSTER_ID_ATTRIBUTE_TYPE, 2, ZCL_ATTRIBUTE_ID_ATTRIBUTE_TYPE,
+ 2, ZCL_BACNET_OID_ATTRIBUTE_TYPE, 4, ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE, 8, ZCL_SECURITY_KEY_ATTRIBUTE_TYPE, 16,
+ ZCL_ENDPOINT_ID_ATTRIBUTE_TYPE, 1, ZCL_GROUP_ID_ATTRIBUTE_TYPE, 2, ZCL_COMMAND_ID_ATTRIBUTE_TYPE, 1, ZCL_NODE_ID_ATTRIBUTE_TYPE,
+ 8,
diff --git a/src/darwin/Framework/CHIP/gen/attribute-type.h b/src/darwin/Framework/CHIP/gen/attribute-type.h
new file mode 100644
index 0000000..56900dc
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/attribute-type.h
@@ -0,0 +1,86 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// ZCL attribute types
+enum
+{
+ ZCL_NO_DATA_ATTRIBUTE_TYPE = 0x00, // No data
+ ZCL_DATA8_ATTRIBUTE_TYPE = 0x08, // 8-bit data
+ ZCL_DATA16_ATTRIBUTE_TYPE = 0x09, // 16-bit data
+ ZCL_DATA24_ATTRIBUTE_TYPE = 0x0A, // 24-bit data
+ ZCL_DATA32_ATTRIBUTE_TYPE = 0x0B, // 32-bit data
+ ZCL_DATA40_ATTRIBUTE_TYPE = 0x0C, // 40-bit data
+ ZCL_DATA48_ATTRIBUTE_TYPE = 0x0D, // 48-bit data
+ ZCL_DATA56_ATTRIBUTE_TYPE = 0x0E, // 56-bit data
+ ZCL_DATA64_ATTRIBUTE_TYPE = 0x0F, // 64-bit data
+ ZCL_BOOLEAN_ATTRIBUTE_TYPE = 0x10, // Boolean
+ ZCL_BITMAP8_ATTRIBUTE_TYPE = 0x18, // 8-bit bitmap
+ ZCL_BITMAP16_ATTRIBUTE_TYPE = 0x19, // 16-bit bitmap
+ ZCL_BITMAP24_ATTRIBUTE_TYPE = 0x1A, // 24-bit bitmap
+ ZCL_BITMAP32_ATTRIBUTE_TYPE = 0x1B, // 32-bit bitmap
+ ZCL_BITMAP40_ATTRIBUTE_TYPE = 0x1C, // 40-bit bitmap
+ ZCL_BITMAP48_ATTRIBUTE_TYPE = 0x1D, // 48-bit bitmap
+ ZCL_BITMAP56_ATTRIBUTE_TYPE = 0x1E, // 56-bit bitmap
+ ZCL_BITMAP64_ATTRIBUTE_TYPE = 0x1F, // 64-bit bitmap
+ ZCL_INT8U_ATTRIBUTE_TYPE = 0x20, // Unsigned 8-bit integer
+ ZCL_INT16U_ATTRIBUTE_TYPE = 0x21, // Unsigned 16-bit integer
+ ZCL_INT24U_ATTRIBUTE_TYPE = 0x22, // Unsigned 24-bit integer
+ ZCL_INT32U_ATTRIBUTE_TYPE = 0x23, // Unsigned 32-bit integer
+ ZCL_INT40U_ATTRIBUTE_TYPE = 0x24, // Unsigned 40-bit integer
+ ZCL_INT48U_ATTRIBUTE_TYPE = 0x25, // Unsigned 48-bit integer
+ ZCL_INT56U_ATTRIBUTE_TYPE = 0x26, // Unsigned 56-bit integer
+ ZCL_INT64U_ATTRIBUTE_TYPE = 0x27, // Unsigned 64-bit integer
+ ZCL_INT8S_ATTRIBUTE_TYPE = 0x28, // Signed 8-bit integer
+ ZCL_INT16S_ATTRIBUTE_TYPE = 0x29, // Signed 16-bit integer
+ ZCL_INT24S_ATTRIBUTE_TYPE = 0x2A, // Signed 24-bit integer
+ ZCL_INT32S_ATTRIBUTE_TYPE = 0x2B, // Signed 32-bit integer
+ ZCL_INT40S_ATTRIBUTE_TYPE = 0x2C, // Signed 40-bit integer
+ ZCL_INT48S_ATTRIBUTE_TYPE = 0x2D, // Signed 48-bit integer
+ ZCL_INT56S_ATTRIBUTE_TYPE = 0x2E, // Signed 56-bit integer
+ ZCL_INT64S_ATTRIBUTE_TYPE = 0x2F, // Signed 64-bit integer
+ ZCL_ENUM8_ATTRIBUTE_TYPE = 0x30, // 8-bit enumeration
+ ZCL_ENUM16_ATTRIBUTE_TYPE = 0x31, // 16-bit enumeration
+ ZCL_FLOAT_SEMI_ATTRIBUTE_TYPE = 0x38, // Semi-precision
+ ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE = 0x39, // Single precision
+ ZCL_FLOAT_DOUBLE_ATTRIBUTE_TYPE = 0x3A, // Double precision
+ ZCL_OCTET_STRING_ATTRIBUTE_TYPE = 0x41, // Octet string
+ ZCL_CHAR_STRING_ATTRIBUTE_TYPE = 0x42, // Character string
+ ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE = 0x43, // Long octet string
+ ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE = 0x44, // Long character string
+ ZCL_ARRAY_ATTRIBUTE_TYPE = 0x48, // Array
+ ZCL_STRUCT_ATTRIBUTE_TYPE = 0x4C, // Structure
+ ZCL_SET_ATTRIBUTE_TYPE = 0x50, // Set
+ ZCL_BAG_ATTRIBUTE_TYPE = 0x51, // Bag
+ ZCL_TIME_OF_DAY_ATTRIBUTE_TYPE = 0xE0, // Time of day
+ ZCL_DATE_ATTRIBUTE_TYPE = 0xE1, // Date
+ ZCL_UTC_TIME_ATTRIBUTE_TYPE = 0xE2, // UTC Time
+ ZCL_CLUSTER_ID_ATTRIBUTE_TYPE = 0xE8, // Cluster ID
+ ZCL_ATTRIBUTE_ID_ATTRIBUTE_TYPE = 0xE9, // Attribute ID
+ ZCL_BACNET_OID_ATTRIBUTE_TYPE = 0xEA, // BACnet OID
+ ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE = 0xF0, // IEEE address
+ ZCL_SECURITY_KEY_ATTRIBUTE_TYPE = 0xF1, // 128-bit security key
+ ZCL_ENDPOINT_ID_ATTRIBUTE_TYPE = 0xF2, // Endpoint Id
+ ZCL_GROUP_ID_ATTRIBUTE_TYPE = 0xF3, // Group Id
+ ZCL_COMMAND_ID_ATTRIBUTE_TYPE = 0xF4, // Command Id
+ ZCL_NODE_ID_ATTRIBUTE_TYPE = 0xF5, // Node Id
+ ZCL_UNKNOWN_ATTRIBUTE_TYPE = 0xFF, // Unknown
+};
diff --git a/src/darwin/Framework/CHIP/gen/call-command-handler.cpp b/src/darwin/Framework/CHIP/gen/call-command-handler.cpp
new file mode 100644
index 0000000..ed3fae9
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/call-command-handler.cpp
@@ -0,0 +1,1015 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include <stdint.h>
+
+#include "af-structs.h"
+#include "call-command-handler.h"
+#include "callback.h"
+#include "cluster-id.h"
+#include "command-id.h"
+#include "util.h"
+
+using namespace chip;
+
+EmberAfStatus emberAfBarrierControlClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfBasicClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfBindingClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfColorControlClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfGroupsClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfLevelControlClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfOnOffClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd);
+EmberAfStatus emberAfTemperatureMeasurementClusterClientCommandParse(EmberAfClusterCommand * cmd);
+
+static EmberAfStatus status(bool wasHandled, bool clusterExists, bool mfgSpecific)
+{
+ if (wasHandled)
+ {
+ return EMBER_ZCL_STATUS_SUCCESS;
+ }
+ else if (mfgSpecific)
+ {
+ return EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND;
+ }
+ else if (clusterExists)
+ {
+ return EMBER_ZCL_STATUS_UNSUP_COMMAND;
+ }
+ else
+ {
+ return EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER;
+ }
+}
+
+// Main command parsing controller.
+EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd)
+{
+ EmberAfStatus result = status(false, false, cmd->mfgSpecific);
+ if (cmd->direction == (uint8_t) ZCL_DIRECTION_SERVER_TO_CLIENT &&
+ emberAfContainsClientWithMfgCode(cmd->apsFrame->destinationEndpoint, cmd->apsFrame->clusterId, cmd->mfgCode))
+ {
+ switch (cmd->apsFrame->clusterId)
+ {
+ case ZCL_BARRIER_CONTROL_CLUSTER_ID:
+ // No commands are enabled for cluster Barrier Control
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_BASIC_CLUSTER_ID:
+ // No commands are enabled for cluster Basic
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_BINDING_CLUSTER_ID:
+ // No commands are enabled for cluster Binding
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_COLOR_CONTROL_CLUSTER_ID:
+ // No commands are enabled for cluster Color Control
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_DOOR_LOCK_CLUSTER_ID:
+ result = emberAfDoorLockClusterClientCommandParse(cmd);
+ break;
+ case ZCL_GROUPS_CLUSTER_ID:
+ result = emberAfGroupsClusterClientCommandParse(cmd);
+ break;
+ case ZCL_IDENTIFY_CLUSTER_ID:
+ result = emberAfIdentifyClusterClientCommandParse(cmd);
+ break;
+ case ZCL_LEVEL_CONTROL_CLUSTER_ID:
+ // No commands are enabled for cluster Level Control
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_ON_OFF_CLUSTER_ID:
+ // No commands are enabled for cluster On/off
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ case ZCL_SCENES_CLUSTER_ID:
+ result = emberAfScenesClusterClientCommandParse(cmd);
+ break;
+ case ZCL_TEMP_MEASUREMENT_CLUSTER_ID:
+ // No commands are enabled for cluster Temperature Measurement
+ result = status(false, true, cmd->mfgSpecific);
+ break;
+ default:
+ // Unrecognized cluster ID, error status will apply.
+ break;
+ }
+ }
+ else if (cmd->direction == (uint8_t) ZCL_DIRECTION_CLIENT_TO_SERVER &&
+ emberAfContainsServerWithMfgCode(cmd->apsFrame->destinationEndpoint, cmd->apsFrame->clusterId, cmd->mfgCode))
+ {
+ switch (cmd->apsFrame->clusterId)
+ {
+ default:
+ // Unrecognized cluster ID, error status will apply.
+ break;
+ }
+ }
+ return result;
+}
+
+// Cluster specific command parsing
+
+EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd)
+{
+ bool wasHandled = false;
+
+ if (!cmd->mfgSpecific)
+ {
+ switch (cmd->commandId)
+ {
+ case ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearAllPinsResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearAllRfidsResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearHolidayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearPinResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearRfidResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterClearYeardayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t scheduleId;
+ uint8_t status;
+ uint32_t localStartTime;
+ uint32_t localEndTime;
+ uint8_t operatingModeDuringHoliday;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ scheduleId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ localStartTime = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 4);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ localEndTime = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 4);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ operatingModeDuringHoliday = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetHolidayScheduleResponseCallback(scheduleId, status, localStartTime, localEndTime,
+ operatingModeDuringHoliday);
+ break;
+ }
+ case ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t logEntryId;
+ uint32_t timestamp;
+ uint8_t eventType;
+ uint8_t source;
+ uint8_t eventIdOrAlarmCode;
+ uint16_t userId;
+ uint8_t * pin;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ logEntryId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ timestamp = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 4);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ eventType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ source = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ eventIdOrAlarmCode = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ pin = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetLogRecordResponseCallback(logEntryId, timestamp, eventType, source,
+ eventIdOrAlarmCode, userId, pin);
+ break;
+ }
+ case ZCL_GET_PIN_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t userId;
+ uint8_t userStatus;
+ uint8_t userType;
+ uint8_t * pin;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ pin = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetPinResponseCallback(userId, userStatus, userType, pin);
+ break;
+ }
+ case ZCL_GET_RFID_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t userId;
+ uint8_t userStatus;
+ uint8_t userType;
+ uint8_t * rfid;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ rfid = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetRfidResponseCallback(userId, userStatus, userType, rfid);
+ break;
+ }
+ case ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t userId;
+ uint8_t userType;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetUserTypeResponseCallback(userId, userType);
+ break;
+ }
+ case ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t scheduleId;
+ uint16_t userId;
+ uint8_t status;
+ uint8_t daysMask;
+ uint8_t startHour;
+ uint8_t startMinute;
+ uint8_t endHour;
+ uint8_t endMinute;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ scheduleId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ daysMask = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ startHour = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ startMinute = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ endHour = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ endMinute = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(scheduleId, userId, status, daysMask, startHour,
+ startMinute, endHour, endMinute);
+ break;
+ }
+ case ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t scheduleId;
+ uint16_t userId;
+ uint8_t status;
+ uint32_t localStartTime;
+ uint32_t localEndTime;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ scheduleId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ userId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ localStartTime = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 4);
+ if (cmd->bufLen < payloadOffset + 4)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ localEndTime = emberAfGetInt32u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled =
+ emberAfDoorLockClusterGetYeardayScheduleResponseCallback(scheduleId, userId, status, localStartTime, localEndTime);
+ break;
+ }
+ case ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterLockDoorResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetHolidayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_PIN_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetPinResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_RFID_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetRfidResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetUserTypeResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterSetYeardayScheduleResponseCallback(status);
+ break;
+ }
+ case ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterUnlockDoorResponseCallback(status);
+ break;
+ }
+ case ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(status);
+ break;
+ }
+ default: {
+ // Unrecognized command ID, error status will apply.
+ break;
+ }
+ }
+ }
+ return status(wasHandled, true, cmd->mfgSpecific);
+}
+EmberAfStatus emberAfGroupsClusterClientCommandParse(EmberAfClusterCommand * cmd)
+{
+ bool wasHandled = false;
+
+ if (!cmd->mfgSpecific)
+ {
+ switch (cmd->commandId)
+ {
+ case ZCL_ADD_GROUP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfGroupsClusterAddGroupResponseCallback(status, groupId);
+ break;
+ }
+ case ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t capacity;
+ uint8_t groupCount;
+ /* TYPE WARNING: array array defaults to */ uint8_t * groupList;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ capacity = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupCount = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ groupList = cmd->buffer + payloadOffset;
+
+ wasHandled = emberAfGroupsClusterGetGroupMembershipResponseCallback(capacity, groupCount, groupList);
+ break;
+ }
+ case ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfGroupsClusterRemoveGroupResponseCallback(status, groupId);
+ break;
+ }
+ case ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t * groupName;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupName = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfGroupsClusterViewGroupResponseCallback(status, groupId, groupName);
+ break;
+ }
+ default: {
+ // Unrecognized command ID, error status will apply.
+ break;
+ }
+ }
+ }
+ return status(wasHandled, true, cmd->mfgSpecific);
+}
+EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * cmd)
+{
+ bool wasHandled = false;
+
+ if (!cmd->mfgSpecific)
+ {
+ switch (cmd->commandId)
+ {
+ case ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint16_t timeout;
+
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ timeout = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfIdentifyClusterIdentifyQueryResponseCallback(timeout);
+ break;
+ }
+ default: {
+ // Unrecognized command ID, error status will apply.
+ break;
+ }
+ }
+ }
+ return status(wasHandled, true, cmd->mfgSpecific);
+}
+EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd)
+{
+ bool wasHandled = false;
+
+ if (!cmd->mfgSpecific)
+ {
+ switch (cmd->commandId)
+ {
+ case ZCL_ADD_SCENE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t sceneId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfScenesClusterAddSceneResponseCallback(status, groupId, sceneId);
+ break;
+ }
+ case ZCL_GET_SCENE_MEMBERSHIP_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint8_t capacity;
+ uint16_t groupId;
+ uint8_t sceneCount;
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ capacity = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (status == 0)
+ {
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneCount = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ }
+ else
+ {
+ sceneCount = UINT8_MAX;
+ }
+ if (status == 0)
+ {
+ sceneList = cmd->buffer + payloadOffset;
+ }
+ else
+ {
+ sceneList = NULL;
+ }
+
+ wasHandled = emberAfScenesClusterGetSceneMembershipResponseCallback(status, capacity, groupId, sceneCount, sceneList);
+ break;
+ }
+ case ZCL_REMOVE_ALL_SCENES_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfScenesClusterRemoveAllScenesResponseCallback(status, groupId);
+ break;
+ }
+ case ZCL_REMOVE_SCENE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t sceneId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfScenesClusterRemoveSceneResponseCallback(status, groupId, sceneId);
+ break;
+ }
+ case ZCL_STORE_SCENE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t sceneId;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+
+ wasHandled = emberAfScenesClusterStoreSceneResponseCallback(status, groupId, sceneId);
+ break;
+ }
+ case ZCL_VIEW_SCENE_RESPONSE_COMMAND_ID: {
+ uint16_t payloadOffset = cmd->payloadStartIndex;
+ uint8_t status;
+ uint16_t groupId;
+ uint8_t sceneId;
+ uint16_t transitionTime;
+ uint8_t * sceneName;
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets;
+
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ if (cmd->bufLen < payloadOffset + 1)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 1);
+ if (status == 0)
+ {
+ if (cmd->bufLen < payloadOffset + 2)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + 2);
+ }
+ else
+ {
+ transitionTime = UINT16_MAX;
+ }
+ if (status == 0)
+ {
+ if (cmd->bufLen < payloadOffset + 1u)
+ {
+ return EMBER_ZCL_STATUS_MALFORMED_COMMAND;
+ }
+ sceneName = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen);
+ payloadOffset = static_cast<uint16_t>(payloadOffset + emberAfStringLength(sceneName) + 1u);
+ }
+ else
+ {
+ sceneName = NULL;
+ }
+ if (status == 0)
+ {
+ extensionFieldSets = cmd->buffer + payloadOffset;
+ }
+ else
+ {
+ extensionFieldSets = NULL;
+ }
+
+ wasHandled = emberAfScenesClusterViewSceneResponseCallback(status, groupId, sceneId, transitionTime, sceneName,
+ extensionFieldSets);
+ break;
+ }
+ default: {
+ // Unrecognized command ID, error status will apply.
+ break;
+ }
+ }
+ }
+ return status(wasHandled, true, cmd->mfgSpecific);
+}
diff --git a/src/darwin/Framework/CHIP/CHIPDeviceCallback.h b/src/darwin/Framework/CHIP/gen/call-command-handler.h
similarity index 73%
copy from src/darwin/Framework/CHIP/CHIPDeviceCallback.h
copy to src/darwin/Framework/CHIP/gen/call-command-handler.h
index 6406069..16314d8 100644
--- a/src/darwin/Framework/CHIP/CHIPDeviceCallback.h
+++ b/src/darwin/Framework/CHIP/gen/call-command-handler.h
@@ -1,6 +1,6 @@
-/**
+/*
*
- * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2021 Project CHIP Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,12 +15,9 @@
* limitations under the License.
*/
-#import <Foundation/Foundation.h>
+// THIS FILE IS GENERATED BY ZAP
-#import <CHIP/CHIPError.h>
+// Prevent multiple inclusion
+#pragma once
-NS_ASSUME_NONNULL_BEGIN
-
-typedef void (^CHIPDeviceCallback)(NSError * error);
-
-NS_ASSUME_NONNULL_END
+#include "af-types.h"
diff --git a/src/darwin/Framework/CHIP/gen/callback-stub.cpp b/src/darwin/Framework/CHIP/gen/callback-stub.cpp
new file mode 100644
index 0000000..c5dde30
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/callback-stub.cpp
@@ -0,0 +1,684 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+#include "callback.h"
+#include "cluster-id.h"
+
+using namespace chip;
+
+// Cluster Init Functions
+void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
+{
+ switch (clusterId)
+ {
+ case ZCL_BARRIER_CONTROL_CLUSTER_ID:
+ emberAfBarrierControlClusterInitCallback(endpoint);
+ break;
+ case ZCL_BASIC_CLUSTER_ID:
+ emberAfBasicClusterInitCallback(endpoint);
+ break;
+ case ZCL_BINDING_CLUSTER_ID:
+ emberAfBindingClusterInitCallback(endpoint);
+ break;
+ case ZCL_COLOR_CONTROL_CLUSTER_ID:
+ emberAfColorControlClusterInitCallback(endpoint);
+ break;
+ case ZCL_DOOR_LOCK_CLUSTER_ID:
+ emberAfDoorLockClusterInitCallback(endpoint);
+ break;
+ case ZCL_GROUPS_CLUSTER_ID:
+ emberAfGroupsClusterInitCallback(endpoint);
+ break;
+ case ZCL_IDENTIFY_CLUSTER_ID:
+ emberAfIdentifyClusterInitCallback(endpoint);
+ break;
+ case ZCL_LEVEL_CONTROL_CLUSTER_ID:
+ emberAfLevelControlClusterInitCallback(endpoint);
+ break;
+ case ZCL_ON_OFF_CLUSTER_ID:
+ emberAfOnOffClusterInitCallback(endpoint);
+ break;
+ case ZCL_SCENES_CLUSTER_ID:
+ emberAfScenesClusterInitCallback(endpoint);
+ break;
+ case ZCL_TEMP_MEASUREMENT_CLUSTER_ID:
+ emberAfTemperatureMeasurementClusterInitCallback(endpoint);
+ break;
+ default:
+ // Unrecognized cluster ID
+ break;
+ }
+}
+
+void __attribute__((weak)) emberAfBarrierControlClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfBasicClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfBindingClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfColorControlClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfDoorLockClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfGroupsClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfIdentifyClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfLevelControlClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfOnOffClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfScenesClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+void __attribute__((weak)) emberAfTemperatureMeasurementClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
+
+//
+// Non-Cluster Related Callbacks
+//
+
+/** @brief Add To Current App Tasks
+ *
+ * This function is only useful to sleepy end devices. This function will note
+ * the passed item as part of a set of tasks the application has outstanding
+ * (e.g. message sent requiring APS acknwoledgement). This will affect how the
+ * application behaves with regard to sleeping and polling. Until the
+ * outstanding task is completed, the device may poll more frequently and sleep
+ * less often.
+ *
+ * @param tasks Ver.: always
+ */
+void __attribute__((weak)) emberAfAddToCurrentAppTasksCallback(EmberAfApplicationTask tasks) {}
+
+/** @brief Remove From Current App Tasks
+ *
+ * This function is only useful to sleepy end devices. This function will
+ * remove the passed item from the set of tasks the application has outstanding
+ * (e.g. message sent requiring APS acknwoledgement). This will affect how the
+ * application behaves with regard to sleeping and polling. Removing the item
+ * from the list of outstanding tasks may allow the device to sleep longer and
+ * poll less frequently. If there are other outstanding tasks the system may
+ * still have to stay away and poll more often.
+ *
+ * @param tasks Ver.: always
+ */
+void __attribute__((weak)) emberAfRemoveFromCurrentAppTasksCallback(EmberAfApplicationTask tasks) {}
+
+/** @brief Allow Network Write Attribute
+ *
+ * This function is called by the application framework before it writes an
+ * attribute in response to a write attribute request from an external device.
+ * The value passed into this callback is the value to which the attribute is to
+ * be set by the framework.
+ Example: In mirroring simple metering data
+ * on an Energy Services Interface (ESI) (formerly called Energy Service Portal
+ * (ESP) in SE 1.0).), a mirrored simple meter needs to write read-only
+ * attributes on its mirror. The-meter-mirror sample application, located in
+ * app/framework/sample-apps, uses this callback to allow the mirrored device to
+ * write simple metering attributes on the mirror regardless of the fact that
+ * most simple metering attributes are defined as read-only by the ZigBee
+ * specification.
+ Note: The ZCL specification does not (as of this
+ * writing) specify any permission-level security for writing writeable
+ * attributes. As far as the ZCL specification is concerned, if an attribute is
+ * writeable, any device that has a link key for the device should be able to
+ * write that attribute. Furthermore if an attribute is read only, it should not
+ * be written over the air. Thus, if you implement permissions for writing
+ * attributes as a feature, you MAY be operating outside the specification. This
+ * is unlikely to be a problem for writing read-only attributes, but it may be a
+ * problem for attributes that are writeable according to the specification but
+ * restricted by the application implementing this callback.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param value Ver.: always
+ * @param type Ver.: always
+ */
+EmberAfAttributeWritePermission __attribute__((weak))
+emberAfAllowNetworkWriteAttributeCallback(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId, uint8_t mask,
+ uint16_t manufacturerCode, uint8_t * value, uint8_t type)
+{
+ return EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_NORMAL; // Default
+}
+
+/** @brief Attribute Read Access
+ *
+ * This function is called whenever the Application Framework needs to check
+ * access permission for an attribute read.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param attributeId Ver.: always
+ */
+bool __attribute__((weak))
+emberAfAttributeReadAccessCallback(EndpointId endpoint, ClusterId clusterId, uint16_t manufacturerCode, AttributeId attributeId)
+{
+ return true;
+}
+
+/** @brief Attribute Write Access
+ *
+ * This function is called whenever the Application Framework needs to check
+ * access permission for an attribute write.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param attributeId Ver.: always
+ */
+bool __attribute__((weak))
+emberAfAttributeWriteAccessCallback(EndpointId endpoint, ClusterId clusterId, uint16_t manufacturerCode, AttributeId attributeId)
+{
+ return true;
+}
+
+/** @brief Default Response
+ *
+ * This function is called by the application framework when a Default Response
+ * command is received from an external device. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param commandId The command identifier to which this is a response. Ver.:
+ * always
+ * @param status Specifies either SUCCESS or the nature of the error that was
+ * detected in the received command. Ver.: always
+ */
+bool __attribute__((weak)) emberAfDefaultResponseCallback(ClusterId clusterId, CommandId commandId, EmberAfStatus status)
+{
+ return false;
+}
+
+/** @brief Configure Reporting Response
+ *
+ * This function is called by the application framework when a Configure
+ * Reporting Response command is received from an external device. The
+ * application should return true if the message was processed or false if it
+ * was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of attribute status records. Ver.:
+ * always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfConfigureReportingResponseCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief Read Reporting Configuration Response
+ *
+ * This function is called by the application framework when a Read Reporting
+ * Configuration Response command is received from an external device. The
+ * application should return true if the message was processed or false if it
+ * was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of attribute reporting configuration
+ * records. Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfReadReportingConfigurationResponseCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief Discover Attributes Response
+ *
+ * This function is called by the application framework when a Discover
+ * Attributes Response or Discover Attributes Extended Response command is
+ * received from an external device. The Discover Attributes Response command
+ * contains a bool indicating if discovery is complete and a list of zero or
+ * more attribute identifier/type records. The final argument indicates whether
+ * the response is in the extended format or not. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param discoveryComplete Indicates whether there are more attributes to be
+ * discovered. true if there are no more attributes to be discovered. Ver.:
+ * always
+ * @param buffer Buffer containing the list of attribute identifier/type
+ * records. Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ * @param extended Indicates whether the response is in the extended format or
+ * not. Ver.: always
+ */
+bool __attribute__((weak)) emberAfDiscoverAttributesResponseCallback(ClusterId clusterId, bool discoveryComplete, uint8_t * buffer,
+ uint16_t bufLen, bool extended)
+{
+ return false;
+}
+
+/** @brief Discover Commands Generated Response
+ *
+ * This function is called by the framework when Discover Commands Generated
+ * Response is received.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param manufacturerCode Manufacturer code Ver.: always
+ * @param discoveryComplete Indicates whether there are more commands to be
+ * discovered. Ver.: always
+ * @param commandIds Buffer containing the list of command identifiers. Ver.:
+ * always
+ * @param commandIdCount The length of bytes of the list, whish is the same as
+ * the number of identifiers. Ver.: always
+ */
+bool __attribute__((weak))
+emberAfDiscoverCommandsGeneratedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ return false;
+}
+
+/** @brief Discover Commands Received Response
+ *
+ * This function is called by the framework when Discover Commands Received
+ * Response is received.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param manufacturerCode Manufacturer code Ver.: always
+ * @param discoveryComplete Indicates whether there are more commands to be
+ * discovered. Ver.: always
+ * @param commandIds Buffer containing the list of command identifiers. Ver.:
+ * always
+ * @param commandIdCount The length of bytes of the list, whish is the same as
+ * the number of identifiers. Ver.: always
+ */
+bool __attribute__((weak))
+emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ CommandId * commandIds, uint16_t commandIdCount)
+{
+ return false;
+}
+
+/** @brief Pre Command Received
+ *
+ * This callback is the second in the Application Framework's message processing
+ * chain. At this point in the processing of incoming over-the-air messages, the
+ * application has determined that the incoming message is a ZCL command. It
+ * parses enough of the message to populate an EmberAfClusterCommand struct. The
+ * Application Framework defines this struct value in a local scope to the
+ * command processing but also makes it available through a global pointer
+ * called emberAfCurrentCommand, in app/framework/util/util.c. When command
+ * processing is complete, this pointer is cleared.
+ *
+ * @param cmd Ver.: always
+ */
+bool __attribute__((weak)) emberAfPreCommandReceivedCallback(EmberAfClusterCommand * cmd)
+{
+ return false;
+}
+
+/** @brief Pre Message Send
+ *
+ * This function is called by the framework when it is about to pass a message
+ * to the stack primitives for sending. This message may or may not be ZCL,
+ * ZDO, or some other protocol. This is called prior to
+ any ZigBee
+ * fragmentation that may be done. If the function returns true it is assumed
+ * the callback has consumed and processed the message. The callback must also
+ * set the EmberStatus status code to be passed back to the caller. The
+ * framework will do no further processing on the message.
+ If the
+ * function returns false then it is assumed that the callback has not processed
+ * the mesasge and the framework will continue to process accordingly.
+ *
+ * @param messageStruct The structure containing the parameters of the APS
+ * message to be sent. Ver.: always
+ * @param status A pointer to the status code value that will be returned to the
+ * caller. Ver.: always
+ */
+bool __attribute__((weak)) emberAfPreMessageSendCallback(EmberAfMessageStruct * messageStruct, EmberStatus * status)
+{
+ return false;
+}
+
+/** @brief Message Sent
+ *
+ * This function is called by the application framework from the message sent
+ * handler, when it is informed by the stack regarding the message sent status.
+ * All of the values passed to the emberMessageSentHandler are passed on to this
+ * callback. This provides an opportunity for the application to verify that its
+ * message has been sent successfully and take the appropriate action. This
+ * callback should return a bool value of true or false. A value of true
+ * indicates that the message sent notification has been handled and should not
+ * be handled by the application framework.
+ *
+ * @param type Ver.: always
+ * @param indexOrDestination Ver.: always
+ * @param apsFrame Ver.: always
+ * @param msgLen Ver.: always
+ * @param message Ver.: always
+ * @param status Ver.: always
+ */
+bool __attribute__((weak))
+emberAfMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, EmberApsFrame * apsFrame, uint16_t msgLen,
+ uint8_t * message, EmberStatus status)
+{
+ return false;
+}
+
+/** @brief Pre Attribute Change
+ *
+ * This function is called by the application framework before it changes an
+ * attribute value. The value passed into this callback is the value to which
+ * the attribute is to be set by the framework. The application should return
+ * ::EMBER_ZCL_STATUS_SUCCESS to permit the change or any other ::EmberAfStatus
+ * to reject it.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param type Ver.: always
+ * @param size Ver.: always
+ * @param value Ver.: always
+ */
+EmberAfStatus __attribute__((weak))
+emberAfPreAttributeChangeCallback(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId, uint8_t mask,
+ uint16_t manufacturerCode, uint8_t type, uint8_t size, uint8_t * value)
+{
+ return EMBER_ZCL_STATUS_SUCCESS;
+}
+
+/** @brief Post Attribute Change
+ *
+ * This function is called by the application framework after it changes an
+ * attribute value. The value passed into this callback is the value to which
+ * the attribute was set by the framework.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param type Ver.: always
+ * @param size Ver.: always
+ * @param value Ver.: always
+ */
+void __attribute__((weak))
+emberAfPostAttributeChangeCallback(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId, uint8_t mask,
+ uint16_t manufacturerCode, uint8_t type, uint8_t size, uint8_t * value)
+{}
+
+/** @brief Read Attributes Response
+ *
+ * This function is called by the application framework when a Read Attributes
+ * Response command is received from an external device. The application should
+ * return true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of read attribute status records.
+ * Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfReadAttributesResponseCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief External Attribute Read
+ *
+ * Like emberAfExternalAttributeWriteCallback above, this function is called
+ * when the framework needs to read an attribute that is not stored within the
+ * Application Framework's data structures.
+ All of the important
+ * information about the attribute itself is passed as a pointer to an
+ * EmberAfAttributeMetadata struct, which is stored within the application and
+ * used to manage the attribute. A complete description of the
+ * EmberAfAttributeMetadata struct is provided in
+ * app/framework/include/af-types.h
+ This function assumes that the
+ * application is able to read the attribute, write it into the passed buffer,
+ * and return immediately. Any attributes that require a state machine for
+ * reading and writing are not really candidates for externalization at the
+ * present time. The Application Framework does not currently include a state
+ * machine for reading or writing attributes that must take place across a
+ * series of application ticks. Attributes that cannot be read in a timely
+ * manner should be stored within the Application Framework and updated
+ * occasionally by the application code from within the
+ * emberAfMainTickCallback.
+ If the application was successfully able to
+ * read the attribute and write it into the passed buffer, it should return a
+ * value of EMBER_ZCL_STATUS_SUCCESS. Ensure that the size of the externally
+ * managed attribute value is smaller than what the buffer can hold. In the case
+ * of a buffer overflow throw an appropriate error such as
+ * EMBER_ZCL_STATUS_INSUFFICIENT_SPACE. Any other return value indicates the
+ * application was not able to read the attribute.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeMetadata Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param buffer Ver.: always
+ * @param maxReadLength Ver.: always
+ */
+EmberAfStatus __attribute__((weak))
+emberAfExternalAttributeReadCallback(EndpointId endpoint, ClusterId clusterId, EmberAfAttributeMetadata * attributeMetadata,
+ uint16_t manufacturerCode, uint8_t * buffer, uint16_t maxReadLength)
+{
+ return EMBER_ZCL_STATUS_FAILURE;
+}
+
+/** @brief Write Attributes Response
+ *
+ * This function is called by the application framework when a Write Attributes
+ * Response command is received from an external device. The application should
+ * return true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of write attribute status records.
+ * Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfWriteAttributesResponseCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief External Attribute Write
+ *
+ * This function is called whenever the Application Framework needs to write an
+ * attribute which is not stored within the data structures of the Application
+ * Framework itself. One of the new features in Version 2 is the ability to
+ * store attributes outside the Framework. This is particularly useful for
+ * attributes that do not need to be stored because they can be read off the
+ * hardware when they are needed, or are stored in some central location used by
+ * many modules within the system. In this case, you can indicate that the
+ * attribute is stored externally. When the framework needs to write an external
+ * attribute, it makes a call to this callback.
+ This callback is very
+ * useful for host micros which need to store attributes in persistent memory.
+ * Because each host micro (used with an Ember NCP) has its own type of
+ * persistent memory storage, the Application Framework does not include the
+ * ability to mark attributes as stored in flash the way that it does for Ember
+ * SoCs like the EM35x. On a host micro, any attributes that need to be stored
+ * in persistent memory should be marked as external and accessed through the
+ * external read and write callbacks. Any host code associated with the
+ * persistent storage should be implemented within this callback.
+ All of
+ * the important information about the attribute itself is passed as a pointer
+ * to an EmberAfAttributeMetadata struct, which is stored within the application
+ * and used to manage the attribute. A complete description of the
+ * EmberAfAttributeMetadata struct is provided in
+ * app/framework/include/af-types.h.
+ This function assumes that the
+ * application is able to write the attribute and return immediately. Any
+ * attributes that require a state machine for reading and writing are not
+ * candidates for externalization at the present time. The Application Framework
+ * does not currently include a state machine for reading or writing attributes
+ * that must take place across a series of application ticks. Attributes that
+ * cannot be written immediately should be stored within the Application
+ * Framework and updated occasionally by the application code from within the
+ * emberAfMainTickCallback.
+ If the application was successfully able to
+ * write the attribute, it returns a value of EMBER_ZCL_STATUS_SUCCESS. Any
+ * other return value indicates the application was not able to write the
+ * attribute.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeMetadata Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param buffer Ver.: always
+ */
+EmberAfStatus __attribute__((weak))
+emberAfExternalAttributeWriteCallback(EndpointId endpoint, ClusterId clusterId, EmberAfAttributeMetadata * attributeMetadata,
+ uint16_t manufacturerCode, uint8_t * buffer)
+{
+ return EMBER_ZCL_STATUS_FAILURE;
+}
+
+/** @brief Report Attributes
+ *
+ * This function is called by the application framework when a Report Attributes
+ * command is received from an external device. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this command. Ver.: always
+ * @param buffer Buffer containing the list of attribute report records. Ver.:
+ * always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool __attribute__((weak)) emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * buffer, uint16_t bufLen)
+{
+ return false;
+}
+
+/** @brief Get Current Time
+ *
+ * This callback is called when device attempts to get current time from the
+ * hardware. If this device has means to retrieve exact time, then this method
+ * should implement it. If the callback can't provide the exact time it should
+ * return 0 to indicate failure. Default action is to return 0, which indicates
+ * that device does not have access to real time.
+ *
+ */
+uint32_t __attribute__((weak)) emberAfGetCurrentTimeCallback()
+{
+ return 0;
+}
+
+/** @brief Get Endpoint Info
+ *
+ * This function is a callback to an application implemented endpoint that
+ * operates outside the normal application framework. When the framework wishes
+ * to perform operations with that endpoint it uses this callback to retrieve
+ * the endpoint's information. If the endpoint exists and the application can
+ * provide data then true shall be returned. Otherwise the callback must return
+ * false.
+ *
+ * @param endpoint The endpoint to retrieve data for. Ver.: always
+ * @param returnNetworkIndex The index corresponding to the ZigBee network the
+ * endpoint belongs to. If not using a multi-network device, 0 must be
+ * returned. Otherwise on a multi-network device the stack will switch to this
+ * network before sending the message. Ver.: always
+ * @param returnEndpointInfo A pointer to a data struct that will be written
+ * with information about the endpoint. Ver.: always
+ */
+bool __attribute__((weak))
+emberAfGetEndpointInfoCallback(EndpointId endpoint, uint8_t * returnNetworkIndex, EmberAfEndpointInfoStruct * returnEndpointInfo)
+{
+ return false;
+}
+
+/** @brief Get Source Route Overhead
+ *
+ * This function is called by the framework to determine the overhead required
+ * in the network frame for source routing to a particular destination.
+ *
+ * @param destination The node id of the destination Ver.: always
+ */
+uint8_t __attribute__((weak)) emberAfGetSourceRouteOverheadCallback(chip::NodeId destination)
+{
+ return 0;
+}
+
+/** @brief Registration Abort
+ *
+ * This callback is called when the device should abort the registration
+ * process.
+ *
+ */
+void __attribute__((weak)) emberAfRegistrationAbortCallback() {}
+
+/** @brief Interpan Send Message
+ *
+ * This function will send a raw MAC message with interpan frame format using
+ * the passed parameters.
+ *
+ * @param header Interpan header info Ver.: always
+ * @param messageLength The length of the message received or to send Ver.:
+ * always
+ * @param message The message data received or to send. Ver.: always
+ */
+EmberStatus __attribute__((weak))
+emberAfInterpanSendMessageCallback(EmberAfInterpanHeader * header, uint16_t messageLength, uint8_t * message)
+{
+ return EMBER_LIBRARY_NOT_PRESENT;
+}
+
+/** @brief Start Move
+ *
+ * This function is called to initiate the process for a device to move (rejoin)
+ * to a new parent.
+ *
+ */
+bool __attribute__((weak)) emberAfStartMoveCallback()
+{
+ return false;
+}
diff --git a/src/darwin/Framework/CHIP/gen/callback.h b/src/darwin/Framework/CHIP/gen/callback.h
new file mode 100644
index 0000000..9dc9bcf
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/callback.h
@@ -0,0 +1,1681 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+#include "af-structs.h"
+#include "af-types.h"
+#include "basic-types.h"
+
+/** @brief Cluster Init
+ *
+ * This function is called when a specific cluster is initialized. It gives the
+ * application an opportunity to take care of cluster initialization procedures.
+ * It is called exactly once for each endpoint where cluster is present.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ */
+void emberAfClusterInitCallback(chip::EndpointId endpoint, chip::ClusterId clusterId);
+
+// Cluster Init Functions
+
+/** @brief Barrier Control Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBarrierControlClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Basic Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBasicClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Binding Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBindingClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Color Control Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfColorControlClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Door Lock Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfDoorLockClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Groups Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfGroupsClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Identify Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfIdentifyClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Level Control Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfLevelControlClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief On/off Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfOnOffClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Scenes Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfScenesClusterInitCallback(chip::EndpointId endpoint);
+
+/** @brief Temperature Measurement Cluster Init
+ *
+ * Cluster Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfTemperatureMeasurementClusterInitCallback(chip::EndpointId endpoint);
+
+// Cluster Server/Client Init Functions
+
+//
+// Barrier Control Cluster client
+//
+
+/** @brief Barrier Control Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBarrierControlClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Barrier Control Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfBarrierControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Barrier Control Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfBarrierControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Barrier Control Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfBarrierControlClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Barrier Control Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfBarrierControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Barrier Control Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfBarrierControlClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Basic Cluster client
+//
+
+/** @brief Basic Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBasicClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Basic Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfBasicClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Basic Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfBasicClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Basic Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfBasicClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, EmberStatus status);
+
+/** @brief Basic Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfBasicClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Basic Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfBasicClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Binding Cluster client
+//
+
+/** @brief Binding Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfBindingClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Binding Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfBindingClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Binding Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfBindingClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Binding Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfBindingClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Binding Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfBindingClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Binding Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfBindingClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Color Control Cluster client
+//
+
+/** @brief Color Control Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfColorControlClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Color Control Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfColorControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Color Control Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfColorControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Color Control Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfColorControlClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Color Control Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfColorControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Color Control Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfColorControlClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Door Lock Cluster client
+//
+
+/** @brief Door Lock Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfDoorLockClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Door Lock Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfDoorLockClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Door Lock Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfDoorLockClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Door Lock Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfDoorLockClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Door Lock Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfDoorLockClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Door Lock Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfDoorLockClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Groups Cluster client
+//
+
+/** @brief Groups Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfGroupsClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Groups Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfGroupsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Groups Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfGroupsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Groups Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfGroupsClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Groups Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfGroupsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Groups Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfGroupsClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Identify Cluster client
+//
+
+/** @brief Identify Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfIdentifyClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Identify Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfIdentifyClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Identify Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfIdentifyClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Identify Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfIdentifyClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Identify Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfIdentifyClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Identify Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfIdentifyClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Level Control Cluster client
+//
+
+/** @brief Level Control Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfLevelControlClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Level Control Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfLevelControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Level Control Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfLevelControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Level Control Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfLevelControlClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Level Control Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfLevelControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Level Control Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfLevelControlClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// On/off Cluster client
+//
+
+/** @brief On/off Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfOnOffClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief On/off Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfOnOffClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief On/off Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfOnOffClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief On/off Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfOnOffClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, EmberStatus status);
+
+/** @brief On/off Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfOnOffClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief On/off Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfOnOffClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Scenes Cluster client
+//
+
+/** @brief Scenes Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfScenesClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Scenes Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfScenesClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Scenes Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfScenesClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Scenes Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfScenesClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Scenes Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfScenesClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType, uint8_t size,
+ uint8_t * value);
+
+/** @brief Scenes Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfScenesClusterClientTickCallback(chip::EndpointId endpoint);
+
+//
+// Temperature Measurement Cluster client
+//
+
+/** @brief Temperature Measurement Cluster Client Init
+ *
+ * Client Init
+ *
+ * @param endpoint Endpoint that is being initialized
+ */
+void emberAfTemperatureMeasurementClusterClientInitCallback(chip::EndpointId endpoint);
+
+/** @brief Temperature Measurement Cluster Client Attribute Changed
+ *
+ * Client Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ */
+void emberAfTemperatureMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
+
+/** @brief Temperature Measurement Cluster Client Manufacturer Specific Attribute Changed
+ *
+ * Client Manufacturer Specific Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute that changed
+ * @param manufacturerCode Manufacturer Code of the attribute that changed
+ */
+void emberAfTemperatureMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ uint16_t manufacturerCode);
+
+/** @brief Temperature Measurement Cluster Client Message Sent
+ *
+ * Client Message Sent
+ *
+ * @param type The type of message sent
+ * @param indexOrDestination The destination or address 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 emberAfTemperatureMeasurementClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination,
+ EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+ EmberStatus status);
+
+/** @brief Temperature Measurement Cluster Client Pre Attribute Changed
+ *
+ * client Pre Attribute Changed
+ *
+ * @param endpoint Endpoint that is being initialized
+ * @param attributeId Attribute to be changed
+ * @param attributeType Attribute type
+ * @param size Attribute size
+ * @param value Attribute value
+ */
+EmberAfStatus emberAfTemperatureMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
+ chip::AttributeId attributeId,
+ EmberAfAttributeType attributeType,
+ uint8_t size, uint8_t * value);
+
+/** @brief Temperature Measurement Cluster Client Tick
+ *
+ * client Tick
+ *
+ * @param endpoint Endpoint that is being served
+ */
+void emberAfTemperatureMeasurementClusterClientTickCallback(chip::EndpointId endpoint);
+
+// Cluster Commands Callback
+
+/**
+ * @brief Door Lock Cluster ClearAllPinsResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearAllPinsResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearAllRfidsResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearAllRfidsResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearHolidayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearHolidayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearPinResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearPinResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearRfidResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearRfidResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearWeekdayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster ClearYeardayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterClearYeardayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster GetHolidayScheduleResponse Command callback
+ * @param scheduleId
+ * @param status
+ * @param localStartTime
+ * @param localEndTime
+ * @param operatingModeDuringHoliday
+ */
+
+bool emberAfDoorLockClusterGetHolidayScheduleResponseCallback(uint8_t scheduleId, uint8_t status, uint32_t localStartTime,
+ uint32_t localEndTime, uint8_t operatingModeDuringHoliday);
+
+/**
+ * @brief Door Lock Cluster GetLogRecordResponse Command callback
+ * @param logEntryId
+ * @param timestamp
+ * @param eventType
+ * @param source
+ * @param eventIdOrAlarmCode
+ * @param userId
+ * @param pin
+ */
+
+bool emberAfDoorLockClusterGetLogRecordResponseCallback(uint16_t logEntryId, uint32_t timestamp, uint8_t eventType, uint8_t source,
+ uint8_t eventIdOrAlarmCode, uint16_t userId, uint8_t * pin);
+
+/**
+ * @brief Door Lock Cluster GetPinResponse Command callback
+ * @param userId
+ * @param userStatus
+ * @param userType
+ * @param pin
+ */
+
+bool emberAfDoorLockClusterGetPinResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * pin);
+
+/**
+ * @brief Door Lock Cluster GetRfidResponse Command callback
+ * @param userId
+ * @param userStatus
+ * @param userType
+ * @param rfid
+ */
+
+bool emberAfDoorLockClusterGetRfidResponseCallback(uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid);
+
+/**
+ * @brief Door Lock Cluster GetUserTypeResponse Command callback
+ * @param userId
+ * @param userType
+ */
+
+bool emberAfDoorLockClusterGetUserTypeResponseCallback(uint16_t userId, uint8_t userType);
+
+/**
+ * @brief Door Lock Cluster GetWeekdayScheduleResponse Command callback
+ * @param scheduleId
+ * @param userId
+ * @param status
+ * @param daysMask
+ * @param startHour
+ * @param startMinute
+ * @param endHour
+ * @param endMinute
+ */
+
+bool emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status, uint8_t daysMask,
+ uint8_t startHour, uint8_t startMinute, uint8_t endHour,
+ uint8_t endMinute);
+
+/**
+ * @brief Door Lock Cluster GetYeardayScheduleResponse Command callback
+ * @param scheduleId
+ * @param userId
+ * @param status
+ * @param localStartTime
+ * @param localEndTime
+ */
+
+bool emberAfDoorLockClusterGetYeardayScheduleResponseCallback(uint8_t scheduleId, uint16_t userId, uint8_t status,
+ uint32_t localStartTime, uint32_t localEndTime);
+
+/**
+ * @brief Door Lock Cluster LockDoorResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterLockDoorResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetHolidayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetHolidayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetPinResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetPinResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetRfidResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetRfidResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetUserTypeResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetUserTypeResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetWeekdayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster SetYeardayScheduleResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterSetYeardayScheduleResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster UnlockDoorResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterUnlockDoorResponseCallback(uint8_t status);
+
+/**
+ * @brief Door Lock Cluster UnlockWithTimeoutResponse Command callback
+ * @param status
+ */
+
+bool emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(uint8_t status);
+
+/**
+ * @brief Groups Cluster AddGroupResponse Command callback
+ * @param status
+ * @param groupId
+ */
+
+bool emberAfGroupsClusterAddGroupResponseCallback(uint8_t status, uint16_t groupId);
+
+/**
+ * @brief Groups Cluster GetGroupMembershipResponse Command callback
+ * @param capacity
+ * @param groupCount
+ * @param groupList
+ */
+
+bool emberAfGroupsClusterGetGroupMembershipResponseCallback(uint8_t capacity, uint8_t groupCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * groupList);
+
+/**
+ * @brief Groups Cluster RemoveGroupResponse Command callback
+ * @param status
+ * @param groupId
+ */
+
+bool emberAfGroupsClusterRemoveGroupResponseCallback(uint8_t status, uint16_t groupId);
+
+/**
+ * @brief Groups Cluster ViewGroupResponse Command callback
+ * @param status
+ * @param groupId
+ * @param groupName
+ */
+
+bool emberAfGroupsClusterViewGroupResponseCallback(uint8_t status, uint16_t groupId, uint8_t * groupName);
+
+/**
+ * @brief Identify Cluster IdentifyQueryResponse Command callback
+ * @param timeout
+ */
+
+bool emberAfIdentifyClusterIdentifyQueryResponseCallback(uint16_t timeout);
+
+/**
+ * @brief Scenes Cluster AddSceneResponse Command callback
+ * @param status
+ * @param groupId
+ * @param sceneId
+ */
+
+bool emberAfScenesClusterAddSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId);
+
+/**
+ * @brief Scenes Cluster GetSceneMembershipResponse Command callback
+ * @param status
+ * @param capacity
+ * @param groupId
+ * @param sceneCount
+ * @param sceneList
+ */
+
+bool emberAfScenesClusterGetSceneMembershipResponseCallback(uint8_t status, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
+ /* TYPE WARNING: array array defaults to */ uint8_t * sceneList);
+
+/**
+ * @brief Scenes Cluster RemoveAllScenesResponse Command callback
+ * @param status
+ * @param groupId
+ */
+
+bool emberAfScenesClusterRemoveAllScenesResponseCallback(uint8_t status, uint16_t groupId);
+
+/**
+ * @brief Scenes Cluster RemoveSceneResponse Command callback
+ * @param status
+ * @param groupId
+ * @param sceneId
+ */
+
+bool emberAfScenesClusterRemoveSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId);
+
+/**
+ * @brief Scenes Cluster StoreSceneResponse Command callback
+ * @param status
+ * @param groupId
+ * @param sceneId
+ */
+
+bool emberAfScenesClusterStoreSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId);
+
+/**
+ * @brief Scenes Cluster ViewSceneResponse Command callback
+ * @param status
+ * @param groupId
+ * @param sceneId
+ * @param transitionTime
+ * @param sceneName
+ * @param extensionFieldSets
+ */
+
+bool emberAfScenesClusterViewSceneResponseCallback(uint8_t status, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime,
+ uint8_t * sceneName,
+ /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets);
+
+//
+// Non-Cluster Related Callbacks
+//
+
+/** @brief Add To Current App Tasks
+ *
+ * This function is only useful to sleepy end devices. This function will note
+ * the passed item as part of a set of tasks the application has outstanding
+ * (e.g. message sent requiring APS acknwoledgement). This will affect how the
+ * application behaves with regard to sleeping and polling. Until the
+ * outstanding task is completed, the device may poll more frequently and sleep
+ * less often.
+ *
+ * @param tasks Ver.: always
+ */
+void emberAfAddToCurrentAppTasksCallback(EmberAfApplicationTask tasks);
+
+/** @brief Remove From Current App Tasks
+ *
+ * This function is only useful to sleepy end devices. This function will
+ * remove the passed item from the set of tasks the application has outstanding
+ * (e.g. message sent requiring APS acknwoledgement). This will affect how the
+ * application behaves with regard to sleeping and polling. Removing the item
+ * from the list of outstanding tasks may allow the device to sleep longer and
+ * poll less frequently. If there are other outstanding tasks the system may
+ * still have to stay away and poll more often.
+ *
+ * @param tasks Ver.: always
+ */
+void emberAfRemoveFromCurrentAppTasksCallback(EmberAfApplicationTask tasks);
+
+/** @brief Allow Network Write Attribute
+ *
+ * This function is called by the application framework before it writes an
+ * attribute in response to a write attribute request from an external device.
+ * The value passed into this callback is the value to which the attribute is to
+ * be set by the framework.
+ Example: In mirroring simple metering data
+ * on an Energy Services Interface (ESI) (formerly called Energy Service Portal
+ * (ESP) in SE 1.0).), a mirrored simple meter needs to write read-only
+ * attributes on its mirror. The-meter-mirror sample application, located in
+ * app/framework/sample-apps, uses this callback to allow the mirrored device to
+ * write simple metering attributes on the mirror regardless of the fact that
+ * most simple metering attributes are defined as read-only by the ZigBee
+ * specification.
+ Note: The ZCL specification does not (as of this
+ * writing) specify any permission-level security for writing writeable
+ * attributes. As far as the ZCL specification is concerned, if an attribute is
+ * writeable, any device that has a link key for the device should be able to
+ * write that attribute. Furthermore if an attribute is read only, it should not
+ * be written over the air. Thus, if you implement permissions for writing
+ * attributes as a feature, you MAY be operating outside the specification. This
+ * is unlikely to be a problem for writing read-only attributes, but it may be a
+ * problem for attributes that are writeable according to the specification but
+ * restricted by the application implementing this callback.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param value Ver.: always
+ * @param type Ver.: always
+ */
+EmberAfAttributeWritePermission emberAfAllowNetworkWriteAttributeCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
+ chip::AttributeId attributeId, uint8_t mask,
+ uint16_t manufacturerCode, uint8_t * value, uint8_t type);
+
+/** @brief Attribute Read Access
+ *
+ * This function is called whenever the Application Framework needs to check
+ * access permission for an attribute read.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param attributeId Ver.: always
+ */
+bool emberAfAttributeReadAccessCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, uint16_t manufacturerCode,
+ chip::AttributeId attributeId);
+
+/** @brief Attribute Write Access
+ *
+ * This function is called whenever the Application Framework needs to check
+ * access permission for an attribute write.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param attributeId Ver.: always
+ */
+bool emberAfAttributeWriteAccessCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, uint16_t manufacturerCode,
+ chip::AttributeId attributeId);
+
+/** @brief Default Response
+ *
+ * This function is called by the application framework when a Default Response
+ * command is received from an external device. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param commandId The command identifier to which this is a response. Ver.:
+ * always
+ * @param status Specifies either SUCCESS or the nature of the error that was
+ * detected in the received command. Ver.: always
+ */
+bool emberAfDefaultResponseCallback(chip::ClusterId clusterId, chip::CommandId commandId, EmberAfStatus status);
+
+/** @brief Configure Reporting Response
+ *
+ * This function is called by the application framework when a Configure
+ * Reporting Response command is received from an external device. The
+ * application should return true if the message was processed or false if it
+ * was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of attribute status records. Ver.:
+ * always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfConfigureReportingResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief Read Reporting Configuration Response
+ *
+ * This function is called by the application framework when a Read Reporting
+ * Configuration Response command is received from an external device. The
+ * application should return true if the message was processed or false if it
+ * was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of attribute reporting configuration
+ * records. Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief Discover Attributes Response
+ *
+ * This function is called by the application framework when a Discover
+ * Attributes Response or Discover Attributes Extended Response command is
+ * received from an external device. The Discover Attributes Response command
+ * contains a bool indicating if discovery is complete and a list of zero or
+ * more attribute identifier/type records. The final argument indicates whether
+ * the response is in the extended format or not. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param discoveryComplete Indicates whether there are more attributes to be
+ * discovered. true if there are no more attributes to be discovered. Ver.:
+ * always
+ * @param buffer Buffer containing the list of attribute identifier/type
+ * records. Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ * @param extended Indicates whether the response is in the extended format or
+ * not. Ver.: always
+ */
+bool emberAfDiscoverAttributesResponseCallback(chip::ClusterId clusterId, bool discoveryComplete, uint8_t * buffer, uint16_t bufLen,
+ bool extended);
+
+/** @brief Discover Commands Generated Response
+ *
+ * This function is called by the framework when Discover Commands Generated
+ * Response is received.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param manufacturerCode Manufacturer code Ver.: always
+ * @param discoveryComplete Indicates whether there are more commands to be
+ * discovered. Ver.: always
+ * @param commandIds Buffer containing the list of command identifiers. Ver.:
+ * always
+ * @param commandIdCount The length of bytes of the list, whish is the same as
+ * the number of identifiers. Ver.: always
+ */
+bool emberAfDiscoverCommandsGeneratedResponseCallback(chip::ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ chip::CommandId * commandIds, uint16_t commandIdCount);
+
+/** @brief Discover Commands Received Response
+ *
+ * This function is called by the framework when Discover Commands Received
+ * Response is received.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param manufacturerCode Manufacturer code Ver.: always
+ * @param discoveryComplete Indicates whether there are more commands to be
+ * discovered. Ver.: always
+ * @param commandIds Buffer containing the list of command identifiers. Ver.:
+ * always
+ * @param commandIdCount The length of bytes of the list, whish is the same as
+ * the number of identifiers. Ver.: always
+ */
+bool emberAfDiscoverCommandsReceivedResponseCallback(chip::ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
+ chip::CommandId * commandIds, uint16_t commandIdCount);
+
+/** @brief Pre Command Received
+ *
+ * This callback is the second in the Application Framework's message processing
+ * chain. At this point in the processing of incoming over-the-air messages, the
+ * application has determined that the incoming message is a ZCL command. It
+ * parses enough of the message to populate an EmberAfClusterCommand struct. The
+ * Application Framework defines this struct value in a local scope to the
+ * command processing but also makes it available through a global pointer
+ * called emberAfCurrentCommand, in app/framework/util/util.c. When command
+ * processing is complete, this pointer is cleared.
+ *
+ * @param cmd Ver.: always
+ */
+bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand * cmd);
+
+/** @brief Pre Message Send
+ *
+ * This function is called by the framework when it is about to pass a message
+ * to the stack primitives for sending. This message may or may not be ZCL,
+ * ZDO, or some other protocol. This is called prior to
+ any ZigBee
+ * fragmentation that may be done. If the function returns true it is assumed
+ * the callback has consumed and processed the message. The callback must also
+ * set the EmberStatus status code to be passed back to the caller. The
+ * framework will do no further processing on the message.
+ If the
+ * function returns false then it is assumed that the callback has not processed
+ * the mesasge and the framework will continue to process accordingly.
+ *
+ * @param messageStruct The structure containing the parameters of the APS
+ * message to be sent. Ver.: always
+ * @param status A pointer to the status code value that will be returned to the
+ * caller. Ver.: always
+ */
+bool emberAfPreMessageSendCallback(EmberAfMessageStruct * messageStruct, EmberStatus * status);
+
+/** @brief Message Sent
+ *
+ * This function is called by the application framework from the message sent
+ * handler, when it is informed by the stack regarding the message sent status.
+ * All of the values passed to the emberMessageSentHandler are passed on to this
+ * callback. This provides an opportunity for the application to verify that its
+ * message has been sent successfully and take the appropriate action. This
+ * callback should return a bool value of true or false. A value of true
+ * indicates that the message sent notification has been handled and should not
+ * be handled by the application framework.
+ *
+ * @param type Ver.: always
+ * @param indexOrDestination Ver.: always
+ * @param apsFrame Ver.: always
+ * @param msgLen Ver.: always
+ * @param message Ver.: always
+ * @param status Ver.: always
+ */
+bool emberAfMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, EmberApsFrame * apsFrame,
+ uint16_t msgLen, uint8_t * message, EmberStatus status);
+
+/** @brief Pre Attribute Change
+ *
+ * This function is called by the application framework before it changes an
+ * attribute value. The value passed into this callback is the value to which
+ * the attribute is to be set by the framework. The application should return
+ * ::EMBER_ZCL_STATUS_SUCCESS to permit the change or any other ::EmberAfStatus
+ * to reject it.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param type Ver.: always
+ * @param size Ver.: always
+ * @param value Ver.: always
+ */
+EmberAfStatus emberAfPreAttributeChangeCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, chip::AttributeId attributeId,
+ uint8_t mask, uint16_t manufacturerCode, uint8_t type, uint8_t size,
+ uint8_t * value);
+
+/** @brief Post Attribute Change
+ *
+ * This function is called by the application framework after it changes an
+ * attribute value. The value passed into this callback is the value to which
+ * the attribute was set by the framework.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeId Ver.: always
+ * @param mask Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param type Ver.: always
+ * @param size Ver.: always
+ * @param value Ver.: always
+ */
+void emberAfPostAttributeChangeCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, chip::AttributeId attributeId,
+ uint8_t mask, uint16_t manufacturerCode, uint8_t type, uint8_t size, uint8_t * value);
+
+/** @brief Read Attributes Response
+ *
+ * This function is called by the application framework when a Read Attributes
+ * Response command is received from an external device. The application should
+ * return true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of read attribute status records.
+ * Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfReadAttributesResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief External Attribute Read
+ *
+ * Like emberAfExternalAttributeWriteCallback above, this function is called
+ * when the framework needs to read an attribute that is not stored within the
+ * Application Framework's data structures.
+ All of the important
+ * information about the attribute itself is passed as a pointer to an
+ * EmberAfAttributeMetadata struct, which is stored within the application and
+ * used to manage the attribute. A complete description of the
+ * EmberAfAttributeMetadata struct is provided in
+ * app/framework/include/af-types.h
+ This function assumes that the
+ * application is able to read the attribute, write it into the passed buffer,
+ * and return immediately. Any attributes that require a state machine for
+ * reading and writing are not really candidates for externalization at the
+ * present time. The Application Framework does not currently include a state
+ * machine for reading or writing attributes that must take place across a
+ * series of application ticks. Attributes that cannot be read in a timely
+ * manner should be stored within the Application Framework and updated
+ * occasionally by the application code from within the
+ * emberAfMainTickCallback.
+ If the application was successfully able to
+ * read the attribute and write it into the passed buffer, it should return a
+ * value of EMBER_ZCL_STATUS_SUCCESS. Ensure that the size of the externally
+ * managed attribute value is smaller than what the buffer can hold. In the case
+ * of a buffer overflow throw an appropriate error such as
+ * EMBER_ZCL_STATUS_INSUFFICIENT_SPACE. Any other return value indicates the
+ * application was not able to read the attribute.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeMetadata Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param buffer Ver.: always
+ * @param maxReadLength Ver.: always
+ */
+EmberAfStatus emberAfExternalAttributeReadCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
+ EmberAfAttributeMetadata * attributeMetadata, uint16_t manufacturerCode,
+ uint8_t * buffer, uint16_t maxReadLength);
+
+/** @brief Write Attributes Response
+ *
+ * This function is called by the application framework when a Write Attributes
+ * Response command is received from an external device. The application should
+ * return true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this response. Ver.: always
+ * @param buffer Buffer containing the list of write attribute status records.
+ * Ver.: always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfWriteAttributesResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief External Attribute Write
+ *
+ * This function is called whenever the Application Framework needs to write an
+ * attribute which is not stored within the data structures of the Application
+ * Framework itself. One of the new features in Version 2 is the ability to
+ * store attributes outside the Framework. This is particularly useful for
+ * attributes that do not need to be stored because they can be read off the
+ * hardware when they are needed, or are stored in some central location used by
+ * many modules within the system. In this case, you can indicate that the
+ * attribute is stored externally. When the framework needs to write an external
+ * attribute, it makes a call to this callback.
+ This callback is very
+ * useful for host micros which need to store attributes in persistent memory.
+ * Because each host micro (used with an Ember NCP) has its own type of
+ * persistent memory storage, the Application Framework does not include the
+ * ability to mark attributes as stored in flash the way that it does for Ember
+ * SoCs like the EM35x. On a host micro, any attributes that need to be stored
+ * in persistent memory should be marked as external and accessed through the
+ * external read and write callbacks. Any host code associated with the
+ * persistent storage should be implemented within this callback.
+ All of
+ * the important information about the attribute itself is passed as a pointer
+ * to an EmberAfAttributeMetadata struct, which is stored within the application
+ * and used to manage the attribute. A complete description of the
+ * EmberAfAttributeMetadata struct is provided in
+ * app/framework/include/af-types.h.
+ This function assumes that the
+ * application is able to write the attribute and return immediately. Any
+ * attributes that require a state machine for reading and writing are not
+ * candidates for externalization at the present time. The Application Framework
+ * does not currently include a state machine for reading or writing attributes
+ * that must take place across a series of application ticks. Attributes that
+ * cannot be written immediately should be stored within the Application
+ * Framework and updated occasionally by the application code from within the
+ * emberAfMainTickCallback.
+ If the application was successfully able to
+ * write the attribute, it returns a value of EMBER_ZCL_STATUS_SUCCESS. Any
+ * other return value indicates the application was not able to write the
+ * attribute.
+ *
+ * @param endpoint Ver.: always
+ * @param clusterId Ver.: always
+ * @param attributeMetadata Ver.: always
+ * @param manufacturerCode Ver.: always
+ * @param buffer Ver.: always
+ */
+EmberAfStatus emberAfExternalAttributeWriteCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
+ EmberAfAttributeMetadata * attributeMetadata, uint16_t manufacturerCode,
+ uint8_t * buffer);
+
+/** @brief Report Attributes
+ *
+ * This function is called by the application framework when a Report Attributes
+ * command is received from an external device. The application should return
+ * true if the message was processed or false if it was not.
+ *
+ * @param clusterId The cluster identifier of this command. Ver.: always
+ * @param buffer Buffer containing the list of attribute report records. Ver.:
+ * always
+ * @param bufLen The length in bytes of the list. Ver.: always
+ */
+bool emberAfReportAttributesCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
+
+/** @brief Get Current Time
+ *
+ * This callback is called when device attempts to get current time from the
+ * hardware. If this device has means to retrieve exact time, then this method
+ * should implement it. If the callback can't provide the exact time it should
+ * return 0 to indicate failure. Default action is to return 0, which indicates
+ * that device does not have access to real time.
+ *
+ */
+uint32_t emberAfGetCurrentTimeCallback();
+
+/** @brief Get Endpoint Info
+ *
+ * This function is a callback to an application implemented endpoint that
+ * operates outside the normal application framework. When the framework wishes
+ * to perform operations with that endpoint it uses this callback to retrieve
+ * the endpoint's information. If the endpoint exists and the application can
+ * provide data then true shall be returned. Otherwise the callback must return
+ * false.
+ *
+ * @param endpoint The endpoint to retrieve data for. Ver.: always
+ * @param returnNetworkIndex The index corresponding to the ZigBee network the
+ * endpoint belongs to. If not using a multi-network device, 0 must be
+ * returned. Otherwise on a multi-network device the stack will switch to this
+ * network before sending the message. Ver.: always
+ * @param returnEndpointInfo A pointer to a data struct that will be written
+ * with information about the endpoint. Ver.: always
+ */
+bool emberAfGetEndpointInfoCallback(chip::EndpointId endpoint, uint8_t * returnNetworkIndex,
+ EmberAfEndpointInfoStruct * returnEndpointInfo);
+
+/** @brief Get Source Route Overhead
+ *
+ * This function is called by the framework to determine the overhead required
+ * in the network frame for source routing to a particular destination.
+ *
+ * @param destination The node id of the destination Ver.: always
+ */
+uint8_t emberAfGetSourceRouteOverheadCallback(chip::NodeId destination);
+
+/** @brief Registration Abort
+ *
+ * This callback is called when the device should abort the registration
+ * process.
+ *
+ */
+void emberAfRegistrationAbortCallback();
+
+/** @brief Interpan Send Message
+ *
+ * This function will send a raw MAC message with interpan frame format using
+ * the passed parameters.
+ *
+ * @param header Interpan header info Ver.: always
+ * @param messageLength The length of the message received or to send Ver.:
+ * always
+ * @param message The message data received or to send. Ver.: always
+ */
+EmberStatus emberAfInterpanSendMessageCallback(EmberAfInterpanHeader * header, uint16_t messageLength, uint8_t * message);
+
+/** @brief Start Move
+ *
+ * This function is called to initiate the process for a device to move (rejoin)
+ * to a new parent.
+ *
+ */
+bool emberAfStartMoveCallback();
diff --git a/src/darwin/Framework/CHIP/gen/client-command-macro.h b/src/darwin/Framework/CHIP/gen/client-command-macro.h
new file mode 100644
index 0000000..0cdc542
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/client-command-macro.h
@@ -0,0 +1,6192 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+/** @brief Command description for ReadAttributes
+ *
+ * Command: ReadAttributes
+ * @param attributeIds ATTRIBUTE_ID []
+ * @param attributeIdsLen int
+ */
+#define emberAfFillCommandGlobalReadAttributes(clusterId, attributeIds, attributeIdsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_ATTRIBUTES_COMMAND_ID, "b", attributeIds, attributeIdsLen);
+
+/** @brief Command description for ReadAttributesResponse
+ *
+ * Command: ReadAttributesResponse
+ * @param readAttributeStatusRecords ReadAttributeStatusRecord []
+ * @param readAttributeStatusRecordsLen int
+ */
+#define emberAfFillCommandGlobalReadAttributesResponse(clusterId, readAttributeStatusRecords, readAttributeStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_ATTRIBUTES_RESPONSE_COMMAND_ID, "b", readAttributeStatusRecords, \
+ readAttributeStatusRecordsLen);
+
+/** @brief Command description for WriteAttributes
+ *
+ * Command: WriteAttributes
+ * @param writeAttributeRecords WriteAttributeRecord []
+ * @param writeAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributes(clusterId, writeAttributeRecords, writeAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_COMMAND_ID, "b", writeAttributeRecords, \
+ writeAttributeRecordsLen);
+
+/** @brief Command description for WriteAttributesUndivided
+ *
+ * Command: WriteAttributesUndivided
+ * @param writeAttributeRecords WriteAttributeRecord []
+ * @param writeAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesUndivided(clusterId, writeAttributeRecords, writeAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_UNDIVIDED_COMMAND_ID, "b", writeAttributeRecords, \
+ writeAttributeRecordsLen);
+
+/** @brief Command description for WriteAttributesResponse
+ *
+ * Command: WriteAttributesResponse
+ * @param writeAttributeStatusRecords WriteAttributeStatusRecord []
+ * @param writeAttributeStatusRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesResponse(clusterId, writeAttributeStatusRecords, writeAttributeStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_RESPONSE_COMMAND_ID, "b", writeAttributeStatusRecords, \
+ writeAttributeStatusRecordsLen);
+
+/** @brief Command description for WriteAttributesNoResponse
+ *
+ * Command: WriteAttributesNoResponse
+ * @param writeAttributeRecords WriteAttributeRecord []
+ * @param writeAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesNoResponse(clusterId, writeAttributeRecords, writeAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_NO_RESPONSE_COMMAND_ID, "b", writeAttributeRecords, \
+ writeAttributeRecordsLen);
+
+/** @brief Command description for ConfigureReporting
+ *
+ * Command: ConfigureReporting
+ * @param configureReportingRecords ConfigureReportingRecord []
+ * @param configureReportingRecordsLen int
+ */
+#define emberAfFillCommandGlobalConfigureReporting(clusterId, configureReportingRecords, configureReportingRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_CONFIGURE_REPORTING_COMMAND_ID, "b", configureReportingRecords, \
+ configureReportingRecordsLen);
+
+/** @brief Command description for ConfigureReportingResponse
+ *
+ * Command: ConfigureReportingResponse
+ * @param configureReportingStatusRecords ConfigureReportingStatusRecord []
+ * @param configureReportingStatusRecordsLen int
+ */
+#define emberAfFillCommandGlobalConfigureReportingResponse(clusterId, configureReportingStatusRecords, \
+ configureReportingStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_CONFIGURE_REPORTING_RESPONSE_COMMAND_ID, "b", configureReportingStatusRecords, \
+ configureReportingStatusRecordsLen);
+
+/** @brief Command description for ReadReportingConfiguration
+ *
+ * Command: ReadReportingConfiguration
+ * @param readReportingConfigurationAttributeRecords ReadReportingConfigurationAttributeRecord []
+ * @param readReportingConfigurationAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalReadReportingConfiguration(clusterId, readReportingConfigurationAttributeRecords, \
+ readReportingConfigurationAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_REPORTING_CONFIGURATION_COMMAND_ID, "b", \
+ readReportingConfigurationAttributeRecords, readReportingConfigurationAttributeRecordsLen);
+
+/** @brief Command description for ReadReportingConfigurationResponse
+ *
+ * Command: ReadReportingConfigurationResponse
+ * @param readReportingConfigurationRecords ReadReportingConfigurationRecord []
+ * @param readReportingConfigurationRecordsLen int
+ */
+#define emberAfFillCommandGlobalReadReportingConfigurationResponse(clusterId, readReportingConfigurationRecords, \
+ readReportingConfigurationRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_REPORTING_CONFIGURATION_RESPONSE_COMMAND_ID, "b", \
+ readReportingConfigurationRecords, readReportingConfigurationRecordsLen);
+
+/** @brief Command description for ReportAttributes
+ *
+ * Command: ReportAttributes
+ * @param reportAttributeRecords ReportAttributeRecord []
+ * @param reportAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalReportAttributes(clusterId, reportAttributeRecords, reportAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_REPORT_ATTRIBUTES_COMMAND_ID, "b", reportAttributeRecords, \
+ reportAttributeRecordsLen);
+
+/** @brief Command description for DefaultResponse
+ *
+ * Command: DefaultResponse
+ * @param commandId INT8U
+ * @param status Status
+ */
+#define emberAfFillCommandGlobalDefaultResponse(clusterId, commandId, status) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DEFAULT_RESPONSE_COMMAND_ID, "uu", commandId, status);
+
+/** @brief Command description for DiscoverAttributes
+ *
+ * Command: DiscoverAttributes
+ * @param startId ATTRIBUTE_ID
+ * @param maxAttributeIds INT8U
+ */
+#define emberAfFillCommandGlobalDiscoverAttributes(clusterId, startId, maxAttributeIds) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID, "uu", startId, maxAttributeIds);
+
+/** @brief Command description for DiscoverAttributesResponse
+ *
+ * Command: DiscoverAttributesResponse
+ * @param discoveryComplete INT8U
+ * @param discoverAttributesInfoRecords DiscoverAttributesInfoRecord []
+ * @param discoverAttributesInfoRecordsLen int
+ */
+#define emberAfFillCommandGlobalDiscoverAttributesResponse(clusterId, discoveryComplete, discoverAttributesInfoRecords, \
+ discoverAttributesInfoRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_ATTRIBUTES_RESPONSE_COMMAND_ID, "ub", discoveryComplete, \
+ discoverAttributesInfoRecords, discoverAttributesInfoRecordsLen);
+
+/** @brief Command description for ReadAttributesStructured
+ *
+ * Command: ReadAttributesStructured
+ * @param readStructuredAttributeRecords ReadStructuredAttributeRecord []
+ * @param readStructuredAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalReadAttributesStructured(clusterId, readStructuredAttributeRecords, \
+ readStructuredAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_READ_ATTRIBUTES_STRUCTURED_COMMAND_ID, "b", readStructuredAttributeRecords, \
+ readStructuredAttributeRecordsLen);
+
+/** @brief Command description for WriteAttributesStructured
+ *
+ * Command: WriteAttributesStructured
+ * @param writeStructuredAttributeRecords WriteStructuredAttributeRecord []
+ * @param writeStructuredAttributeRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesStructured(clusterId, writeStructuredAttributeRecords, \
+ writeStructuredAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_STRUCTURED_COMMAND_ID, "b", writeStructuredAttributeRecords, \
+ writeStructuredAttributeRecordsLen);
+
+/** @brief Command description for WriteAttributesStructuredResponse
+ *
+ * Command: WriteAttributesStructuredResponse
+ * @param writeStructuredAttributeStatusRecords WriteStructuredAttributeStatusRecord []
+ * @param writeStructuredAttributeStatusRecordsLen int
+ */
+#define emberAfFillCommandGlobalWriteAttributesStructuredResponse(clusterId, writeStructuredAttributeStatusRecords, \
+ writeStructuredAttributeStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_WRITE_ATTRIBUTES_STRUCTURED_RESPONSE_COMMAND_ID, "b", \
+ writeStructuredAttributeStatusRecords, writeStructuredAttributeStatusRecordsLen);
+
+/** @brief Command description for DiscoverCommandsReceived
+ *
+ * Command: DiscoverCommandsReceived
+ * @param startCommandId INT8U
+ * @param maxCommandIds INT8U
+ */
+#define emberAfFillCommandGlobalDiscoverCommandsReceived(clusterId, startCommandId, maxCommandIds) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_COMMANDS_RECEIVED_COMMAND_ID, "uu", startCommandId, maxCommandIds);
+
+/** @brief Command description for DiscoverCommandsReceivedResponse
+ *
+ * Command: DiscoverCommandsReceivedResponse
+ * @param discoveryComplete INT8U
+ * @param commandIds INT8U []
+ * @param commandIdsLen int
+ */
+#define emberAfFillCommandGlobalDiscoverCommandsReceivedResponse(clusterId, discoveryComplete, commandIds, commandIdsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_COMMANDS_RECEIVED_RESPONSE_COMMAND_ID, "ub", discoveryComplete, \
+ commandIds, commandIdsLen);
+
+/** @brief Command description for DiscoverCommandsGenerated
+ *
+ * Command: DiscoverCommandsGenerated
+ * @param startCommandId INT8U
+ * @param maxCommandIds INT8U
+ */
+#define emberAfFillCommandGlobalDiscoverCommandsGenerated(clusterId, startCommandId, maxCommandIds) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_COMMANDS_GENERATED_COMMAND_ID, "uu", startCommandId, maxCommandIds);
+
+/** @brief Command description for DiscoverCommandsGeneratedResponse
+ *
+ * Command: DiscoverCommandsGeneratedResponse
+ * @param discoveryComplete INT8U
+ * @param commandIds INT8U []
+ * @param commandIdsLen int
+ */
+#define emberAfFillCommandGlobalDiscoverCommandsGeneratedResponse(clusterId, discoveryComplete, commandIds, commandIdsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_COMMANDS_GENERATED_RESPONSE_COMMAND_ID, "ub", discoveryComplete, \
+ commandIds, commandIdsLen);
+
+/** @brief Command description for DiscoverAttributesExtended
+ *
+ * Command: DiscoverAttributesExtended
+ * @param startId ATTRIBUTE_ID
+ * @param maxAttributeIds INT8U
+ */
+#define emberAfFillCommandGlobalDiscoverAttributesExtended(clusterId, startId, maxAttributeIds) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_ATTRIBUTES_EXTENDED_COMMAND_ID, "uu", startId, maxAttributeIds);
+
+/** @brief Command description for DiscoverAttributesExtendedResponse
+ *
+ * Command: DiscoverAttributesExtendedResponse
+ * @param discoveryComplete INT8U
+ * @param extendedDiscoverAttributesInfoRecords ExtendedDiscoverAttributesInfoRecord []
+ * @param extendedDiscoverAttributesInfoRecordsLen int
+ */
+#define emberAfFillCommandGlobalDiscoverAttributesExtendedResponse( \
+ clusterId, discoveryComplete, extendedDiscoverAttributesInfoRecords, extendedDiscoverAttributesInfoRecordsLen) \
+ emberAfFillExternalBuffer(mask, clusterId, ZCL_DISCOVER_ATTRIBUTES_EXTENDED_RESPONSE_COMMAND_ID, "ub", discoveryComplete, \
+ extendedDiscoverAttributesInfoRecords, extendedDiscoverAttributesInfoRecordsLen);
+
+/** @brief Command description for ResetToFactoryDefaults
+ *
+ * Command: ResetToFactoryDefaults
+ */
+#define emberAfFillCommandBasicClusterResetToFactoryDefaults() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_TO_FACTORY_DEFAULTS_COMMAND_ID, "", );
+
+/** @brief Command description for Identify
+ *
+ * Command: Identify
+ * @param identifyTime INT16U
+ * @param timeout INT16U
+ */
+#define emberAfFillCommandIdentifyClusterIdentify(identifyTime, timeout) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IDENTIFY_COMMAND_ID, "uu", identifyTime, timeout);
+
+/** @brief Command description for IdentifyQuery
+ *
+ * Command: IdentifyQuery
+ */
+#define emberAfFillCommandIdentifyClusterIdentifyQuery() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IDENTIFY_QUERY_COMMAND_ID, "", );
+
+/** @brief Command description for EZModeInvoke
+ *
+ * Command: EZModeInvoke
+ * @param action BITMAP8
+ */
+#define emberAfFillCommandIdentifyClusterEZModeInvoke(action) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EZ_MODE_INVOKE_COMMAND_ID, "u", action);
+
+/** @brief Command description for UpdateCommissionState
+ *
+ * Command: UpdateCommissionState
+ * @param action ENUM8
+ * @param commissionStateMask BITMAP8
+ */
+#define emberAfFillCommandIdentifyClusterUpdateCommissionState(action, commissionStateMask) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UPDATE_COMMISSION_STATE_COMMAND_ID, "uu", action, commissionStateMask);
+
+/** @brief Command description for TriggerEffect
+ *
+ * Command: TriggerEffect
+ * @param effectId IdentifyEffectIdentifier
+ * @param effectVariant IdentifyEffectVariant
+ */
+#define emberAfFillCommandIdentifyClusterTriggerEffect(effectId, effectVariant) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRIGGER_EFFECT_COMMAND_ID, "uu", effectId, effectVariant);
+
+/** @brief Command description for AddGroup
+ *
+ * Command: AddGroup
+ * @param groupId INT16U
+ * @param status Status
+ * @param groupName CHAR_STRING
+ * @param groupId INT16U
+ */
+#define emberAfFillCommandGroupsClusterAddGroup(groupId, status, groupName, groupId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ADD_GROUP_COMMAND_ID, "uuuu", groupId, status, groupName, groupId);
+
+/** @brief Command description for ViewGroup
+ *
+ * Command: ViewGroup
+ * @param groupId INT16U
+ * @param status Status
+ * @param groupId INT16U
+ * @param groupName CHAR_STRING
+ */
+#define emberAfFillCommandGroupsClusterViewGroup(groupId, status, groupId, groupName) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_VIEW_GROUP_COMMAND_ID, "uuuu", groupId, status, groupId, groupName);
+
+/** @brief Command description for GetGroupMembership
+ *
+ * Command: GetGroupMembership
+ * @param groupCount INT8U
+ * @param capacity INT8U
+ * @param groupList INT16U []
+ * @param groupListLen int
+ * @param groupCount INT8U
+ * @param groupList INT16U []
+ * @param groupListLen int
+ */
+#define emberAfFillCommandGroupsClusterGetGroupMembership(groupCount, capacity, groupList, groupListLen, groupCount, groupList, \
+ groupListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID, "uubub", groupCount, capacity, groupList, groupListLen, \
+ groupCount, groupList, groupListLen);
+
+/** @brief Command description for RemoveGroup
+ *
+ * Command: RemoveGroup
+ * @param groupId INT16U
+ * @param status Status
+ * @param groupId INT16U
+ */
+#define emberAfFillCommandGroupsClusterRemoveGroup(groupId, status, groupId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_GROUP_COMMAND_ID, "uuu", groupId, status, groupId);
+
+/** @brief Command description for RemoveAllGroups
+ *
+ * Command: RemoveAllGroups
+ */
+#define emberAfFillCommandGroupsClusterRemoveAllGroups() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_ALL_GROUPS_COMMAND_ID, "", );
+
+/** @brief Command description for AddGroupIfIdentifying
+ *
+ * Command: AddGroupIfIdentifying
+ * @param groupId INT16U
+ * @param groupName CHAR_STRING
+ */
+#define emberAfFillCommandGroupsClusterAddGroupIfIdentifying(groupId, groupName) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID, "uu", groupId, groupName);
+
+/** @brief Command description for AddScene
+ *
+ * Command: AddScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param transitionTime INT16U
+ * @param sceneId INT8U
+ * @param sceneName CHAR_STRING
+ * @param extensionFieldSets SceneExtensionFieldSet []
+ * @param extensionFieldSetsLen int
+ */
+#define emberAfFillCommandScenesClusterAddScene(groupId, status, sceneId, groupId, transitionTime, sceneId, sceneName, \
+ extensionFieldSets, extensionFieldSetsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ADD_SCENE_COMMAND_ID, "uuuuuuub", groupId, status, sceneId, groupId, transitionTime, sceneId, \
+ sceneName, extensionFieldSets, extensionFieldSetsLen);
+
+/** @brief Command description for ViewScene
+ *
+ * Command: ViewScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ * @param transitionTime INT16U
+ * @param sceneName CHAR_STRING
+ * @param extensionFieldSets SceneExtensionFieldSet []
+ * @param extensionFieldSetsLen int
+ */
+#define emberAfFillCommandScenesClusterViewScene(groupId, status, sceneId, groupId, sceneId, transitionTime, sceneName, \
+ extensionFieldSets, extensionFieldSetsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_VIEW_SCENE_COMMAND_ID, "uuuuuuub", groupId, status, sceneId, groupId, sceneId, transitionTime, \
+ sceneName, extensionFieldSets, extensionFieldSetsLen);
+
+/** @brief Command description for RemoveScene
+ *
+ * Command: RemoveScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ */
+#define emberAfFillCommandScenesClusterRemoveScene(groupId, status, sceneId, groupId, sceneId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_SCENE_COMMAND_ID, "uuuuu", groupId, status, sceneId, groupId, sceneId);
+
+/** @brief Command description for RemoveAllScenes
+ *
+ * Command: RemoveAllScenes
+ * @param groupId INT16U
+ * @param status Status
+ * @param groupId INT16U
+ */
+#define emberAfFillCommandScenesClusterRemoveAllScenes(groupId, status, groupId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_ALL_SCENES_COMMAND_ID, "uuu", groupId, status, groupId);
+
+/** @brief Command description for StoreScene
+ *
+ * Command: StoreScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ */
+#define emberAfFillCommandScenesClusterStoreScene(groupId, status, sceneId, groupId, sceneId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STORE_SCENE_COMMAND_ID, "uuuuu", groupId, status, sceneId, groupId, sceneId);
+
+/** @brief Command description for RecallScene
+ *
+ * Command: RecallScene
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandScenesClusterRecallScene(groupId, sceneId, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RECALL_SCENE_COMMAND_ID, "uuu", groupId, sceneId, transitionTime);
+
+/** @brief Command description for GetSceneMembership
+ *
+ * Command: GetSceneMembership
+ * @param groupId INT16U
+ * @param status Status
+ * @param capacity INT8U
+ * @param groupId INT16U
+ * @param sceneCount INT8U
+ * @param sceneList INT8U []
+ * @param sceneListLen int
+ */
+#define emberAfFillCommandScenesClusterGetSceneMembership(groupId, status, capacity, groupId, sceneCount, sceneList, sceneListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID, "uuuuub", groupId, status, capacity, groupId, sceneCount, \
+ sceneList, sceneListLen);
+
+/** @brief Command description for EnhancedAddScene
+ *
+ * Command: EnhancedAddScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param transitionTime INT16U
+ * @param sceneId INT8U
+ * @param sceneName CHAR_STRING
+ * @param extensionFieldSets SceneExtensionFieldSet []
+ * @param extensionFieldSetsLen int
+ */
+#define emberAfFillCommandScenesClusterEnhancedAddScene(groupId, status, sceneId, groupId, transitionTime, sceneId, sceneName, \
+ extensionFieldSets, extensionFieldSetsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_ADD_SCENE_COMMAND_ID, "uuuuuuub", groupId, status, sceneId, groupId, transitionTime, \
+ sceneId, sceneName, extensionFieldSets, extensionFieldSetsLen);
+
+/** @brief Command description for EnhancedViewScene
+ *
+ * Command: EnhancedViewScene
+ * @param groupId INT16U
+ * @param status Status
+ * @param sceneId INT8U
+ * @param groupId INT16U
+ * @param sceneId INT8U
+ * @param transitionTime INT16U
+ * @param sceneName CHAR_STRING
+ * @param extensionFieldSets SceneExtensionFieldSet []
+ * @param extensionFieldSetsLen int
+ */
+#define emberAfFillCommandScenesClusterEnhancedViewScene(groupId, status, sceneId, groupId, sceneId, transitionTime, sceneName, \
+ extensionFieldSets, extensionFieldSetsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_VIEW_SCENE_COMMAND_ID, "uuuuuuub", groupId, status, sceneId, groupId, sceneId, \
+ transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen);
+
+/** @brief Command description for CopyScene
+ *
+ * Command: CopyScene
+ * @param mode ScenesCopyMode
+ * @param status Status
+ * @param groupIdFrom INT16U
+ * @param groupIdFrom INT16U
+ * @param sceneIdFrom INT8U
+ * @param sceneIdFrom INT8U
+ * @param groupIdTo INT16U
+ * @param sceneIdTo INT8U
+ */
+#define emberAfFillCommandScenesClusterCopyScene(mode, status, groupIdFrom, groupIdFrom, sceneIdFrom, sceneIdFrom, groupIdTo, \
+ sceneIdTo) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_COPY_SCENE_COMMAND_ID, "uuuuuuuu", mode, status, groupIdFrom, groupIdFrom, sceneIdFrom, \
+ sceneIdFrom, groupIdTo, sceneIdTo);
+
+/** @brief Command description for Off
+ *
+ * Command: Off
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOff() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OFF_COMMAND_ID, "", );
+
+/** @brief Command description for On
+ *
+ * Command: On
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOn() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ON_COMMAND_ID, "", );
+
+/** @brief Command description for Toggle
+ *
+ * Command: Toggle
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterToggle() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TOGGLE_COMMAND_ID, "", );
+
+/** @brief Command description for OffWithEffect
+ *
+ * Command: OffWithEffect
+ * @param effectId OnOffEffectIdentifier
+ * @param effectVariant ENUM8
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOffWithEffect(effectId, effectVariant) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OFF_WITH_EFFECT_COMMAND_ID, "uu", effectId, effectVariant);
+
+/** @brief Command description for OnWithRecallGlobalScene
+ *
+ * Command: OnWithRecallGlobalScene
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOnWithRecallGlobalScene() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ON_WITH_RECALL_GLOBAL_SCENE_COMMAND_ID, "", );
+
+/** @brief Command description for OnWithTimedOff
+ *
+ * Command: OnWithTimedOff
+ * @param onOffControl OnOffControl
+ * @param onTime INT16U
+ * @param offWaitTime INT16U
+ */
+#define emberAfFillCommandOn \
+ / \
+ offClusterOnWithTimedOff(onOffControl, onTime, offWaitTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ON_WITH_TIMED_OFF_COMMAND_ID, "uuu", onOffControl, onTime, offWaitTime);
+
+/** @brief Command description for MoveToLevel
+ *
+ * Command: MoveToLevel
+ * @param level INT8U
+ * @param transitionTime INT16U
+ * @param optionMask BITMAP8
+ * @param optionOverride BITMAP8
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterMoveToLevel(level, transitionTime, optionMask, optionOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_TO_LEVEL_COMMAND_ID, "uuuu", level, transitionTime, optionMask, optionOverride);
+
+/** @brief Command description for Move
+ *
+ * Command: Move
+ * @param moveMode MoveMode
+ * @param rate INT8U
+ * @param optionMask BITMAP8
+ * @param optionOverride BITMAP8
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterMove(moveMode, rate, optionMask, optionOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_COMMAND_ID, "uuuu", moveMode, rate, optionMask, optionOverride);
+
+/** @brief Command description for Step
+ *
+ * Command: Step
+ * @param stepMode StepMode
+ * @param stepSize INT8U
+ * @param transitionTime INT16U
+ * @param optionMask BITMAP8
+ * @param optionOverride BITMAP8
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterStep(stepMode, stepSize, transitionTime, optionMask, optionOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STEP_COMMAND_ID, "uuuuu", stepMode, stepSize, transitionTime, optionMask, optionOverride);
+
+/** @brief Command description for Stop
+ *
+ * Command: Stop
+ * @param optionMask BITMAP8
+ * @param optionOverride BITMAP8
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterStop(optionMask, optionOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STOP_COMMAND_ID, "uu", optionMask, optionOverride);
+
+/** @brief Command description for MoveToLevelWithOnOff
+ *
+ * Command: MoveToLevelWithOnOff
+ * @param level INT8U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterMoveToLevelWithOnOff(level, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID, "uu", level, transitionTime);
+
+/** @brief Command description for MoveWithOnOff
+ *
+ * Command: MoveWithOnOff
+ * @param moveMode MoveMode
+ * @param rate INT8U
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterMoveWithOnOff(moveMode, rate) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_WITH_ON_OFF_COMMAND_ID, "uu", moveMode, rate);
+
+/** @brief Command description for StepWithOnOff
+ *
+ * Command: StepWithOnOff
+ * @param stepMode StepMode
+ * @param stepSize INT8U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterStepWithOnOff(stepMode, stepSize, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STEP_WITH_ON_OFF_COMMAND_ID, "uuu", stepMode, stepSize, transitionTime);
+
+/** @brief Command description for StopWithOnOff
+ *
+ * Command: StopWithOnOff
+ */
+#define emberAfFillCommandLevel \
+ ControlClusterStopWithOnOff() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STOP_WITH_ON_OFF_COMMAND_ID, "", );
+
+/** @brief Command description for ResetAlarm
+ *
+ * Command: ResetAlarm
+ * @param alarmCode ENUM8
+ * @param alarmCode ENUM8
+ * @param clusterId CLUSTER_ID
+ * @param clusterId CLUSTER_ID
+ */
+#define emberAfFillCommandAlarmsClusterResetAlarm(alarmCode, alarmCode, clusterId, clusterId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_ALARM_COMMAND_ID, "uuuu", alarmCode, alarmCode, clusterId, clusterId);
+
+/** @brief Command description for ResetAllAlarms
+ *
+ * Command: ResetAllAlarms
+ * @param status Status
+ * @param alarmCode ENUM8
+ * @param clusterId CLUSTER_ID
+ * @param timeStamp INT32U
+ */
+#define emberAfFillCommandAlarmsClusterResetAllAlarms(status, alarmCode, clusterId, timeStamp) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_ALL_ALARMS_COMMAND_ID, "uuuu", status, alarmCode, clusterId, timeStamp);
+
+/** @brief Command description for GetAlarm
+ *
+ * Command: GetAlarm
+ */
+#define emberAfFillCommandAlarmsClusterGetAlarm() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_ALARM_COMMAND_ID, "", );
+
+/** @brief Command description for ResetAlarmLog
+ *
+ * Command: ResetAlarmLog
+ */
+#define emberAfFillCommandAlarmsClusterResetAlarmLog() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_ALARM_LOG_COMMAND_ID, "", );
+
+/** @brief Command description for SetAbsoluteLocation
+ *
+ * Command: SetAbsoluteLocation
+ * @param coordinate1 INT16S
+ * @param status Status
+ * @param coordinate2 INT16S
+ * @param power INT16S
+ * @param coordinate3 INT16S
+ * @param pathLossExponent INT16U
+ * @param power INT16S
+ * @param calculationPeriod INT16U
+ * @param pathLossExponent INT16U
+ * @param numberRssiMeasurements INT8U
+ * @param reportingPeriod INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterSetAbsoluteLocation(coordinate1, status, coordinate2, power, coordinate3, pathLossExponent, power, \
+ calculationPeriod, pathLossExponent, numberRssiMeasurements, reportingPeriod) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_ABSOLUTE_LOCATION_COMMAND_ID, "uuuuuuuuuuu", coordinate1, status, coordinate2, power, \
+ coordinate3, pathLossExponent, power, calculationPeriod, pathLossExponent, \
+ numberRssiMeasurements, reportingPeriod);
+
+/** @brief Command description for SetDeviceConfiguration
+ *
+ * Command: SetDeviceConfiguration
+ * @param power INT16S
+ * @param status Status
+ * @param pathLossExponent INT16U
+ * @param locationType LocationType
+ * @param calculationPeriod INT16U
+ * @param coordinate1 INT16S
+ * @param numberRssiMeasurements INT8U
+ * @param coordinate2 INT16S
+ * @param reportingPeriod INT16U
+ * @param coordinate3 INT16S
+ * @param power INT16S
+ * @param pathLossExponent INT16U
+ * @param locationMethod LocationMethod
+ * @param qualityMeasure INT8U
+ * @param locationAge INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterSetDeviceConfiguration(power, status, pathLossExponent, locationType, calculationPeriod, coordinate1, \
+ numberRssiMeasurements, coordinate2, reportingPeriod, coordinate3, power, \
+ pathLossExponent, locationMethod, qualityMeasure, locationAge) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_DEVICE_CONFIGURATION_COMMAND_ID, "uuuuuuuuuuuuuuu", power, status, pathLossExponent, \
+ locationType, calculationPeriod, coordinate1, numberRssiMeasurements, coordinate2, \
+ reportingPeriod, coordinate3, power, pathLossExponent, locationMethod, qualityMeasure, \
+ locationAge);
+
+/** @brief Command description for GetDeviceConfiguration
+ *
+ * Command: GetDeviceConfiguration
+ * @param targetAddress IEEE_ADDRESS
+ * @param locationType LocationType
+ * @param coordinate1 INT16S
+ * @param coordinate2 INT16S
+ * @param coordinate3 INT16S
+ * @param power INT16S
+ * @param pathLossExponent INT16U
+ * @param locationMethod LocationMethod
+ * @param qualityMeasure INT8U
+ * @param locationAge INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterGetDeviceConfiguration(targetAddress, locationType, coordinate1, coordinate2, coordinate3, power, \
+ pathLossExponent, locationMethod, qualityMeasure, locationAge) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_DEVICE_CONFIGURATION_COMMAND_ID, "uuuuuuuuuu", targetAddress, locationType, coordinate1, \
+ coordinate2, coordinate3, power, pathLossExponent, locationMethod, qualityMeasure, locationAge);
+
+/** @brief Command description for GetLocationData
+ *
+ * Command: GetLocationData
+ * @param flags GetLocationDataFlags
+ * @param locationType LocationType
+ * @param numberResponses INT8U
+ * @param coordinate1 INT16S
+ * @param targetAddress IEEE_ADDRESS
+ * @param coordinate2 INT16S
+ * @param coordinate3 INT16S
+ * @param qualityMeasure INT8U
+ * @param locationAge INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterGetLocationData(flags, locationType, numberResponses, coordinate1, targetAddress, coordinate2, coordinate3, \
+ qualityMeasure, locationAge) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_LOCATION_DATA_COMMAND_ID, "uuuuuuuuu", flags, locationType, numberResponses, \
+ coordinate1, targetAddress, coordinate2, coordinate3, qualityMeasure, locationAge);
+
+/** @brief Command description for RssiResponse
+ *
+ * Command: RssiResponse
+ * @param replyingDevice IEEE_ADDRESS
+ * @param locationType LocationType
+ * @param coordinate1 INT16S
+ * @param coordinate2 INT16S
+ * @param coordinate3 INT16S
+ * @param rssi INT8S
+ * @param numberRssiMeasurements INT8U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterRssiResponse(replyingDevice, locationType, coordinate1, coordinate2, coordinate3, rssi, numberRssiMeasurements) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RSSI_RESPONSE_COMMAND_ID, "uuuuuuu", replyingDevice, locationType, coordinate1, coordinate2, \
+ coordinate3, rssi, numberRssiMeasurements);
+
+/** @brief Command description for RssiRequest
+ *
+ * Command: RssiRequest
+ * @param targetAddress IEEE_ADDRESS
+ * @param numberRssiMeasurements INT8U
+ * @param calculationPeriod INT16U
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterRssiRequest(targetAddress, numberRssiMeasurements, calculationPeriod) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RSSI_REQUEST_COMMAND_ID, "uuu", targetAddress, numberRssiMeasurements, calculationPeriod);
+
+/** @brief Command description for AnchorNodeAnnounce
+ *
+ * Command: AnchorNodeAnnounce
+ * @param anchorNodeIeeeAddress IEEE_ADDRESS
+ * @param measuringDevice IEEE_ADDRESS
+ * @param coordinate1 INT16S
+ * @param neighbors INT8U
+ * @param coordinate2 INT16S
+ * @param neighborsInfo NeighborInfo []
+ * @param neighborsInfoLen int
+ * @param coordinate3 INT16S
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterAnchorNodeAnnounce(anchorNodeIeeeAddress, measuringDevice, coordinate1, neighbors, coordinate2, neighborsInfo, \
+ neighborsInfoLen, coordinate3) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ANCHOR_NODE_ANNOUNCE_COMMAND_ID, "uuuuubu", anchorNodeIeeeAddress, measuringDevice, \
+ coordinate1, neighbors, coordinate2, neighborsInfo, neighborsInfoLen, coordinate3);
+
+/** @brief Command description for RequestOwnLocation
+ *
+ * Command: RequestOwnLocation
+ * @param blindNode IEEE_ADDRESS
+ */
+#define emberAfFillCommandRSSI \
+ LocationClusterRequestOwnLocation(blindNode) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_OWN_LOCATION_COMMAND_ID, "u", blindNode);
+
+/** @brief Command description for RestartDevice
+ *
+ * Command: RestartDevice
+ * @param options RestartOptions
+ * @param status ENUM8
+ * @param delay INT8U
+ * @param jitter INT8U
+ */
+#define emberAfFillCommandCommissioningClusterRestartDevice(options, status, delay, jitter) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESTART_DEVICE_COMMAND_ID, "uuuu", options, status, delay, jitter);
+
+/** @brief Command description for SaveStartupParameters
+ *
+ * Command: SaveStartupParameters
+ * @param options BITMAP8
+ * @param status ENUM8
+ * @param index INT8U
+ */
+#define emberAfFillCommandCommissioningClusterSaveStartupParameters(options, status, index) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SAVE_STARTUP_PARAMETERS_COMMAND_ID, "uuu", options, status, index);
+
+/** @brief Command description for RestoreStartupParameters
+ *
+ * Command: RestoreStartupParameters
+ * @param options BITMAP8
+ * @param status ENUM8
+ * @param index INT8U
+ */
+#define emberAfFillCommandCommissioningClusterRestoreStartupParameters(options, status, index) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESTORE_STARTUP_PARAMETERS_COMMAND_ID, "uuu", options, status, index);
+
+/** @brief Command description for ResetStartupParameters
+ *
+ * Command: ResetStartupParameters
+ * @param options ResetOptions
+ * @param status ENUM8
+ * @param index INT8U
+ */
+#define emberAfFillCommandCommissioningClusterResetStartupParameters(options, status, index) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_STARTUP_PARAMETERS_COMMAND_ID, "uuu", options, status, index);
+
+/** @brief Command description for TransferPartitionedFrame
+ *
+ * Command: TransferPartitionedFrame
+ * @param fragmentationOptions BITMAP8
+ * @param ackOptions BITMAP8
+ * @param partitionedIndicatorAndFrame INT8U []
+ * @param partitionedIndicatorAndFrameLen int
+ * @param firstFrameIdAndNackList INT8U []
+ * @param firstFrameIdAndNackListLen int
+ */
+#define emberAfFillCommandPartitionClusterTransferPartitionedFrame(fragmentationOptions, ackOptions, partitionedIndicatorAndFrame, \
+ partitionedIndicatorAndFrameLen, firstFrameIdAndNackList, \
+ firstFrameIdAndNackListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_PARTITIONED_FRAME_COMMAND_ID, "uubb", fragmentationOptions, ackOptions, \
+ partitionedIndicatorAndFrame, partitionedIndicatorAndFrameLen, firstFrameIdAndNackList, \
+ firstFrameIdAndNackListLen);
+
+/** @brief Command description for ReadHandshakeParam
+ *
+ * Command: ReadHandshakeParam
+ * @param partitionedClusterId CLUSTER_ID
+ * @param partitionedClusterId CLUSTER_ID
+ * @param attributeList ATTRIBUTE_ID []
+ * @param attributeListLen int
+ * @param readAttributeStatusRecords ReadAttributeStatusRecord []
+ * @param readAttributeStatusRecordsLen int
+ */
+#define emberAfFillCommandPartitionClusterReadHandshakeParam(partitionedClusterId, partitionedClusterId, attributeList, \
+ attributeListLen, readAttributeStatusRecords, \
+ readAttributeStatusRecordsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READ_HANDSHAKE_PARAM_COMMAND_ID, "uubb", partitionedClusterId, partitionedClusterId, \
+ attributeList, attributeListLen, readAttributeStatusRecords, readAttributeStatusRecordsLen);
+
+/** @brief Command description for WriteHandshakeParam
+ *
+ * Command: WriteHandshakeParam
+ * @param partitionedClusterId CLUSTER_ID
+ * @param writeAttributeRecords WriteAttributeRecord []
+ * @param writeAttributeRecordsLen int
+ */
+#define emberAfFillCommandPartitionClusterWriteHandshakeParam(partitionedClusterId, writeAttributeRecords, \
+ writeAttributeRecordsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WRITE_HANDSHAKE_PARAM_COMMAND_ID, "ub", partitionedClusterId, writeAttributeRecords, \
+ writeAttributeRecordsLen);
+
+/** @brief Command description for ImageNotify
+ *
+ * Command: ImageNotify
+ * @param payloadType ENUM8
+ * @param queryJitter INT8U
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param newFileVersion INT32U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterImageNotify(payloadType, queryJitter, manufacturerId, imageType, newFileVersion) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IMAGE_NOTIFY_COMMAND_ID, "uuuuu", payloadType, queryJitter, manufacturerId, imageType, \
+ newFileVersion);
+
+/** @brief Command description for QueryNextImageRequest
+ *
+ * Command: QueryNextImageRequest
+ * @param fieldControl INT8U
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param currentFileVersion INT32U
+ * @param hardwareVersion INT16U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterQueryNextImageRequest(fieldControl, manufacturerId, imageType, currentFileVersion, hardwareVersion) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUERY_NEXT_IMAGE_REQUEST_COMMAND_ID, "uuuuu", fieldControl, manufacturerId, imageType, \
+ currentFileVersion, hardwareVersion);
+
+/** @brief Command description for QueryNextImageResponse
+ *
+ * Command: QueryNextImageResponse
+ * @param status Status
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param imageSize INT32U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterQueryNextImageResponse(status, manufacturerId, imageType, fileVersion, imageSize) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUERY_NEXT_IMAGE_RESPONSE_COMMAND_ID, "uuuuu", status, manufacturerId, imageType, \
+ fileVersion, imageSize);
+
+/** @brief Command description for ImageBlockRequest
+ *
+ * Command: ImageBlockRequest
+ * @param fieldControl INT8U
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param fileOffset INT32U
+ * @param maxDataSize INT8U
+ * @param requestNodeAddress IEEE_ADDRESS
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterImageBlockRequest(fieldControl, manufacturerId, imageType, fileVersion, fileOffset, maxDataSize, \
+ requestNodeAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IMAGE_BLOCK_REQUEST_COMMAND_ID, "uuuuuuu", fieldControl, manufacturerId, imageType, \
+ fileVersion, fileOffset, maxDataSize, requestNodeAddress);
+
+/** @brief Command description for ImagePageRequest
+ *
+ * Command: ImagePageRequest
+ * @param fieldControl INT8U
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param fileOffset INT32U
+ * @param maxDataSize INT8U
+ * @param pageSize INT16U
+ * @param responseSpacing INT16U
+ * @param requestNodeAddress IEEE_ADDRESS
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterImagePageRequest(fieldControl, manufacturerId, imageType, fileVersion, fileOffset, maxDataSize, \
+ pageSize, responseSpacing, requestNodeAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IMAGE_PAGE_REQUEST_COMMAND_ID, "uuuuuuuuu", fieldControl, manufacturerId, imageType, \
+ fileVersion, fileOffset, maxDataSize, pageSize, responseSpacing, requestNodeAddress);
+
+/** @brief Command description for ImageBlockResponse
+ *
+ * Command: ImageBlockResponse
+ * @param status Status
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param fileOffset INT32U
+ * @param dataSize INT8U
+ * @param imageData INT8U []
+ * @param imageDataLen int
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterImageBlockResponse(status, manufacturerId, imageType, fileVersion, fileOffset, dataSize, imageData, \
+ imageDataLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IMAGE_BLOCK_RESPONSE_COMMAND_ID, "uuuuuub", status, manufacturerId, imageType, fileVersion, \
+ fileOffset, dataSize, imageData, imageDataLen);
+
+/** @brief Command description for UpgradeEndRequest
+ *
+ * Command: UpgradeEndRequest
+ * @param status Status
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterUpgradeEndRequest(status, manufacturerId, imageType, fileVersion) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UPGRADE_END_REQUEST_COMMAND_ID, "uuuu", status, manufacturerId, imageType, fileVersion);
+
+/** @brief Command description for UpgradeEndResponse
+ *
+ * Command: UpgradeEndResponse
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param currentTime UTC_TIME
+ * @param upgradeTime UTC_TIME
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterUpgradeEndResponse(manufacturerId, imageType, fileVersion, currentTime, upgradeTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UPGRADE_END_RESPONSE_COMMAND_ID, "uuuuu", manufacturerId, imageType, fileVersion, \
+ currentTime, upgradeTime);
+
+/** @brief Command description for QuerySpecificFileRequest
+ *
+ * Command: QuerySpecificFileRequest
+ * @param requestNodeAddress IEEE_ADDRESS
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param currentZigbeeStackVersion INT16U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterQuerySpecificFileRequest(requestNodeAddress, manufacturerId, imageType, fileVersion, \
+ currentZigbeeStackVersion) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUERY_SPECIFIC_FILE_REQUEST_COMMAND_ID, "uuuuu", requestNodeAddress, manufacturerId, \
+ imageType, fileVersion, currentZigbeeStackVersion);
+
+/** @brief Command description for QuerySpecificFileResponse
+ *
+ * Command: QuerySpecificFileResponse
+ * @param status Status
+ * @param manufacturerId INT16U
+ * @param imageType INT16U
+ * @param fileVersion INT32U
+ * @param imageSize INT32U
+ */
+#define emberAfFillCommandOver \
+ the Air BootloadingClusterQuerySpecificFileResponse(status, manufacturerId, imageType, fileVersion, imageSize) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUERY_SPECIFIC_FILE_RESPONSE_COMMAND_ID, "uuuuu", status, manufacturerId, imageType, \
+ fileVersion, imageSize);
+
+/** @brief Command description for PowerProfileRequest
+ *
+ * Command: PowerProfileRequest
+ * @param powerProfileId INT8U
+ * @param totalProfileNum INT8U
+ * @param powerProfileId INT8U
+ * @param numOfTransferredPhases INT8U
+ * @param transferredPhases TransferredPhase []
+ * @param transferredPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileRequest(powerProfileId, totalProfileNum, powerProfileId, numOfTransferredPhases, transferredPhases, \
+ transferredPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_POWER_PROFILE_REQUEST_COMMAND_ID, "uuuub", powerProfileId, totalProfileNum, powerProfileId, \
+ numOfTransferredPhases, transferredPhases, transferredPhasesLen);
+
+/** @brief Command description for PowerProfileStateRequest
+ *
+ * Command: PowerProfileStateRequest
+ * @param totalProfileNum INT8U
+ * @param powerProfileId INT8U
+ * @param numOfTransferredPhases INT8U
+ * @param transferredPhases TransferredPhase []
+ * @param transferredPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileStateRequest(totalProfileNum, powerProfileId, numOfTransferredPhases, transferredPhases, \
+ transferredPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_POWER_PROFILE_STATE_REQUEST_COMMAND_ID, "uuub", totalProfileNum, powerProfileId, \
+ numOfTransferredPhases, transferredPhases, transferredPhasesLen);
+
+/** @brief Command description for GetPowerProfilePriceResponse
+ *
+ * Command: GetPowerProfilePriceResponse
+ * @param powerProfileId INT8U
+ * @param powerProfileCount INT8U
+ * @param currency INT16U
+ * @param powerProfileRecords PowerProfileRecord []
+ * @param powerProfileRecordsLen int
+ * @param price INT32U
+ * @param priceTrailingDigit INT8U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetPowerProfilePriceResponse(powerProfileId, powerProfileCount, currency, powerProfileRecords, \
+ powerProfileRecordsLen, price, priceTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_POWER_PROFILE_PRICE_RESPONSE_COMMAND_ID, "uuubuu", powerProfileId, powerProfileCount, \
+ currency, powerProfileRecords, powerProfileRecordsLen, price, priceTrailingDigit);
+
+/** @brief Command description for GetOverallSchedulePriceResponse
+ *
+ * Command: GetOverallSchedulePriceResponse
+ * @param currency INT16U
+ * @param powerProfileId INT8U
+ * @param price INT32U
+ * @param priceTrailingDigit INT8U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetOverallSchedulePriceResponse(currency, powerProfileId, price, priceTrailingDigit) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GET_OVERALL_SCHEDULE_PRICE_RESPONSE_COMMAND_ID, "uuuu", currency, powerProfileId, price, priceTrailingDigit);
+
+/** @brief Command description for EnergyPhasesScheduleNotification
+ *
+ * Command: EnergyPhasesScheduleNotification
+ * @param powerProfileId INT8U
+ * @param powerProfileCount INT8U
+ * @param numOfScheduledPhases INT8U
+ * @param powerProfileRecords PowerProfileRecord []
+ * @param powerProfileRecordsLen int
+ * @param scheduledPhases ScheduledPhase []
+ * @param scheduledPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterEnergyPhasesScheduleNotification(powerProfileId, powerProfileCount, numOfScheduledPhases, powerProfileRecords, \
+ powerProfileRecordsLen, scheduledPhases, scheduledPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENERGY_PHASES_SCHEDULE_NOTIFICATION_COMMAND_ID, "uuubb", powerProfileId, powerProfileCount, \
+ numOfScheduledPhases, powerProfileRecords, powerProfileRecordsLen, scheduledPhases, \
+ scheduledPhasesLen);
+
+/** @brief Command description for GetOverallSchedulePrice
+ *
+ * Command: GetOverallSchedulePrice
+ * @param powerProfileId INT8U
+ * @param numOfScheduledPhases INT8U
+ * @param scheduledPhases ScheduledPhase []
+ * @param scheduledPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetOverallSchedulePrice(powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_OVERALL_SCHEDULE_PRICE_COMMAND_ID, "uub", powerProfileId, numOfScheduledPhases, \
+ scheduledPhases, scheduledPhasesLen);
+
+/** @brief Command description for PowerProfileScheduleConstraintsRequest
+ *
+ * Command: PowerProfileScheduleConstraintsRequest
+ * @param powerProfileId INT8U
+ * @param powerProfileId INT8U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileScheduleConstraintsRequest(powerProfileId, powerProfileId) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_REQUEST_COMMAND_ID, "uu", powerProfileId, powerProfileId);
+
+/** @brief Command description for EnergyPhasesScheduleStateRequest
+ *
+ * Command: EnergyPhasesScheduleStateRequest
+ * @param powerProfileId INT8U
+ * @param powerProfileId INT8U
+ * @param numOfScheduledPhases INT8U
+ * @param scheduledPhases ScheduledPhase []
+ * @param scheduledPhasesLen int
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterEnergyPhasesScheduleStateRequest(powerProfileId, powerProfileId, numOfScheduledPhases, scheduledPhases, \
+ scheduledPhasesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENERGY_PHASES_SCHEDULE_STATE_REQUEST_COMMAND_ID, "uuub", powerProfileId, powerProfileId, \
+ numOfScheduledPhases, scheduledPhases, scheduledPhasesLen);
+
+/** @brief Command description for GetPowerProfilePriceExtendedResponse
+ *
+ * Command: GetPowerProfilePriceExtendedResponse
+ * @param powerProfileId INT8U
+ * @param powerProfileId INT8U
+ * @param currency INT16U
+ * @param numOfScheduledPhases INT8U
+ * @param price INT32U
+ * @param scheduledPhases ScheduledPhase []
+ * @param scheduledPhasesLen int
+ * @param priceTrailingDigit INT8U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetPowerProfilePriceExtendedResponse(powerProfileId, powerProfileId, currency, numOfScheduledPhases, price, \
+ scheduledPhases, scheduledPhasesLen, priceTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_RESPONSE_COMMAND_ID, "uuuuubu", powerProfileId, \
+ powerProfileId, currency, numOfScheduledPhases, price, scheduledPhases, scheduledPhasesLen, \
+ priceTrailingDigit);
+
+/** @brief Command description for PowerProfileScheduleConstraintsNotification
+ *
+ * Command: PowerProfileScheduleConstraintsNotification
+ * @param powerProfileId INT8U
+ * @param startAfter INT16U
+ * @param stopBefore INT16U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileScheduleConstraintsNotification(powerProfileId, startAfter, stopBefore) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_NOTIFICATION_COMMAND_ID, "uuu", powerProfileId, startAfter, stopBefore);
+
+/** @brief Command description for PowerProfileScheduleConstraintsResponse
+ *
+ * Command: PowerProfileScheduleConstraintsResponse
+ * @param powerProfileId INT8U
+ * @param startAfter INT16U
+ * @param stopBefore INT16U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterPowerProfileScheduleConstraintsResponse(powerProfileId, startAfter, stopBefore) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_RESPONSE_COMMAND_ID, "uuu", powerProfileId, startAfter, stopBefore);
+
+/** @brief Command description for GetPowerProfilePriceExtended
+ *
+ * Command: GetPowerProfilePriceExtended
+ * @param options BITMAP8
+ * @param powerProfileId INT8U
+ * @param powerProfileStartTime INT16U
+ */
+#define emberAfFillCommandPower \
+ ProfileClusterGetPowerProfilePriceExtended(options, powerProfileId, powerProfileStartTime) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_COMMAND_ID, "uuu", options, powerProfileId, powerProfileStartTime);
+
+/** @brief Command description for ExecutionOfACommand
+ *
+ * Command: ExecutionOfACommand
+ * @param commandId CommandIdentification
+ * @param applianceStatus ApplianceStatus
+ * @param remoteEnableFlagsAndDeviceStatus2 RemoteEnableFlagsAndDeviceStatus2
+ * @param applianceStatus2 INT24U
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterExecutionOfACommand(commandId, applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EXECUTION_OF_A_COMMAND_COMMAND_ID, "uuuu", commandId, applianceStatus, \
+ remoteEnableFlagsAndDeviceStatus2, applianceStatus2);
+
+/** @brief Command description for SignalState
+ *
+ * Command: SignalState
+ * @param applianceStatus ApplianceStatus
+ * @param remoteEnableFlagsAndDeviceStatus2 RemoteEnableFlagsAndDeviceStatus2
+ * @param applianceStatus2 INT24U
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterSignalState(applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_SIGNAL_STATE_COMMAND_ID, "uuu", applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2);
+
+/** @brief Command description for WriteFunctions
+ *
+ * Command: WriteFunctions
+ * @param functionId INT16U
+ * @param functionDataType ENUM8
+ * @param functionData INT8U []
+ * @param functionDataLen int
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterWriteFunctions(functionId, functionDataType, functionData, functionDataLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_WRITE_FUNCTIONS_COMMAND_ID, "uub", functionId, functionDataType, functionData, functionDataLen);
+
+/** @brief Command description for OverloadPauseResume
+ *
+ * Command: OverloadPauseResume
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterOverloadPauseResume() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OVERLOAD_PAUSE_RESUME_COMMAND_ID, "", );
+
+/** @brief Command description for OverloadPause
+ *
+ * Command: OverloadPause
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterOverloadPause() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OVERLOAD_PAUSE_COMMAND_ID, "", );
+
+/** @brief Command description for OverloadWarning
+ *
+ * Command: OverloadWarning
+ * @param warningEvent WarningEvent
+ */
+#define emberAfFillCommandAppliance \
+ ControlClusterOverloadWarning(warningEvent) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_OVERLOAD_WARNING_COMMAND_ID, "u", warningEvent);
+
+/** @brief Command description for CheckIn
+ *
+ * Command: CheckIn
+ * @param startFastPolling BOOLEAN
+ * @param fastPollTimeout INT16U
+ */
+#define emberAfFillCommandPoll \
+ ControlClusterCheckIn(startFastPolling, fastPollTimeout) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CHECK_IN_COMMAND_ID, "uu", startFastPolling, fastPollTimeout);
+
+/** @brief Command description for FastPollStop
+ *
+ * Command: FastPollStop
+ */
+#define emberAfFillCommandPoll \
+ ControlClusterFastPollStop() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_FAST_POLL_STOP_COMMAND_ID, "", );
+
+/** @brief Command description for SetLongPollInterval
+ *
+ * Command: SetLongPollInterval
+ * @param newLongPollInterval INT32U
+ */
+#define emberAfFillCommandPoll \
+ ControlClusterSetLongPollInterval(newLongPollInterval) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_LONG_POLL_INTERVAL_COMMAND_ID, "u", newLongPollInterval);
+
+/** @brief Command description for SetShortPollInterval
+ *
+ * Command: SetShortPollInterval
+ * @param newShortPollInterval INT16U
+ */
+#define emberAfFillCommandPoll \
+ ControlClusterSetShortPollInterval(newShortPollInterval) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_SHORT_POLL_INTERVAL_COMMAND_ID, "u", newShortPollInterval);
+
+/** @brief Command description for GpNotification
+ *
+ * Command: GpNotification
+ * @param options GpNotificationOption
+ * @param options GpNotificationResponseOption
+ * @param gpdSrcId INT32U
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param gpdIeee IEEE_ADDRESS
+ * @param gpdEndpoint INT8U
+ * @param endpoint INT8U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdCommandId INT8U
+ * @param gpdCommandPayload OCTET_STRING
+ * @param gppShortAddress INT16U
+ * @param gppDistance INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpNotification(options, options, gpdSrcId, gpdSrcId, gpdIeee, gpdIeee, gpdEndpoint, endpoint, \
+ gpdSecurityFrameCounter, gpdSecurityFrameCounter, gpdCommandId, gpdCommandPayload, gppShortAddress, \
+ gppDistance) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_NOTIFICATION_COMMAND_ID, "uuuuuuuuuuuuuu", options, options, gpdSrcId, gpdSrcId, gpdIeee, \
+ gpdIeee, gpdEndpoint, endpoint, gpdSecurityFrameCounter, gpdSecurityFrameCounter, gpdCommandId, \
+ gpdCommandPayload, gppShortAddress, gppDistance);
+
+/** @brief Command description for GpPairingSearch
+ *
+ * Command: GpPairingSearch
+ * @param options GpPairingSearchOption
+ * @param options GpPairingOption
+ * @param gpdSrcId INT32U
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param endpoint INT8U
+ * @param sinkIeeeAddress IEEE_ADDRESS
+ * @param sinkNwkAddress INT16U
+ * @param sinkGroupId INT16U
+ * @param deviceId GpDeviceId
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdKey SECURITY_KEY
+ * @param assignedAlias INT16U
+ * @param groupcastRadius INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpPairingSearch(options, options, gpdSrcId, gpdSrcId, gpdIeee, gpdIeee, endpoint, endpoint, sinkIeeeAddress, \
+ sinkNwkAddress, sinkGroupId, deviceId, gpdSecurityFrameCounter, gpdKey, assignedAlias, \
+ groupcastRadius) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_PAIRING_SEARCH_COMMAND_ID, "uuuuuuuuuuuuuuuu", options, options, gpdSrcId, gpdSrcId, \
+ gpdIeee, gpdIeee, endpoint, endpoint, sinkIeeeAddress, sinkNwkAddress, sinkGroupId, deviceId, \
+ gpdSecurityFrameCounter, gpdKey, assignedAlias, groupcastRadius);
+
+/** @brief Command description for GpProxyCommissioningMode
+ *
+ * Command: GpProxyCommissioningMode
+ * @param options GpProxyCommissioningModeOption
+ * @param commissioningWindow INT16U
+ * @param channel INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpProxyCommissioningMode(options, commissioningWindow, channel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_PROXY_COMMISSIONING_MODE_COMMAND_ID, "uuu", options, commissioningWindow, channel);
+
+/** @brief Command description for GpTunnelingStop
+ *
+ * Command: GpTunnelingStop
+ * @param options GpTunnelingStopOption
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gppShortAddress INT16U
+ * @param gppDistance INT8S
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpTunnelingStop(options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter, gppShortAddress, gppDistance) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_TUNNELING_STOP_COMMAND_ID, "uuuuuuu", options, gpdSrcId, gpdIeee, endpoint, \
+ gpdSecurityFrameCounter, gppShortAddress, gppDistance);
+
+/** @brief Command description for GpCommissioningNotification
+ *
+ * Command: GpCommissioningNotification
+ * @param options GpCommissioningNotificationOption
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdCommandId INT8U
+ * @param gpdCommandPayload OCTET_STRING
+ * @param gppShortAddress INT16U
+ * @param gppLink INT8U
+ * @param mic INT32U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpCommissioningNotification(options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter, gpdCommandId, \
+ gpdCommandPayload, gppShortAddress, gppLink, mic) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_COMMISSIONING_NOTIFICATION_COMMAND_ID, "uuuuuuuuuu", options, gpdSrcId, gpdIeee, \
+ endpoint, gpdSecurityFrameCounter, gpdCommandId, gpdCommandPayload, gppShortAddress, gppLink, \
+ mic);
+
+/** @brief Command description for GpSinkCommissioningMode
+ *
+ * Command: GpSinkCommissioningMode
+ * @param options GpSinkCommissioningModeOptions
+ * @param gpmAddrForSecurity INT16U
+ * @param gpmAddrForPairing INT16U
+ * @param sinkEndpoint INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpSinkCommissioningMode(options, gpmAddrForSecurity, gpmAddrForPairing, sinkEndpoint) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GP_SINK_COMMISSIONING_MODE_COMMAND_ID, "uuuu", options, gpmAddrForSecurity, gpmAddrForPairing, sinkEndpoint);
+
+/** @brief Command description for GpResponse
+ *
+ * Command: GpResponse
+ * @param options GpResponseOption
+ * @param tempMasterShortAddress INT16U
+ * @param tempMasterTxChannel BITMAP8
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param gpdCommandId INT8U
+ * @param gpdCommandPayload OCTET_STRING
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpResponse(options, tempMasterShortAddress, tempMasterTxChannel, gpdSrcId, gpdIeee, endpoint, gpdCommandId, \
+ gpdCommandPayload) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_RESPONSE_COMMAND_ID, "uuuuuuuu", options, tempMasterShortAddress, tempMasterTxChannel, \
+ gpdSrcId, gpdIeee, endpoint, gpdCommandId, gpdCommandPayload);
+
+/** @brief Command description for GpTranslationTableUpdate
+ *
+ * Command: GpTranslationTableUpdate
+ * @param options GpTranslationTableUpdateOption
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param translations GpTranslationTableUpdateTranslation []
+ * @param translationsLen int
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpTranslationTableUpdate(options, gpdSrcId, gpdIeee, endpoint, translations, translationsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_TRANSLATION_TABLE_UPDATE_COMMAND_ID, "uuuub", options, gpdSrcId, gpdIeee, endpoint, \
+ translations, translationsLen);
+
+/** @brief Command description for GpTranslationTableRequest
+ *
+ * Command: GpTranslationTableRequest
+ * @param startIndex INT8U
+ * @param status GpTranslationTableResponseStatus
+ * @param options GpTranslationTableResponseOption
+ * @param totalNumberOfEntries INT8U
+ * @param startIndex INT8U
+ * @param entriesCount INT8U
+ * @param translationTableList INT8U []
+ * @param translationTableListLen int
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpTranslationTableRequest(startIndex, status, options, totalNumberOfEntries, startIndex, entriesCount, \
+ translationTableList, translationTableListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_TRANSLATION_TABLE_REQUEST_COMMAND_ID, "uuuuuub", startIndex, status, options, \
+ totalNumberOfEntries, startIndex, entriesCount, translationTableList, translationTableListLen);
+
+/** @brief Command description for GpPairingConfiguration
+ *
+ * Command: GpPairingConfiguration
+ * @param actions GpPairingConfigurationActions
+ * @param options GpPairingConfigurationOption
+ * @param gpdSrcId INT32U
+ * @param gpdIeee IEEE_ADDRESS
+ * @param endpoint INT8U
+ * @param deviceId INT8U
+ * @param groupListCount INT8U
+ * @param groupList GpPairingConfigurationGroupList []
+ * @param groupListLen int
+ * @param gpdAssignedAlias INT16U
+ * @param groupcastRadius INT8U
+ * @param securityOptions INT8U
+ * @param gpdSecurityFrameCounter INT32U
+ * @param gpdSecurityKey SECURITY_KEY
+ * @param numberOfPairedEndpoints INT8U
+ * @param pairedEndpoints INT8U []
+ * @param pairedEndpointsLen int
+ * @param applicationInformation GpApplicationInformation
+ * @param manufacturerId INT16U
+ * @param modeId INT16U
+ * @param numberOfGpdCommands INT8U
+ * @param gpdCommandIdList INT8U []
+ * @param gpdCommandIdListLen int
+ * @param clusterIdListCount INT8U
+ * @param clusterListServer INT16U []
+ * @param clusterListServerLen int
+ * @param clusterListClient INT16U []
+ * @param clusterListClientLen int
+ * @param switchInformationLength INT8U
+ * @param switchConfiguration INT8U
+ * @param currentContactStatus INT8U
+ * @param totalNumberOfReports INT8U
+ * @param numberOfReports INT8U
+ * @param reportDescriptor INT8U []
+ * @param reportDescriptorLen int
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpPairingConfiguration( \
+ actions, options, gpdSrcId, gpdIeee, endpoint, deviceId, groupListCount, groupList, groupListLen, gpdAssignedAlias, \
+ groupcastRadius, securityOptions, gpdSecurityFrameCounter, gpdSecurityKey, numberOfPairedEndpoints, pairedEndpoints, \
+ pairedEndpointsLen, applicationInformation, manufacturerId, modeId, numberOfGpdCommands, gpdCommandIdList, \
+ gpdCommandIdListLen, clusterIdListCount, clusterListServer, clusterListServerLen, clusterListClient, clusterListClientLen, \
+ switchInformationLength, switchConfiguration, currentContactStatus, totalNumberOfReports, numberOfReports, \
+ reportDescriptor, reportDescriptorLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_PAIRING_CONFIGURATION_COMMAND_ID, "uuuuuuubuuuuuubuuuububbuuuuub", actions, options, \
+ gpdSrcId, gpdIeee, endpoint, deviceId, groupListCount, groupList, groupListLen, \
+ gpdAssignedAlias, groupcastRadius, securityOptions, gpdSecurityFrameCounter, gpdSecurityKey, \
+ numberOfPairedEndpoints, pairedEndpoints, pairedEndpointsLen, applicationInformation, \
+ manufacturerId, modeId, numberOfGpdCommands, gpdCommandIdList, gpdCommandIdListLen, \
+ clusterIdListCount, clusterListServer, clusterListServerLen, clusterListClient, \
+ clusterListClientLen, switchInformationLength, switchConfiguration, currentContactStatus, \
+ totalNumberOfReports, numberOfReports, reportDescriptor, reportDescriptorLen);
+
+/** @brief Command description for GpSinkTableRequest
+ *
+ * Command: GpSinkTableRequest
+ * @param options GpSinkTableRequestOptions
+ * @param status ENUM8
+ * @param gpdSrcId INT32U
+ * @param totalNumberofNonEmptySinkTableEntries INT8U
+ * @param gpdIeee INT64U
+ * @param startIndex INT8U
+ * @param endpoint INT8U
+ * @param sinkTableEntriesCount INT8U
+ * @param index INT8U
+ * @param sinkTableEntries INT8U []
+ * @param sinkTableEntriesLen int
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpSinkTableRequest(options, status, gpdSrcId, totalNumberofNonEmptySinkTableEntries, gpdIeee, startIndex, \
+ endpoint, sinkTableEntriesCount, index, sinkTableEntries, sinkTableEntriesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_SINK_TABLE_REQUEST_COMMAND_ID, "uuuuuuuuub", options, status, gpdSrcId, \
+ totalNumberofNonEmptySinkTableEntries, gpdIeee, startIndex, endpoint, sinkTableEntriesCount, \
+ index, sinkTableEntries, sinkTableEntriesLen);
+
+/** @brief Command description for GpProxyTableResponse
+ *
+ * Command: GpProxyTableResponse
+ * @param status GpProxyTableResponseStatus
+ * @param options GpProxyTableRequestOptions
+ * @param totalNumberOfNonEmptyProxyTableEntries INT8U
+ * @param gpdSrcId INT32U
+ * @param startIndex INT8U
+ * @param gpdIeee INT64U
+ * @param entriesCount INT8U
+ * @param endpoint INT8U
+ * @param proxyTableEntries INT8U []
+ * @param proxyTableEntriesLen int
+ * @param index INT8U
+ */
+#define emberAfFillCommandGreen \
+ PowerClusterGpProxyTableResponse(status, options, totalNumberOfNonEmptyProxyTableEntries, gpdSrcId, startIndex, gpdIeee, \
+ entriesCount, endpoint, proxyTableEntries, proxyTableEntriesLen, index) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GP_PROXY_TABLE_RESPONSE_COMMAND_ID, "uuuuuuuubu", status, options, \
+ totalNumberOfNonEmptyProxyTableEntries, gpdSrcId, startIndex, gpdIeee, entriesCount, endpoint, \
+ proxyTableEntries, proxyTableEntriesLen, index);
+
+/** @brief Command description for LockDoor
+ *
+ * Command: LockDoor
+ * @param PIN CHAR_STRING
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterLockDoor(PIN, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LOCK_DOOR_COMMAND_ID, "uu", PIN, status);
+
+/** @brief Command description for UnlockDoor
+ *
+ * Command: UnlockDoor
+ * @param PIN CHAR_STRING
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterUnlockDoor(PIN, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNLOCK_DOOR_COMMAND_ID, "uu", PIN, status);
+
+/** @brief Command description for Toggle
+ *
+ * Command: Toggle
+ * @param pin CHAR_STRING
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterToggle(pin, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TOGGLE_COMMAND_ID, "uu", pin, status);
+
+/** @brief Command description for UnlockWithTimeout
+ *
+ * Command: UnlockWithTimeout
+ * @param timeoutInSeconds INT16U
+ * @param status INT8U
+ * @param pin CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterUnlockWithTimeout(timeoutInSeconds, status, pin) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID, "uuu", timeoutInSeconds, status, pin);
+
+/** @brief Command description for GetLogRecord
+ *
+ * Command: GetLogRecord
+ * @param logIndex INT16U
+ * @param logEntryId INT16U
+ * @param timestamp INT32U
+ * @param eventType ENUM8
+ * @param source INT8U
+ * @param eventIdOrAlarmCode INT8U
+ * @param userId INT16U
+ * @param pin CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetLogRecord(logIndex, logEntryId, timestamp, eventType, source, eventIdOrAlarmCode, userId, pin) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_LOG_RECORD_COMMAND_ID, "uuuuuuuu", logIndex, logEntryId, timestamp, eventType, source, \
+ eventIdOrAlarmCode, userId, pin);
+
+/** @brief Command description for SetPin
+ *
+ * Command: SetPin
+ * @param userId INT16U
+ * @param status DoorLockSetPinOrIdStatus
+ * @param userStatus DoorLockUserStatus
+ * @param userType DoorLockUserType
+ * @param pin CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetPin(userId, status, userStatus, userType, pin) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_PIN_COMMAND_ID, "uuuuu", userId, status, userStatus, userType, pin);
+
+/** @brief Command description for GetPin
+ *
+ * Command: GetPin
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param userStatus DoorLockUserStatus
+ * @param userType DoorLockUserType
+ * @param pin CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetPin(userId, userId, userStatus, userType, pin) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PIN_COMMAND_ID, "uuuuu", userId, userId, userStatus, userType, pin);
+
+/** @brief Command description for ClearPin
+ *
+ * Command: ClearPin
+ * @param userId INT16U
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearPin(userId, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_PIN_COMMAND_ID, "uu", userId, status);
+
+/** @brief Command description for ClearAllPins
+ *
+ * Command: ClearAllPins
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearAllPins(status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_ALL_PINS_COMMAND_ID, "u", status);
+
+/** @brief Command description for SetUserStatus
+ *
+ * Command: SetUserStatus
+ * @param userId INT16U
+ * @param status INT8U
+ * @param userStatus INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetUserStatus(userId, status, userStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_USER_STATUS_COMMAND_ID, "uuu", userId, status, userStatus);
+
+/** @brief Command description for GetUserStatus
+ *
+ * Command: GetUserStatus
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetUserStatus(userId, userId, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_USER_STATUS_COMMAND_ID, "uuu", userId, userId, status);
+
+/** @brief Command description for SetWeekdaySchedule
+ *
+ * Command: SetWeekdaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param userId INT16U
+ * @param daysMask DoorLockDayOfWeek
+ * @param startHour INT8U
+ * @param startMinute INT8U
+ * @param endHour INT8U
+ * @param endMinute INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetWeekdaySchedule(scheduleId, status, userId, daysMask, startHour, startMinute, endHour, endMinute) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_WEEKDAY_SCHEDULE_COMMAND_ID, "uuuuuuuu", scheduleId, status, userId, daysMask, \
+ startHour, startMinute, endHour, endMinute);
+
+/** @brief Command description for GetWeekdaySchedule
+ *
+ * Command: GetWeekdaySchedule
+ * @param scheduleId INT8U
+ * @param scheduleId INT8U
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param status INT8U
+ * @param daysMask INT8U
+ * @param startHour INT8U
+ * @param startMinute INT8U
+ * @param endHour INT8U
+ * @param endMinute INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetWeekdaySchedule(scheduleId, scheduleId, userId, userId, status, daysMask, startHour, startMinute, endHour, \
+ endMinute) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_WEEKDAY_SCHEDULE_COMMAND_ID, "uuuuuuuuuu", scheduleId, scheduleId, userId, userId, \
+ status, daysMask, startHour, startMinute, endHour, endMinute);
+
+/** @brief Command description for ClearWeekdaySchedule
+ *
+ * Command: ClearWeekdaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param userId INT16U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearWeekdaySchedule(scheduleId, status, userId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_WEEKDAY_SCHEDULE_COMMAND_ID, "uuu", scheduleId, status, userId);
+
+/** @brief Command description for SetYeardaySchedule
+ *
+ * Command: SetYeardaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param userId INT16U
+ * @param localStartTime INT32U
+ * @param localEndTime INT32U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetYeardaySchedule(scheduleId, status, userId, localStartTime, localEndTime) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_SET_YEARDAY_SCHEDULE_COMMAND_ID, "uuuuu", scheduleId, status, userId, localStartTime, localEndTime);
+
+/** @brief Command description for GetYeardaySchedule
+ *
+ * Command: GetYeardaySchedule
+ * @param scheduleId INT8U
+ * @param scheduleId INT8U
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param status INT8U
+ * @param localStartTime INT32U
+ * @param localEndTime INT32U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetYeardaySchedule(scheduleId, scheduleId, userId, userId, status, localStartTime, localEndTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_YEARDAY_SCHEDULE_COMMAND_ID, "uuuuuuu", scheduleId, scheduleId, userId, userId, status, \
+ localStartTime, localEndTime);
+
+/** @brief Command description for ClearYeardaySchedule
+ *
+ * Command: ClearYeardaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param userId INT16U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearYeardaySchedule(scheduleId, status, userId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_YEARDAY_SCHEDULE_COMMAND_ID, "uuu", scheduleId, status, userId);
+
+/** @brief Command description for SetHolidaySchedule
+ *
+ * Command: SetHolidaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param localStartTime INT32U
+ * @param localEndTime INT32U
+ * @param operatingModeDuringHoliday ENUM8
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetHolidaySchedule(scheduleId, status, localStartTime, localEndTime, operatingModeDuringHoliday) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_HOLIDAY_SCHEDULE_COMMAND_ID, "uuuuu", scheduleId, status, localStartTime, localEndTime, \
+ operatingModeDuringHoliday);
+
+/** @brief Command description for GetHolidaySchedule
+ *
+ * Command: GetHolidaySchedule
+ * @param scheduleId INT8U
+ * @param scheduleId INT8U
+ * @param status INT8U
+ * @param localStartTime INT32U
+ * @param localEndTime INT32U
+ * @param operatingModeDuringHoliday ENUM8
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetHolidaySchedule(scheduleId, scheduleId, status, localStartTime, localEndTime, operatingModeDuringHoliday) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_HOLIDAY_SCHEDULE_COMMAND_ID, "uuuuuu", scheduleId, scheduleId, status, localStartTime, \
+ localEndTime, operatingModeDuringHoliday);
+
+/** @brief Command description for ClearHolidaySchedule
+ *
+ * Command: ClearHolidaySchedule
+ * @param scheduleId INT8U
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearHolidaySchedule(scheduleId, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID, "uu", scheduleId, status);
+
+/** @brief Command description for SetUserType
+ *
+ * Command: SetUserType
+ * @param userId INT16U
+ * @param status INT8U
+ * @param userType DoorLockUserType
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetUserType(userId, status, userType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_USER_TYPE_COMMAND_ID, "uuu", userId, status, userType);
+
+/** @brief Command description for GetUserType
+ *
+ * Command: GetUserType
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param userType DoorLockUserType
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetUserType(userId, userId, userType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_USER_TYPE_COMMAND_ID, "uuu", userId, userId, userType);
+
+/** @brief Command description for SetRfid
+ *
+ * Command: SetRfid
+ * @param userId INT16U
+ * @param status DoorLockSetPinOrIdStatus
+ * @param userStatus DoorLockUserStatus
+ * @param userType DoorLockUserType
+ * @param id CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterSetRfid(userId, status, userStatus, userType, id) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_RFID_COMMAND_ID, "uuuuu", userId, status, userStatus, userType, id);
+
+/** @brief Command description for GetRfid
+ *
+ * Command: GetRfid
+ * @param userId INT16U
+ * @param userId INT16U
+ * @param userStatus DoorLockUserStatus
+ * @param userType DoorLockUserType
+ * @param rfid CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterGetRfid(userId, userId, userStatus, userType, rfid) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_RFID_COMMAND_ID, "uuuuu", userId, userId, userStatus, userType, rfid);
+
+/** @brief Command description for ClearRfid
+ *
+ * Command: ClearRfid
+ * @param userId INT16U
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearRfid(userId, status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_RFID_COMMAND_ID, "uu", userId, status);
+
+/** @brief Command description for ClearAllRfids
+ *
+ * Command: ClearAllRfids
+ * @param status INT8U
+ */
+#define emberAfFillCommandDoor \
+ LockClusterClearAllRfids(status) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_ALL_RFIDS_COMMAND_ID, "u", status);
+
+/** @brief Command description for OperationEventNotification
+ *
+ * Command: OperationEventNotification
+ * @param source INT8U
+ * @param eventCode DoorLockOperationEventCode
+ * @param userId INT16U
+ * @param pin CHAR_STRING
+ * @param timeStamp INT32U
+ * @param data CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterOperationEventNotification(source, eventCode, userId, pin, timeStamp, data) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_OPERATION_EVENT_NOTIFICATION_COMMAND_ID, "uuuuuu", source, eventCode, userId, pin, timeStamp, data);
+
+/** @brief Command description for ProgrammingEventNotification
+ *
+ * Command: ProgrammingEventNotification
+ * @param source INT8U
+ * @param eventCode DoorLockProgrammingEventCode
+ * @param userId INT16U
+ * @param pin CHAR_STRING
+ * @param userType DoorLockUserType
+ * @param userStatus DoorLockUserStatus
+ * @param timeStamp INT32U
+ * @param data CHAR_STRING
+ */
+#define emberAfFillCommandDoor \
+ LockClusterProgrammingEventNotification(source, eventCode, userId, pin, userType, userStatus, timeStamp, data) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PROGRAMMING_EVENT_NOTIFICATION_COMMAND_ID, "uuuuuuuu", source, eventCode, userId, pin, \
+ userType, userStatus, timeStamp, data);
+
+/** @brief Command description for WindowCoveringUpOpen
+ *
+ * Command: WindowCoveringUpOpen
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringUpOpen() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_UP_OPEN_COMMAND_ID, "", );
+
+/** @brief Command description for WindowCoveringDownClose
+ *
+ * Command: WindowCoveringDownClose
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringDownClose() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_DOWN_CLOSE_COMMAND_ID, "", );
+
+/** @brief Command description for WindowCoveringStop
+ *
+ * Command: WindowCoveringStop
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringStop() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_STOP_COMMAND_ID, "", );
+
+/** @brief Command description for WindowCoveringGoToLiftValue
+ *
+ * Command: WindowCoveringGoToLiftValue
+ * @param liftValue INT16U
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringGoToLiftValue(liftValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_GO_TO_LIFT_VALUE_COMMAND_ID, "u", liftValue);
+
+/** @brief Command description for WindowCoveringGoToLiftPercentage
+ *
+ * Command: WindowCoveringGoToLiftPercentage
+ * @param percentageLiftValue INT8U
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringGoToLiftPercentage(percentageLiftValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_GO_TO_LIFT_PERCENTAGE_COMMAND_ID, "u", percentageLiftValue);
+
+/** @brief Command description for WindowCoveringGoToTiltValue
+ *
+ * Command: WindowCoveringGoToTiltValue
+ * @param tiltValue INT16U
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringGoToTiltValue(tiltValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_GO_TO_TILT_VALUE_COMMAND_ID, "u", tiltValue);
+
+/** @brief Command description for WindowCoveringGoToTiltPercentage
+ *
+ * Command: WindowCoveringGoToTiltPercentage
+ * @param percentageTiltValue INT8U
+ */
+#define emberAfFillCommandWindow \
+ CoveringClusterWindowCoveringGoToTiltPercentage(percentageTiltValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WINDOW_COVERING_GO_TO_TILT_PERCENTAGE_COMMAND_ID, "u", percentageTiltValue);
+
+/** @brief Command description for BarrierControlGoToPercent
+ *
+ * Command: BarrierControlGoToPercent
+ * @param percentOpen INT8U
+ */
+#define emberAfFillCommandBarrier \
+ ControlClusterBarrierControlGoToPercent(percentOpen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID, "u", percentOpen);
+
+/** @brief Command description for BarrierControlStop
+ *
+ * Command: BarrierControlStop
+ */
+#define emberAfFillCommandBarrier \
+ ControlClusterBarrierControlStop() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BARRIER_CONTROL_STOP_COMMAND_ID, "", );
+
+/** @brief Command description for SetpointRaiseLower
+ *
+ * Command: SetpointRaiseLower
+ * @param mode SetpointAdjustMode
+ * @param numberOfTransitionsForSequence ENUM8
+ * @param amount INT8S
+ * @param dayOfWeekForSequence DayOfWeek
+ * @param modeForSequence ModeForSequence
+ * @param payload INT8U []
+ * @param payloadLen int
+ */
+#define emberAfFillCommandThermostatClusterSetpointRaiseLower(mode, numberOfTransitionsForSequence, amount, dayOfWeekForSequence, \
+ modeForSequence, payload, payloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SETPOINT_RAISE_LOWER_COMMAND_ID, "uuuuub", mode, numberOfTransitionsForSequence, amount, \
+ dayOfWeekForSequence, modeForSequence, payload, payloadLen);
+
+/** @brief Command description for SetWeeklySchedule
+ *
+ * Command: SetWeeklySchedule
+ * @param numberOfTransitionsForSequence ENUM8
+ * @param timeOfDay INT16U
+ * @param dayOfWeekForSequence DayOfWeek
+ * @param relayStatus BITMAP16
+ * @param modeForSequence ModeForSequence
+ * @param localTemperature INT16S
+ * @param payload INT8U []
+ * @param payloadLen int
+ * @param humidityInPercentage INT8U
+ * @param setpoint INT16S
+ * @param unreadEntries INT16U
+ */
+#define emberAfFillCommandThermostatClusterSetWeeklySchedule(numberOfTransitionsForSequence, timeOfDay, dayOfWeekForSequence, \
+ relayStatus, modeForSequence, localTemperature, payload, payloadLen, \
+ humidityInPercentage, setpoint, unreadEntries) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_WEEKLY_SCHEDULE_COMMAND_ID, "uuuuuubuuu", numberOfTransitionsForSequence, timeOfDay, \
+ dayOfWeekForSequence, relayStatus, modeForSequence, localTemperature, payload, payloadLen, \
+ humidityInPercentage, setpoint, unreadEntries);
+
+/** @brief Command description for GetWeeklySchedule
+ *
+ * Command: GetWeeklySchedule
+ * @param daysToReturn DayOfWeek
+ * @param modeToReturn ModeForSequence
+ */
+#define emberAfFillCommandThermostatClusterGetWeeklySchedule(daysToReturn, modeToReturn) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_WEEKLY_SCHEDULE_COMMAND_ID, "uu", daysToReturn, modeToReturn);
+
+/** @brief Command description for ClearWeeklySchedule
+ *
+ * Command: ClearWeeklySchedule
+ */
+#define emberAfFillCommandThermostatClusterClearWeeklySchedule() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_WEEKLY_SCHEDULE_COMMAND_ID, "", );
+
+/** @brief Command description for GetRelayStatusLog
+ *
+ * Command: GetRelayStatusLog
+ */
+#define emberAfFillCommandThermostatClusterGetRelayStatusLog() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_RELAY_STATUS_LOG_COMMAND_ID, "", );
+
+/** @brief Command description for MoveToHue
+ *
+ * Command: MoveToHue
+ * @param hue INT8U
+ * @param direction HueDirection
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToHue(hue, direction, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MOVE_TO_HUE_COMMAND_ID, "uuuuu", hue, direction, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveHue
+ *
+ * Command: MoveHue
+ * @param moveMode HueMoveMode
+ * @param rate INT8U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveHue(moveMode, rate, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_HUE_COMMAND_ID, "uuuu", moveMode, rate, optionsMask, optionsOverride);
+
+/** @brief Command description for StepHue
+ *
+ * Command: StepHue
+ * @param stepMode HueStepMode
+ * @param stepSize INT8U
+ * @param transitionTime INT8U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStepHue(stepMode, stepSize, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_STEP_HUE_COMMAND_ID, "uuuuu", stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveToSaturation
+ *
+ * Command: MoveToSaturation
+ * @param saturation INT8U
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToSaturation(saturation, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MOVE_TO_SATURATION_COMMAND_ID, "uuuu", saturation, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveSaturation
+ *
+ * Command: MoveSaturation
+ * @param moveMode SaturationMoveMode
+ * @param rate INT8U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveSaturation(moveMode, rate, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_SATURATION_COMMAND_ID, "uuuu", moveMode, rate, optionsMask, optionsOverride);
+
+/** @brief Command description for StepSaturation
+ *
+ * Command: StepSaturation
+ * @param stepMode SaturationStepMode
+ * @param stepSize INT8U
+ * @param transitionTime INT8U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStepSaturation(stepMode, stepSize, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_STEP_SATURATION_COMMAND_ID, "uuuuu", stepMode, stepSize, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveToHueAndSaturation
+ *
+ * Command: MoveToHueAndSaturation
+ * @param hue INT8U
+ * @param saturation INT8U
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToHueAndSaturation(hue, saturation, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID, "uuuuu", hue, saturation, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveToColor
+ *
+ * Command: MoveToColor
+ * @param colorX INT16U
+ * @param colorY INT16U
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToColor(colorX, colorY, transitionTime, optionsMask, optionsOverride) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MOVE_TO_COLOR_COMMAND_ID, "uuuuu", colorX, colorY, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveColor
+ *
+ * Command: MoveColor
+ * @param rateX INT16S
+ * @param rateY INT16S
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveColor(rateX, rateY, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_COLOR_COMMAND_ID, "uuuu", rateX, rateY, optionsMask, optionsOverride);
+
+/** @brief Command description for StepColor
+ *
+ * Command: StepColor
+ * @param stepX INT16S
+ * @param stepY INT16S
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStepColor(stepX, stepY, transitionTime, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STEP_COLOR_COMMAND_ID, "uuuuu", stepX, stepY, transitionTime, optionsMask, optionsOverride);
+
+/** @brief Command description for MoveToColorTemperature
+ *
+ * Command: MoveToColorTemperature
+ * @param colorTemperature INT16U
+ * @param transitionTime INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveToColorTemperature(colorTemperature, transitionTime, optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID, "uuuu", colorTemperature, transitionTime, optionsMask, \
+ optionsOverride);
+
+/** @brief Command description for EnhancedMoveToHue
+ *
+ * Command: EnhancedMoveToHue
+ * @param enhancedHue INT16U
+ * @param direction HueDirection
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterEnhancedMoveToHue(enhancedHue, direction, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_MOVE_TO_HUE_COMMAND_ID, "uuu", enhancedHue, direction, transitionTime);
+
+/** @brief Command description for EnhancedMoveHue
+ *
+ * Command: EnhancedMoveHue
+ * @param moveMode HueMoveMode
+ * @param rate INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterEnhancedMoveHue(moveMode, rate) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_MOVE_HUE_COMMAND_ID, "uu", moveMode, rate);
+
+/** @brief Command description for EnhancedStepHue
+ *
+ * Command: EnhancedStepHue
+ * @param stepMode HueStepMode
+ * @param stepSize INT16U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterEnhancedStepHue(stepMode, stepSize, transitionTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENHANCED_STEP_HUE_COMMAND_ID, "uuu", stepMode, stepSize, transitionTime);
+
+/** @brief Command description for EnhancedMoveToHueAndSaturation
+ *
+ * Command: EnhancedMoveToHueAndSaturation
+ * @param enhancedHue INT16U
+ * @param saturation INT8U
+ * @param transitionTime INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterEnhancedMoveToHueAndSaturation(enhancedHue, saturation, transitionTime) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_ENHANCED_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID, "uuu", enhancedHue, saturation, transitionTime);
+
+/** @brief Command description for ColorLoopSet
+ *
+ * Command: ColorLoopSet
+ * @param updateFlags ColorLoopUpdateFlags
+ * @param action ColorLoopAction
+ * @param direction ColorLoopDirection
+ * @param time INT16U
+ * @param startHue INT16U
+ */
+#define emberAfFillCommandColor \
+ ControlClusterColorLoopSet(updateFlags, action, direction, time, startHue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_COLOR_LOOP_SET_COMMAND_ID, "uuuuu", updateFlags, action, direction, time, startHue);
+
+/** @brief Command description for StopMoveStep
+ *
+ * Command: StopMoveStep
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStopMoveStep(optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STOP_MOVE_STEP_COMMAND_ID, "uu", optionsMask, optionsOverride);
+
+/** @brief Command description for MoveColorTemperature
+ *
+ * Command: MoveColorTemperature
+ * @param moveMode HueMoveMode
+ * @param rate INT16U
+ * @param colorTemperatureMinimum INT16U
+ * @param colorTemperatureMaximum INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterMoveColorTemperature(moveMode, rate, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, \
+ optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID, "uuuuuu", moveMode, rate, colorTemperatureMinimum, \
+ colorTemperatureMaximum, optionsMask, optionsOverride);
+
+/** @brief Command description for StepColorTemperature
+ *
+ * Command: StepColorTemperature
+ * @param stepMode HueStepMode
+ * @param stepSize INT16U
+ * @param transitionTime INT16U
+ * @param colorTemperatureMinimum INT16U
+ * @param colorTemperatureMaximum INT16U
+ * @param optionsMask BITMAP8
+ * @param optionsOverride BITMAP8
+ */
+#define emberAfFillCommandColor \
+ ControlClusterStepColorTemperature(stepMode, stepSize, transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, \
+ optionsMask, optionsOverride) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID, "uuuuuuu", stepMode, stepSize, transitionTime, \
+ colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride);
+
+/** @brief Command description for ZoneEnrollResponse
+ *
+ * Command: ZoneEnrollResponse
+ * @param enrollResponseCode IasEnrollResponseCode
+ * @param zoneStatus IasZoneStatus
+ * @param zoneId INT8U
+ * @param extendedStatus BITMAP8
+ * @param zoneId INT8U
+ * @param delay INT16U
+ */
+#define emberAfFillCommandIAS \
+ ZoneClusterZoneEnrollResponse(enrollResponseCode, zoneStatus, zoneId, extendedStatus, zoneId, delay) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID, "uuuuuu", enrollResponseCode, zoneStatus, zoneId, \
+ extendedStatus, zoneId, delay);
+
+/** @brief Command description for InitiateNormalOperationMode
+ *
+ * Command: InitiateNormalOperationMode
+ * @param zoneType IasZoneType
+ * @param manufacturerCode INT16U
+ */
+#define emberAfFillCommandIAS \
+ ZoneClusterInitiateNormalOperationMode(zoneType, manufacturerCode) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_INITIATE_NORMAL_OPERATION_MODE_COMMAND_ID, "uu", zoneType, manufacturerCode);
+
+/** @brief Command description for InitiateNormalOperationModeResponse
+ *
+ * Command: InitiateNormalOperationModeResponse
+ * @param testModeDuration INT8U
+ * @param currentZoneSensitivityLevel INT8U
+ */
+#define emberAfFillCommandIAS \
+ ZoneClusterInitiateNormalOperationModeResponse(testModeDuration, currentZoneSensitivityLevel) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_INITIATE_NORMAL_OPERATION_MODE_RESPONSE_COMMAND_ID, "uu", testModeDuration, currentZoneSensitivityLevel);
+
+/** @brief Command description for InitiateTestModeResponse
+ *
+ * Command: InitiateTestModeResponse
+ */
+#define emberAfFillCommandIAS \
+ ZoneClusterInitiateTestModeResponse() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_INITIATE_TEST_MODE_RESPONSE_COMMAND_ID, "", );
+
+/** @brief Command description for Arm
+ *
+ * Command: Arm
+ * @param armMode IasAceArmMode
+ * @param armNotification IasAceArmNotification
+ * @param armDisarmCode CHAR_STRING
+ * @param zoneId INT8U
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterArm(armMode, armNotification, armDisarmCode, zoneId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ARM_COMMAND_ID, "uuuu", armMode, armNotification, armDisarmCode, zoneId);
+
+/** @brief Command description for Bypass
+ *
+ * Command: Bypass
+ * @param numberOfZones INT8U
+ * @param section0 BITMAP16
+ * @param zoneIds INT8U []
+ * @param zoneIdsLen int
+ * @param section1 BITMAP16
+ * @param armDisarmCode CHAR_STRING
+ * @param section2 BITMAP16
+ * @param section3 BITMAP16
+ * @param section4 BITMAP16
+ * @param section5 BITMAP16
+ * @param section6 BITMAP16
+ * @param section7 BITMAP16
+ * @param section8 BITMAP16
+ * @param section9 BITMAP16
+ * @param section10 BITMAP16
+ * @param section11 BITMAP16
+ * @param section12 BITMAP16
+ * @param section13 BITMAP16
+ * @param section14 BITMAP16
+ * @param section15 BITMAP16
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterBypass(numberOfZones, section0, zoneIds, zoneIdsLen, section1, armDisarmCode, section2, section3, section4, \
+ section5, section6, section7, section8, section9, section10, section11, section12, section13, section14, \
+ section15) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BYPASS_COMMAND_ID, "uubuuuuuuuuuuuuuuuu", numberOfZones, section0, zoneIds, zoneIdsLen, \
+ section1, armDisarmCode, section2, section3, section4, section5, section6, section7, section8, \
+ section9, section10, section11, section12, section13, section14, section15);
+
+/** @brief Command description for Emergency
+ *
+ * Command: Emergency
+ * @param zoneId INT8U
+ * @param zoneType IasZoneType
+ * @param ieeeAddress IEEE_ADDRESS
+ * @param zoneLabel CHAR_STRING
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterEmergency(zoneId, zoneType, ieeeAddress, zoneLabel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EMERGENCY_COMMAND_ID, "uuuu", zoneId, zoneType, ieeeAddress, zoneLabel);
+
+/** @brief Command description for Fire
+ *
+ * Command: Fire
+ * @param zoneId INT8U
+ * @param zoneStatus ENUM16
+ * @param audibleNotification IasAceAudibleNotification
+ * @param zoneLabel CHAR_STRING
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterFire(zoneId, zoneStatus, audibleNotification, zoneLabel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_FIRE_COMMAND_ID, "uuuu", zoneId, zoneStatus, audibleNotification, zoneLabel);
+
+/** @brief Command description for Panic
+ *
+ * Command: Panic
+ * @param panelStatus IasAcePanelStatus
+ * @param secondsRemaining INT8U
+ * @param audibleNotification IasAceAudibleNotification
+ * @param alarmStatus IasAceAlarmStatus
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterPanic(panelStatus, secondsRemaining, audibleNotification, alarmStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PANIC_COMMAND_ID, "uuuu", panelStatus, secondsRemaining, audibleNotification, alarmStatus);
+
+/** @brief Command description for GetZoneIdMap
+ *
+ * Command: GetZoneIdMap
+ * @param panelStatus IasAcePanelStatus
+ * @param secondsRemaining INT8U
+ * @param audibleNotification IasAceAudibleNotification
+ * @param alarmStatus IasAceAlarmStatus
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetZoneIdMap(panelStatus, secondsRemaining, audibleNotification, alarmStatus) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GET_ZONE_ID_MAP_COMMAND_ID, "uuuu", panelStatus, secondsRemaining, audibleNotification, alarmStatus);
+
+/** @brief Command description for GetZoneInformation
+ *
+ * Command: GetZoneInformation
+ * @param zoneId INT8U
+ * @param numberOfZones INT8U
+ * @param zoneIds INT8U []
+ * @param zoneIdsLen int
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetZoneInformation(zoneId, numberOfZones, zoneIds, zoneIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_ZONE_INFORMATION_COMMAND_ID, "uub", zoneId, numberOfZones, zoneIds, zoneIdsLen);
+
+/** @brief Command description for GetPanelStatus
+ *
+ * Command: GetPanelStatus
+ * @param numberOfZones INT8U
+ * @param bypassResult IasAceBypassResult []
+ * @param bypassResultLen int
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetPanelStatus(numberOfZones, bypassResult, bypassResultLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PANEL_STATUS_COMMAND_ID, "ub", numberOfZones, bypassResult, bypassResultLen);
+
+/** @brief Command description for GetBypassedZoneList
+ *
+ * Command: GetBypassedZoneList
+ * @param zoneStatusComplete BOOLEAN
+ * @param numberOfZones INT8U
+ * @param zoneStatusResult IasAceZoneStatusResult []
+ * @param zoneStatusResultLen int
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetBypassedZoneList(zoneStatusComplete, numberOfZones, zoneStatusResult, zoneStatusResultLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_BYPASSED_ZONE_LIST_COMMAND_ID, "uub", zoneStatusComplete, numberOfZones, \
+ zoneStatusResult, zoneStatusResultLen);
+
+/** @brief Command description for GetZoneStatus
+ *
+ * Command: GetZoneStatus
+ * @param startingZoneId INT8U
+ * @param maxNumberOfZoneIds INT8U
+ * @param zoneStatusMaskFlag BOOLEAN
+ * @param zoneStatusMask BITMAP16
+ */
+#define emberAfFillCommandIAS \
+ ACEClusterGetZoneStatus(startingZoneId, maxNumberOfZoneIds, zoneStatusMaskFlag, zoneStatusMask) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_GET_ZONE_STATUS_COMMAND_ID, "uuuu", startingZoneId, maxNumberOfZoneIds, zoneStatusMaskFlag, zoneStatusMask);
+
+/** @brief Command description for StartWarning
+ *
+ * Command: StartWarning
+ * @param warningInfo WarningInfo
+ * @param warningDuration INT16U
+ * @param strobeDutyCycle INT8U
+ * @param strobeLevel ENUM8
+ */
+#define emberAfFillCommandIAS \
+ WDClusterStartWarning(warningInfo, warningDuration, strobeDutyCycle, strobeLevel) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_START_WARNING_COMMAND_ID, "uuuu", warningInfo, warningDuration, strobeDutyCycle, strobeLevel);
+
+/** @brief Command description for Squawk
+ *
+ * Command: Squawk
+ * @param squawkInfo SquawkInfo
+ */
+#define emberAfFillCommandIAS \
+ WDClusterSquawk(squawkInfo) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SQUAWK_COMMAND_ID, "u", squawkInfo);
+
+/** @brief Command description for MatchProtocolAddress
+ *
+ * Command: MatchProtocolAddress
+ * @param protocolAddress OCTET_STRING
+ * @param deviceIeeeAddress IEEE_ADDRESS
+ * @param protocolAddress OCTET_STRING
+ */
+#define emberAfFillCommandGeneric \
+ TunnelClusterMatchProtocolAddress(protocolAddress, deviceIeeeAddress, protocolAddress) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_MATCH_PROTOCOL_ADDRESS_COMMAND_ID, "uuu", protocolAddress, deviceIeeeAddress, protocolAddress);
+
+/** @brief Command description for AdvertiseProtocolAddress
+ *
+ * Command: AdvertiseProtocolAddress
+ * @param protocolAddress OCTET_STRING
+ */
+#define emberAfFillCommandGeneric \
+ TunnelClusterAdvertiseProtocolAddress(protocolAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ADVERTISE_PROTOCOL_ADDRESS_COMMAND_ID, "u", protocolAddress);
+
+/** @brief Command description for TransferNpdu
+ *
+ * Command: TransferNpdu
+ * @param npdu DATA8 []
+ * @param npduLen int
+ */
+#define emberAfFillCommandBACnet \
+ Protocol TunnelClusterTransferNpdu(npdu, npduLen) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_NPDU_COMMAND_ID, "b", npdu, npduLen);
+
+/** @brief Command description for TransferAPDU
+ *
+ * Command: TransferAPDU
+ * @param apdu OCTET_STRING
+ */
+#define emberAfFillCommand11073 \
+ Protocol TunnelClusterTransferAPDU(apdu) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_APDU_COMMAND_ID, "u", apdu);
+
+/** @brief Command description for ConnectRequest
+ *
+ * Command: ConnectRequest
+ * @param connectControl 11073ConnectRequestConnectControl
+ * @param idleTimeout INT16U
+ * @param managerTarget IEEE_ADDRESS
+ * @param managerEndpoint INT8U
+ */
+#define emberAfFillCommand11073 \
+ Protocol TunnelClusterConnectRequest(connectControl, idleTimeout, managerTarget, managerEndpoint) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_CONNECT_REQUEST_COMMAND_ID, "uuuu", connectControl, idleTimeout, managerTarget, managerEndpoint);
+
+/** @brief Command description for DisconnectRequest
+ *
+ * Command: DisconnectRequest
+ * @param managerIEEEAddress IEEE_ADDRESS
+ */
+#define emberAfFillCommand11073 \
+ Protocol TunnelClusterDisconnectRequest(managerIEEEAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISCONNECT_REQUEST_COMMAND_ID, "u", managerIEEEAddress);
+
+/** @brief Command description for ConnectStatusNotification
+ *
+ * Command: ConnectStatusNotification
+ * @param connectStatus 11073TunnelConnectionStatus
+ */
+#define emberAfFillCommand11073 \
+ Protocol TunnelClusterConnectStatusNotification(connectStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONNECT_STATUS_NOTIFICATION_COMMAND_ID, "u", connectStatus);
+
+/** @brief Command description for TransferApdu
+ *
+ * Command: TransferApdu
+ * @param apdu OCTET_STRING
+ */
+#define emberAfFillCommandISO \
+ 7816 Protocol TunnelClusterTransferApdu(apdu) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_APDU_COMMAND_ID, "u", apdu);
+
+/** @brief Command description for InsertSmartCard
+ *
+ * Command: InsertSmartCard
+ */
+#define emberAfFillCommandISO \
+ 7816 Protocol TunnelClusterInsertSmartCard() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_INSERT_SMART_CARD_COMMAND_ID, "", );
+
+/** @brief Command description for ExtractSmartCard
+ *
+ * Command: ExtractSmartCard
+ */
+#define emberAfFillCommandISO \
+ 7816 Protocol TunnelClusterExtractSmartCard() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EXTRACT_SMART_CARD_COMMAND_ID, "", );
+
+/** @brief Command description for PublishPrice
+ *
+ * Command: PublishPrice
+ * @param providerId INT32U
+ * @param commandOptions AmiCommandOptions
+ * @param rateLabel OCTET_STRING
+ * @param issuerEventId INT32U
+ * @param currentTime UTC_TIME
+ * @param unitOfMeasure AmiUnitOfMeasure
+ * @param currency INT16U
+ * @param priceTrailingDigitAndPriceTier PriceTrailingDigitAndPriceTier
+ * @param numberOfPriceTiersAndRegisterTier PriceNumberOfPriceTiersAndRegisterTier
+ * @param startTime UTC_TIME
+ * @param durationInMinutes INT16U
+ * @param price INT32U
+ * @param priceRatio INT8U
+ * @param generationPrice INT32U
+ * @param generationPriceRatio INT8U
+ * @param alternateCostDelivered INT32U
+ * @param alternateCostUnit AlternateCostUnit
+ * @param alternateCostTrailingDigit AlternateCostTrailingDigit
+ * @param numberOfBlockThresholds INT8U
+ * @param priceControl PriceControlMask
+ * @param numberOfGenerationTiers INT8U
+ * @param generationTier GenerationTier
+ * @param extendedNumberOfPriceTiers ExtendedNumberOfPriceTiers
+ * @param extendedPriceTier ExtendedPriceTier
+ * @param extendedRegisterTier ExtendedRegisterTier
+ */
+#define emberAfFillCommandPriceClusterPublishPrice( \
+ providerId, commandOptions, rateLabel, issuerEventId, currentTime, unitOfMeasure, currency, priceTrailingDigitAndPriceTier, \
+ numberOfPriceTiersAndRegisterTier, startTime, durationInMinutes, price, priceRatio, generationPrice, generationPriceRatio, \
+ alternateCostDelivered, alternateCostUnit, alternateCostTrailingDigit, numberOfBlockThresholds, priceControl, \
+ numberOfGenerationTiers, generationTier, extendedNumberOfPriceTiers, extendedPriceTier, extendedRegisterTier) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_PRICE_COMMAND_ID, "uuuuuuuuuuuuuuuuuuuuuuuuu", providerId, commandOptions, rateLabel, \
+ issuerEventId, currentTime, unitOfMeasure, currency, priceTrailingDigitAndPriceTier, \
+ numberOfPriceTiersAndRegisterTier, startTime, durationInMinutes, price, priceRatio, generationPrice, \
+ generationPriceRatio, alternateCostDelivered, alternateCostUnit, alternateCostTrailingDigit, \
+ numberOfBlockThresholds, priceControl, numberOfGenerationTiers, generationTier, \
+ extendedNumberOfPriceTiers, extendedPriceTier, extendedRegisterTier);
+
+/** @brief Command description for PublishBlockPeriod
+ *
+ * Command: PublishBlockPeriod
+ * @param providerId INT32U
+ * @param startTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param numberOfEvents INT8U
+ * @param blockPeriodStartTime UTC_TIME
+ * @param blockPeriodDuration INT24U
+ * @param numberOfPriceTiersAndNumberOfBlockThresholds BITMAP8
+ * @param blockPeriodControl BlockPeriodControl
+ * @param blockPeriodDurationType BlockPeriodDurationType
+ * @param tariffType TariffType
+ * @param tariffResolutionPeriod TariffResolutionPeriod
+ */
+#define emberAfFillCommandPriceClusterPublishBlockPeriod( \
+ providerId, startTime, issuerEventId, numberOfEvents, blockPeriodStartTime, blockPeriodDuration, \
+ numberOfPriceTiersAndNumberOfBlockThresholds, blockPeriodControl, blockPeriodDurationType, tariffType, tariffResolutionPeriod) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_BLOCK_PERIOD_COMMAND_ID, "uuuuuuuuuuu", providerId, startTime, issuerEventId, \
+ numberOfEvents, blockPeriodStartTime, blockPeriodDuration, \
+ numberOfPriceTiersAndNumberOfBlockThresholds, blockPeriodControl, blockPeriodDurationType, \
+ tariffType, tariffResolutionPeriod);
+
+/** @brief Command description for PublishConversionFactor
+ *
+ * Command: PublishConversionFactor
+ * @param issuerEventId INT32U
+ * @param providerId INT32U
+ * @param startTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param conversionFactor INT32U
+ * @param priceAckTime UTC_TIME
+ * @param conversionFactorTrailingDigit ConversionFactorTrailingDigit
+ * @param control PriceControlMask
+ */
+#define emberAfFillCommandPriceClusterPublishConversionFactor( \
+ issuerEventId, providerId, startTime, issuerEventId, conversionFactor, priceAckTime, conversionFactorTrailingDigit, control) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CONVERSION_FACTOR_COMMAND_ID, "uuuuuuuu", issuerEventId, providerId, startTime, \
+ issuerEventId, conversionFactor, priceAckTime, conversionFactorTrailingDigit, control);
+
+/** @brief Command description for PublishCalorificValue
+ *
+ * Command: PublishCalorificValue
+ * @param issuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param startTime UTC_TIME
+ * @param numberOfEvents INT8U
+ * @param calorificValue INT32U
+ * @param tariffType TariffType
+ * @param calorificValueUnit CalorificValueUnit
+ * @param calorificValueTrailingDigit CalorificValueTrailingDigit
+ */
+#define emberAfFillCommandPriceClusterPublishCalorificValue(issuerEventId, startTime, startTime, numberOfEvents, calorificValue, \
+ tariffType, calorificValueUnit, calorificValueTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CALORIFIC_VALUE_COMMAND_ID, "uuuuuuuu", issuerEventId, startTime, startTime, \
+ numberOfEvents, calorificValue, tariffType, calorificValueUnit, calorificValueTrailingDigit);
+
+/** @brief Command description for PublishTariffInformation
+ *
+ * Command: PublishTariffInformation
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param issuerTariffId INT32U
+ * @param numberOfCommands INT8U
+ * @param startTime UTC_TIME
+ * @param tariffTypeChargingScheme TariffTypeChargingScheme
+ * @param tariffLabel OCTET_STRING
+ * @param numberOfPriceTiersInUse INT8U
+ * @param numberOfBlockThresholdsInUse INT8U
+ * @param unitOfMeasure AmiUnitOfMeasure
+ * @param currency INT16U
+ * @param priceTrailingDigit PriceTrailingDigit
+ * @param standingCharge INT32U
+ * @param tierBlockMode TierBlockMode
+ * @param blockThresholdMultiplier INT24U
+ * @param blockThresholdDivisor INT24U
+ */
+#define emberAfFillCommandPriceClusterPublishTariffInformation( \
+ providerId, earliestStartTime, issuerEventId, minIssuerEventId, issuerTariffId, numberOfCommands, startTime, \
+ tariffTypeChargingScheme, tariffLabel, numberOfPriceTiersInUse, numberOfBlockThresholdsInUse, unitOfMeasure, currency, \
+ priceTrailingDigit, standingCharge, tierBlockMode, blockThresholdMultiplier, blockThresholdDivisor) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_TARIFF_INFORMATION_COMMAND_ID, "uuuuuuuuuuuuuuuuuu", providerId, earliestStartTime, \
+ issuerEventId, minIssuerEventId, issuerTariffId, numberOfCommands, startTime, \
+ tariffTypeChargingScheme, tariffLabel, numberOfPriceTiersInUse, numberOfBlockThresholdsInUse, \
+ unitOfMeasure, currency, priceTrailingDigit, standingCharge, tierBlockMode, \
+ blockThresholdMultiplier, blockThresholdDivisor);
+
+/** @brief Command description for PublishPriceMatrix
+ *
+ * Command: PublishPriceMatrix
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param issuerTariffId INT32U
+ * @param commandIndex INT8U
+ * @param numberOfCommands INT8U
+ * @param subPayloadControl PriceMatrixSubPayloadControl
+ * @param payload PriceMatrixSubPayload []
+ * @param payloadLen int
+ */
+#define emberAfFillCommandPriceClusterPublishPriceMatrix(providerId, earliestStartTime, issuerEventId, minIssuerEventId, \
+ startTime, numberOfCommands, issuerTariffId, commandIndex, \
+ numberOfCommands, subPayloadControl, payload, payloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_PRICE_MATRIX_COMMAND_ID, "uuuuuuuuuub", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, startTime, numberOfCommands, issuerTariffId, commandIndex, numberOfCommands, \
+ subPayloadControl, payload, payloadLen);
+
+/** @brief Command description for PublishBlockThresholds
+ *
+ * Command: PublishBlockThresholds
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param issuerTariffId INT32U
+ * @param tariffType TariffType
+ * @param commandIndex INT8U
+ * @param numberOfCommands INT8U
+ * @param subPayloadControl BlockThresholdSubPayloadControl
+ * @param payload BlockThresholdSubPayload []
+ * @param payloadLen int
+ */
+#define emberAfFillCommandPriceClusterPublishBlockThresholds( \
+ providerId, earliestStartTime, issuerEventId, minIssuerEventId, startTime, numberOfCommands, issuerTariffId, tariffType, \
+ commandIndex, numberOfCommands, subPayloadControl, payload, payloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_BLOCK_THRESHOLDS_COMMAND_ID, "uuuuuuuuuuub", providerId, earliestStartTime, \
+ issuerEventId, minIssuerEventId, startTime, numberOfCommands, issuerTariffId, tariffType, \
+ commandIndex, numberOfCommands, subPayloadControl, payload, payloadLen);
+
+/** @brief Command description for PublishCO2Value
+ *
+ * Command: PublishCO2Value
+ * @param providerId INT32U
+ * @param issuerTariffId INT32U
+ * @param issuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param tariffType TariffType
+ * @param cO2Value INT32U
+ * @param cO2ValueUnit CO2Unit
+ * @param cO2ValueTrailingDigit CO2TrailingDigit
+ */
+#define emberAfFillCommandPriceClusterPublishCO2Value(providerId, issuerTariffId, issuerEventId, startTime, tariffType, cO2Value, \
+ cO2ValueUnit, cO2ValueTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CO2_VALUE_COMMAND_ID, "uuuuuuuu", providerId, issuerTariffId, issuerEventId, startTime, \
+ tariffType, cO2Value, cO2ValueUnit, cO2ValueTrailingDigit);
+
+/** @brief Command description for PublishTierLabels
+ *
+ * Command: PublishTierLabels
+ * @param providerId INT32U
+ * @param issuerTariffId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerTariffId INT32U
+ * @param commandIndex INT8U
+ * @param numberOfCommands INT8U
+ * @param numberOfLabels INT8U
+ * @param tierLabelsPayload INT8U []
+ * @param tierLabelsPayloadLen int
+ */
+#define emberAfFillCommandPriceClusterPublishTierLabels(providerId, issuerTariffId, issuerEventId, issuerTariffId, commandIndex, \
+ numberOfCommands, numberOfLabels, tierLabelsPayload, tierLabelsPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_TIER_LABELS_COMMAND_ID, "uuuuuuub", providerId, issuerTariffId, issuerEventId, \
+ issuerTariffId, commandIndex, numberOfCommands, numberOfLabels, tierLabelsPayload, \
+ tierLabelsPayloadLen);
+
+/** @brief Command description for PublishBillingPeriod
+ *
+ * Command: PublishBillingPeriod
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param billingPeriodStartTime UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param billingPeriodDuration BillingPeriodDuration
+ * @param tariffType TariffType
+ * @param billingPeriodDurationType BillingPeriodDurationType
+ * @param tariffType TariffType
+ */
+#define emberAfFillCommandPriceClusterPublishBillingPeriod(providerId, earliestStartTime, issuerEventId, minIssuerEventId, \
+ billingPeriodStartTime, numberOfCommands, billingPeriodDuration, \
+ tariffType, billingPeriodDurationType, tariffType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_BILLING_PERIOD_COMMAND_ID, "uuuuuuuuuu", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, billingPeriodStartTime, numberOfCommands, billingPeriodDuration, tariffType, \
+ billingPeriodDurationType, tariffType);
+
+/** @brief Command description for PublishConsolidatedBill
+ *
+ * Command: PublishConsolidatedBill
+ * @param providerId INT32U
+ * @param issuerTariffId INT32U
+ * @param issuerEventId INT32U
+ * @param billingPeriodStartTime UTC_TIME
+ * @param billingPeriodDuration BillingPeriodDuration
+ * @param billingPeriodDurationType BillingPeriodDurationType
+ * @param tariffType TariffType
+ * @param consolidatedBill INT32U
+ * @param currency INT16U
+ * @param billTrailingDigit BillTrailingDigit
+ */
+#define emberAfFillCommandPriceClusterPublishConsolidatedBill(providerId, issuerTariffId, issuerEventId, billingPeriodStartTime, \
+ billingPeriodDuration, billingPeriodDurationType, tariffType, \
+ consolidatedBill, currency, billTrailingDigit) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CONSOLIDATED_BILL_COMMAND_ID, "uuuuuuuuuu", providerId, issuerTariffId, issuerEventId, \
+ billingPeriodStartTime, billingPeriodDuration, billingPeriodDurationType, tariffType, \
+ consolidatedBill, currency, billTrailingDigit);
+
+/** @brief Command description for PublishCppEvent
+ *
+ * Command: PublishCppEvent
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param durationInMinutes INT16U
+ * @param tariffType TariffType
+ * @param tariffType TariffType
+ * @param cppPriceTier CppPriceTier
+ * @param cppAuth PublishCppEventCppAuth
+ */
+#define emberAfFillCommandPriceClusterPublishCppEvent(providerId, earliestStartTime, issuerEventId, minIssuerEventId, startTime, \
+ numberOfCommands, durationInMinutes, tariffType, tariffType, cppPriceTier, \
+ cppAuth) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CPP_EVENT_COMMAND_ID, "uuuuuuuuuuu", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, startTime, numberOfCommands, durationInMinutes, tariffType, tariffType, \
+ cppPriceTier, cppAuth);
+
+/** @brief Command description for PublishCreditPayment
+ *
+ * Command: PublishCreditPayment
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param creditPaymentDueDate UTC_TIME
+ * @param numberOfCommands INT8U
+ * @param creditPaymentOverDueAmount INT32U
+ * @param tariffType TariffType
+ * @param creditPaymentStatus CreditPaymentStatus
+ * @param creditPayment INT32U
+ * @param creditPaymentDate UTC_TIME
+ * @param creditPaymentRef OCTET_STRING
+ */
+#define emberAfFillCommandPriceClusterPublishCreditPayment( \
+ providerId, earliestStartTime, issuerEventId, minIssuerEventId, creditPaymentDueDate, numberOfCommands, \
+ creditPaymentOverDueAmount, tariffType, creditPaymentStatus, creditPayment, creditPaymentDate, creditPaymentRef) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CREDIT_PAYMENT_COMMAND_ID, "uuuuuuuuuuuu", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, creditPaymentDueDate, numberOfCommands, creditPaymentOverDueAmount, tariffType, \
+ creditPaymentStatus, creditPayment, creditPaymentDate, creditPaymentRef);
+
+/** @brief Command description for PublishCurrencyConversion
+ *
+ * Command: PublishCurrencyConversion
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerEventId INT32U
+ * @param cppAuth CppEventResponseCppAuth
+ * @param startTime UTC_TIME
+ * @param oldCurrency INT16U
+ * @param newCurrency INT16U
+ * @param conversionFactor INT32U
+ * @param conversionFactorTrailingDigit ConversionFactorTrailingDigit
+ * @param currencyChangeControlFlags CurrencyChangeControl
+ */
+#define emberAfFillCommandPriceClusterPublishCurrencyConversion(providerId, issuerEventId, issuerEventId, cppAuth, startTime, \
+ oldCurrency, newCurrency, conversionFactor, \
+ conversionFactorTrailingDigit, currencyChangeControlFlags) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CURRENCY_CONVERSION_COMMAND_ID, "uuuuuuuuuu", providerId, issuerEventId, issuerEventId, \
+ cppAuth, startTime, oldCurrency, newCurrency, conversionFactor, conversionFactorTrailingDigit, \
+ currencyChangeControlFlags);
+
+/** @brief Command description for CancelTariff
+ *
+ * Command: CancelTariff
+ * @param providerId INT32U
+ * @param latestEndTime UTC_TIME
+ * @param issuerTariffId INT32U
+ * @param numberOfRecords INT8U
+ * @param tariffType TariffType
+ */
+#define emberAfFillCommandPriceClusterCancelTariff(providerId, latestEndTime, issuerTariffId, numberOfRecords, tariffType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_TARIFF_COMMAND_ID, "uuuuu", providerId, latestEndTime, issuerTariffId, numberOfRecords, \
+ tariffType);
+
+/** @brief Command description for GetCurrencyConversionCommand
+ *
+ * Command: GetCurrencyConversionCommand
+ */
+#define emberAfFillCommandPriceClusterGetCurrencyConversionCommand() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CURRENCY_CONVERSION_COMMAND_COMMAND_ID, "", );
+
+/** @brief Command description for GetTariffCancellation
+ *
+ * Command: GetTariffCancellation
+ */
+#define emberAfFillCommandPriceClusterGetTariffCancellation() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_TARIFF_CANCELLATION_COMMAND_ID, "", );
+
+/** @brief Command description for LoadControlEvent
+ *
+ * Command: LoadControlEvent
+ * @param issuerEventId INT32U
+ * @param issuerEventId INT32U
+ * @param deviceClass AmiDeviceClass
+ * @param eventStatus AmiEventStatus
+ * @param utilityEnrollmentGroup INT8U
+ * @param eventStatusTime UTC_TIME
+ * @param startTime UTC_TIME
+ * @param criticalityLevelApplied AmiCriticalityLevel
+ * @param durationInMinutes INT16U
+ * @param coolingTemperatureSetPointApplied INT16U
+ * @param criticalityLevel AmiCriticalityLevel
+ * @param heatingTemperatureSetPointApplied INT16U
+ * @param coolingTemperatureOffset INT8U
+ * @param averageLoadAdjustmentPercentageApplied INT8S
+ * @param heatingTemperatureOffset INT8U
+ * @param dutyCycleApplied INT8U
+ * @param coolingTemperatureSetPoint INT16S
+ * @param eventControl AmiEventControl
+ * @param heatingTemperatureSetPoint INT16S
+ * @param signatureType SignatureType
+ * @param averageLoadAdjustmentPercentage INT8S
+ * @param signature Signature
+ * @param dutyCycle INT8U
+ * @param eventControl AmiEventControl
+ */
+#define emberAfFillCommandDemand \
+ Response and Load ControlClusterLoadControlEvent( \
+ issuerEventId, issuerEventId, deviceClass, eventStatus, utilityEnrollmentGroup, eventStatusTime, startTime, \
+ criticalityLevelApplied, durationInMinutes, coolingTemperatureSetPointApplied, criticalityLevel, \
+ heatingTemperatureSetPointApplied, coolingTemperatureOffset, averageLoadAdjustmentPercentageApplied, \
+ heatingTemperatureOffset, dutyCycleApplied, coolingTemperatureSetPoint, eventControl, heatingTemperatureSetPoint, \
+ signatureType, averageLoadAdjustmentPercentage, signature, dutyCycle, eventControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LOAD_CONTROL_EVENT_COMMAND_ID, "uuuuuuuuuuuuuuuuuuuuuuuu", issuerEventId, issuerEventId, \
+ deviceClass, eventStatus, utilityEnrollmentGroup, eventStatusTime, startTime, \
+ criticalityLevelApplied, durationInMinutes, coolingTemperatureSetPointApplied, criticalityLevel, \
+ heatingTemperatureSetPointApplied, coolingTemperatureOffset, \
+ averageLoadAdjustmentPercentageApplied, heatingTemperatureOffset, dutyCycleApplied, \
+ coolingTemperatureSetPoint, eventControl, heatingTemperatureSetPoint, signatureType, \
+ averageLoadAdjustmentPercentage, signature, dutyCycle, eventControl);
+
+/** @brief Command description for CancelLoadControlEvent
+ *
+ * Command: CancelLoadControlEvent
+ * @param issuerEventId INT32U
+ * @param startTime UTC_TIME
+ * @param deviceClass AmiDeviceClass
+ * @param numberOfEvents INT8U
+ * @param utilityEnrollmentGroup INT8U
+ * @param issuerEventId INT32U
+ * @param cancelControl AmiCancelControl
+ * @param effectiveTime UTC_TIME
+ */
+#define emberAfFillCommandDemand \
+ Response and Load ControlClusterCancelLoadControlEvent(issuerEventId, startTime, deviceClass, numberOfEvents, \
+ utilityEnrollmentGroup, issuerEventId, cancelControl, effectiveTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_LOAD_CONTROL_EVENT_COMMAND_ID, "uuuuuuuu", issuerEventId, startTime, deviceClass, \
+ numberOfEvents, utilityEnrollmentGroup, issuerEventId, cancelControl, effectiveTime);
+
+/** @brief Command description for CancelAllLoadControlEvents
+ *
+ * Command: CancelAllLoadControlEvents
+ * @param cancelControl AmiCancelControl
+ */
+#define emberAfFillCommandDemand \
+ Response and Load ControlClusterCancelAllLoadControlEvents(cancelControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_ALL_LOAD_CONTROL_EVENTS_COMMAND_ID, "u", cancelControl);
+
+/** @brief Command description for GetProfileResponse
+ *
+ * Command: GetProfileResponse
+ * @param endTime UTC_TIME
+ * @param intervalChannel AmiIntervalChannel
+ * @param status AmiGetProfileStatus
+ * @param endTime UTC_TIME
+ * @param profileIntervalPeriod AmiIntervalPeriod
+ * @param numberOfPeriods INT8U
+ * @param numberOfPeriodsDelivered INT8U
+ * @param intervals INT24U []
+ * @param intervalsLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterGetProfileResponse(endTime, intervalChannel, status, endTime, profileIntervalPeriod, numberOfPeriods, \
+ numberOfPeriodsDelivered, intervals, intervalsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PROFILE_RESPONSE_COMMAND_ID, "uuuuuuub", endTime, intervalChannel, status, endTime, \
+ profileIntervalPeriod, numberOfPeriods, numberOfPeriodsDelivered, intervals, intervalsLen);
+
+/** @brief Command description for RequestMirror
+ *
+ * Command: RequestMirror
+ * @param endpointId INT16U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterRequestMirror(endpointId) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_MIRROR_COMMAND_ID, "u", endpointId);
+
+/** @brief Command description for RemoveMirror
+ *
+ * Command: RemoveMirror
+ * @param endpointId INT16U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterRemoveMirror(endpointId) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_MIRROR_COMMAND_ID, "u", endpointId);
+
+/** @brief Command description for RequestFastPollModeResponse
+ *
+ * Command: RequestFastPollModeResponse
+ * @param appliedUpdatePeriod INT8U
+ * @param fastPollUpdatePeriod INT8U
+ * @param fastPollModeEndtime UTC_TIME
+ * @param duration INT8U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterRequestFastPollModeResponse(appliedUpdatePeriod, fastPollUpdatePeriod, fastPollModeEndtime, duration) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_FAST_POLL_MODE_RESPONSE_COMMAND_ID, "uuuu", appliedUpdatePeriod, \
+ fastPollUpdatePeriod, fastPollModeEndtime, duration);
+
+/** @brief Command description for ScheduleSnapshotResponse
+ *
+ * Command: ScheduleSnapshotResponse
+ * @param issuerEventId INT32U
+ * @param issuerEventId INT32U
+ * @param snapshotResponsePayload SnapshotResponsePayload []
+ * @param snapshotResponsePayloadLen int
+ * @param commandIndex INT8U
+ * @param commandCount INT8U
+ * @param snapshotSchedulePayload SnapshotSchedulePayload []
+ * @param snapshotSchedulePayloadLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterScheduleSnapshotResponse(issuerEventId, issuerEventId, snapshotResponsePayload, snapshotResponsePayloadLen, \
+ commandIndex, commandCount, snapshotSchedulePayload, snapshotSchedulePayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SCHEDULE_SNAPSHOT_RESPONSE_COMMAND_ID, "uubuub", issuerEventId, issuerEventId, \
+ snapshotResponsePayload, snapshotResponsePayloadLen, commandIndex, commandCount, \
+ snapshotSchedulePayload, snapshotSchedulePayloadLen);
+
+/** @brief Command description for TakeSnapshotResponse
+ *
+ * Command: TakeSnapshotResponse
+ * @param snapshotId INT32U
+ * @param snapshotCause SnapshotCause
+ * @param snapshotConfirmation SnapshotConfirmation
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterTakeSnapshotResponse(snapshotId, snapshotCause, snapshotConfirmation) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TAKE_SNAPSHOT_RESPONSE_COMMAND_ID, "uuu", snapshotId, snapshotCause, snapshotConfirmation);
+
+/** @brief Command description for PublishSnapshot
+ *
+ * Command: PublishSnapshot
+ * @param snapshotId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param snapshotTime UTC_TIME
+ * @param latestEndTime UTC_TIME
+ * @param totalSnapshotsFound INT8U
+ * @param snapshotOffset INT8U
+ * @param commandIndex INT8U
+ * @param snapshotCause SnapshotCause
+ * @param totalCommands INT8U
+ * @param snapshotCause SnapshotCause
+ * @param snapshotPayloadType SnapshotPayloadType
+ * @param snapshotPayload INT8U []
+ * @param snapshotPayloadLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterPublishSnapshot(snapshotId, earliestStartTime, snapshotTime, latestEndTime, totalSnapshotsFound, \
+ snapshotOffset, commandIndex, snapshotCause, totalCommands, snapshotCause, snapshotPayloadType, \
+ snapshotPayload, snapshotPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_SNAPSHOT_COMMAND_ID, "uuuuuuuuuuub", snapshotId, earliestStartTime, snapshotTime, \
+ latestEndTime, totalSnapshotsFound, snapshotOffset, commandIndex, snapshotCause, totalCommands, \
+ snapshotCause, snapshotPayloadType, snapshotPayload, snapshotPayloadLen);
+
+/** @brief Command description for GetSampledDataResponse
+ *
+ * Command: GetSampledDataResponse
+ * @param sampleId INT16U
+ * @param issuerEventId INT32U
+ * @param sampleStartTime UTC_TIME
+ * @param startSamplingTime UTC_TIME
+ * @param sampleType SampleType
+ * @param sampleType SampleType
+ * @param sampleRequestInterval INT16U
+ * @param sampleRequestInterval INT16U
+ * @param numberOfSamples INT16U
+ * @param maxNumberOfSamples INT16U
+ * @param samples INT24U []
+ * @param samplesLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterGetSampledDataResponse(sampleId, issuerEventId, sampleStartTime, startSamplingTime, sampleType, sampleType, \
+ sampleRequestInterval, sampleRequestInterval, numberOfSamples, maxNumberOfSamples, \
+ samples, samplesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SAMPLED_DATA_RESPONSE_COMMAND_ID, "uuuuuuuuuub", sampleId, issuerEventId, \
+ sampleStartTime, startSamplingTime, sampleType, sampleType, sampleRequestInterval, \
+ sampleRequestInterval, numberOfSamples, maxNumberOfSamples, samples, samplesLen);
+
+/** @brief Command description for ConfigureMirror
+ *
+ * Command: ConfigureMirror
+ * @param issuerEventId INT32U
+ * @param sampleId INT16U
+ * @param reportingInterval INT24U
+ * @param earliestSampleTime UTC_TIME
+ * @param mirrorNotificationReporting BOOLEAN
+ * @param sampleType SampleType
+ * @param notificationScheme INT8U
+ * @param numberOfSamples INT16U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterConfigureMirror(issuerEventId, sampleId, reportingInterval, earliestSampleTime, mirrorNotificationReporting, \
+ sampleType, notificationScheme, numberOfSamples) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_MIRROR_COMMAND_ID, "uuuuuuuu", issuerEventId, sampleId, reportingInterval, \
+ earliestSampleTime, mirrorNotificationReporting, sampleType, notificationScheme, \
+ numberOfSamples);
+
+/** @brief Command description for ConfigureNotificationScheme
+ *
+ * Command: ConfigureNotificationScheme
+ * @param issuerEventId INT32U
+ * @param notificationScheme INT8U
+ * @param notificationScheme INT8U
+ * @param notificationFlags BITMAP32 []
+ * @param notificationFlagsLen int
+ * @param notificationFlagOrder BITMAP32
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterConfigureNotificationScheme(issuerEventId, notificationScheme, notificationScheme, notificationFlags, \
+ notificationFlagsLen, notificationFlagOrder) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_NOTIFICATION_SCHEME_COMMAND_ID, "uuubu", issuerEventId, notificationScheme, \
+ notificationScheme, notificationFlags, notificationFlagsLen, notificationFlagOrder);
+
+/** @brief Command description for ConfigureNotificationFlags
+ *
+ * Command: ConfigureNotificationFlags
+ * @param issuerEventId INT32U
+ * @param providerId INT32U
+ * @param notificationScheme INT8U
+ * @param issuerEventId INT32U
+ * @param notificationFlagAttributeId INT16U
+ * @param clusterId INT16U
+ * @param manufacturerCode INT16U
+ * @param numberOfCommands INT8U
+ * @param commandIds INT8U []
+ * @param commandIdsLen int
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterConfigureNotificationFlags(issuerEventId, providerId, notificationScheme, issuerEventId, \
+ notificationFlagAttributeId, clusterId, manufacturerCode, numberOfCommands, \
+ commandIds, commandIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_NOTIFICATION_FLAGS_COMMAND_ID, "uuuuuuuub", issuerEventId, providerId, \
+ notificationScheme, issuerEventId, notificationFlagAttributeId, clusterId, manufacturerCode, \
+ numberOfCommands, commandIds, commandIdsLen);
+
+/** @brief Command description for GetNotifiedMessage
+ *
+ * Command: GetNotifiedMessage
+ * @param notificationScheme INT8U
+ * @param providerId INT32U
+ * @param notificationFlagAttributeId INT16U
+ * @param issuerEventId INT32U
+ * @param notificationFlagsN BITMAP32
+ * @param requestDateTime UTC_TIME
+ * @param implementationDateTime UTC_TIME
+ * @param proposedSupplyStatus MeteringSupplyStatus
+ * @param supplyControlBits SupplyControlBits
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterGetNotifiedMessage(notificationScheme, providerId, notificationFlagAttributeId, issuerEventId, \
+ notificationFlagsN, requestDateTime, implementationDateTime, proposedSupplyStatus, \
+ supplyControlBits) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_NOTIFIED_MESSAGE_COMMAND_ID, "uuuuuuuuu", notificationScheme, providerId, \
+ notificationFlagAttributeId, issuerEventId, notificationFlagsN, requestDateTime, \
+ implementationDateTime, proposedSupplyStatus, supplyControlBits);
+
+/** @brief Command description for SupplyStatusResponse
+ *
+ * Command: SupplyStatusResponse
+ * @param providerId INT32U
+ * @param proposedSupplyStatus ProposedSupplyStatus
+ * @param issuerEventId INT32U
+ * @param implementationDateTime UTC_TIME
+ * @param supplyStatus MeteringSupplyStatus
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterSupplyStatusResponse(providerId, proposedSupplyStatus, issuerEventId, implementationDateTime, supplyStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SUPPLY_STATUS_RESPONSE_COMMAND_ID, "uuuuu", providerId, proposedSupplyStatus, issuerEventId, \
+ implementationDateTime, supplyStatus);
+
+/** @brief Command description for StartSamplingResponse
+ *
+ * Command: StartSamplingResponse
+ * @param sampleId INT16U
+ * @param issuerEventId INT32U
+ * @param supplyTamperState SupplyStatus
+ * @param supplyDepletionState SupplyStatus
+ * @param supplyUncontrolledFlowState SupplyStatus
+ * @param loadLimitSupplyState SupplyStatus
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterStartSamplingResponse(sampleId, issuerEventId, supplyTamperState, supplyDepletionState, \
+ supplyUncontrolledFlowState, loadLimitSupplyState) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_SAMPLING_RESPONSE_COMMAND_ID, "uuuuuu", sampleId, issuerEventId, supplyTamperState, \
+ supplyDepletionState, supplyUncontrolledFlowState, loadLimitSupplyState);
+
+/** @brief Command description for SetUncontrolledFlowThreshold
+ *
+ * Command: SetUncontrolledFlowThreshold
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param uncontrolledFlowThreshold INT16U
+ * @param unitOfMeasure AmiUnitOfMeasure
+ * @param multiplier INT16U
+ * @param divisor INT16U
+ * @param stabilisationPeriod INT8U
+ * @param measurementPeriod INT16U
+ */
+#define emberAfFillCommandSimple \
+ MeteringClusterSetUncontrolledFlowThreshold(providerId, issuerEventId, uncontrolledFlowThreshold, unitOfMeasure, multiplier, \
+ divisor, stabilisationPeriod, measurementPeriod) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_UNCONTROLLED_FLOW_THRESHOLD_COMMAND_ID, "uuuuuuuu", providerId, issuerEventId, \
+ uncontrolledFlowThreshold, unitOfMeasure, multiplier, divisor, stabilisationPeriod, \
+ measurementPeriod);
+
+/** @brief Command description for GetLastMessage
+ *
+ * Command: GetLastMessage
+ * @param messageId INT32U
+ * @param messageControl MessagingControlMask
+ * @param startTime UTC_TIME
+ * @param durationInMinutes INT16U
+ * @param message CHAR_STRING
+ * @param optionalExtendedMessageControl MessagingExtendedControlMask
+ */
+#define emberAfFillCommandMessagingClusterGetLastMessage(messageId, messageControl, startTime, durationInMinutes, message, \
+ optionalExtendedMessageControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_LAST_MESSAGE_COMMAND_ID, "uuuuuu", messageId, messageControl, startTime, durationInMinutes, \
+ message, optionalExtendedMessageControl);
+
+/** @brief Command description for CancelMessage
+ *
+ * Command: CancelMessage
+ * @param messageId INT32U
+ * @param messageId INT32U
+ * @param messageControl MessagingControlMask
+ * @param confirmationTime UTC_TIME
+ * @param messageConfirmationControl BITMAP8
+ * @param messageResponse OCTET_STRING
+ */
+#define emberAfFillCommandMessagingClusterCancelMessage(messageId, messageId, messageControl, confirmationTime, \
+ messageConfirmationControl, messageResponse) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_MESSAGE_COMMAND_ID, "uuuuuu", messageId, messageId, messageControl, confirmationTime, \
+ messageConfirmationControl, messageResponse);
+
+/** @brief Command description for DisplayProtectedMessage
+ *
+ * Command: DisplayProtectedMessage
+ * @param messageId INT32U
+ * @param earliestImplementationTime UTC_TIME
+ * @param messageControl MessagingControlMask
+ * @param startTime UTC_TIME
+ * @param durationInMinutes INT16U
+ * @param message CHAR_STRING
+ * @param optionalExtendedMessageControl MessagingExtendedControlMask
+ */
+#define emberAfFillCommandMessagingClusterDisplayProtectedMessage( \
+ messageId, earliestImplementationTime, messageControl, startTime, durationInMinutes, message, optionalExtendedMessageControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISPLAY_PROTECTED_MESSAGE_COMMAND_ID, "uuuuuuu", messageId, earliestImplementationTime, \
+ messageControl, startTime, durationInMinutes, message, optionalExtendedMessageControl);
+
+/** @brief Command description for CancelAllMessages
+ *
+ * Command: CancelAllMessages
+ * @param implementationDateTime UTC_TIME
+ */
+#define emberAfFillCommandMessagingClusterCancelAllMessages(implementationDateTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CANCEL_ALL_MESSAGES_COMMAND_ID, "u", implementationDateTime);
+
+/** @brief Command description for RequestTunnel
+ *
+ * Command: RequestTunnel
+ * @param protocolId INT8U
+ * @param tunnelId INT16U
+ * @param manufacturerCode INT16U
+ * @param tunnelStatus TunnelingTunnelStatus
+ * @param flowControlSupport BOOLEAN
+ * @param maximumIncomingTransferSize INT16U
+ * @param maximumIncomingTransferSize INT16U
+ */
+#define emberAfFillCommandTunnelingClusterRequestTunnel(protocolId, tunnelId, manufacturerCode, tunnelStatus, flowControlSupport, \
+ maximumIncomingTransferSize, maximumIncomingTransferSize) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_TUNNEL_COMMAND_ID, "uuuuuuu", protocolId, tunnelId, manufacturerCode, tunnelStatus, \
+ flowControlSupport, maximumIncomingTransferSize, maximumIncomingTransferSize);
+
+/** @brief Command description for CloseTunnel
+ *
+ * Command: CloseTunnel
+ * @param tunnelId INT16U
+ * @param tunnelId INT16U
+ * @param data INT8U []
+ * @param dataLen int
+ */
+#define emberAfFillCommandTunnelingClusterCloseTunnel(tunnelId, tunnelId, data, dataLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLOSE_TUNNEL_COMMAND_ID, "uub", tunnelId, tunnelId, data, dataLen);
+
+/** @brief Command description for TransferDataClientToServer
+ *
+ * Command: TransferDataClientToServer
+ * @param tunnelId INT16U
+ * @param tunnelId INT16U
+ * @param data INT8U []
+ * @param dataLen int
+ * @param transferDataStatus TunnelingTransferDataStatus
+ */
+#define emberAfFillCommandTunnelingClusterTransferDataClientToServer(tunnelId, tunnelId, data, dataLen, transferDataStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID, "uubu", tunnelId, tunnelId, data, dataLen, \
+ transferDataStatus);
+
+/** @brief Command description for TransferDataErrorClientToServer
+ *
+ * Command: TransferDataErrorClientToServer
+ * @param tunnelId INT16U
+ * @param tunnelId INT16U
+ * @param transferDataStatus TunnelingTransferDataStatus
+ * @param numberOfBytesLeft INT16U
+ */
+#define emberAfFillCommandTunnelingClusterTransferDataErrorClientToServer(tunnelId, tunnelId, transferDataStatus, \
+ numberOfBytesLeft) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRANSFER_DATA_ERROR_CLIENT_TO_SERVER_COMMAND_ID, "uuuu", tunnelId, tunnelId, transferDataStatus, \
+ numberOfBytesLeft);
+
+/** @brief Command description for AckTransferDataClientToServer
+ *
+ * Command: AckTransferDataClientToServer
+ * @param tunnelId INT16U
+ * @param tunnelId INT16U
+ * @param numberOfBytesLeft INT16U
+ * @param numberOfOctetsLeft INT16U
+ */
+#define emberAfFillCommandTunnelingClusterAckTransferDataClientToServer(tunnelId, tunnelId, numberOfBytesLeft, numberOfOctetsLeft) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ACK_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID, "uuuu", tunnelId, tunnelId, numberOfBytesLeft, \
+ numberOfOctetsLeft);
+
+/** @brief Command description for ReadyDataClientToServer
+ *
+ * Command: ReadyDataClientToServer
+ * @param tunnelId INT16U
+ * @param protocolListComplete BOOLEAN
+ * @param numberOfOctetsLeft INT16U
+ * @param protocolCount INT8U
+ * @param protocolList Protocol []
+ * @param protocolListLen int
+ */
+#define emberAfFillCommandTunnelingClusterReadyDataClientToServer(tunnelId, protocolListComplete, numberOfOctetsLeft, \
+ protocolCount, protocolList, protocolListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READY_DATA_CLIENT_TO_SERVER_COMMAND_ID, "uuuub", tunnelId, protocolListComplete, \
+ numberOfOctetsLeft, protocolCount, protocolList, protocolListLen);
+
+/** @brief Command description for GetSupportedTunnelProtocols
+ *
+ * Command: GetSupportedTunnelProtocols
+ * @param protocolOffset INT8U
+ * @param tunnelId INT16U
+ */
+#define emberAfFillCommandTunnelingClusterGetSupportedTunnelProtocols(protocolOffset, tunnelId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_ID, "uu", protocolOffset, tunnelId);
+
+/** @brief Command description for SelectAvailableEmergencyCredit
+ *
+ * Command: SelectAvailableEmergencyCredit
+ * @param commandIssueDateTime UTC_TIME
+ * @param originatingDevice OriginatingDevice
+ * @param siteId OCTET_STRING
+ * @param meterSerialNumber OCTET_STRING
+ */
+#define emberAfFillCommandPrepaymentClusterSelectAvailableEmergencyCredit(commandIssueDateTime, originatingDevice, siteId, \
+ meterSerialNumber) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_COMMAND_ID, "uuuu", commandIssueDateTime, originatingDevice, \
+ siteId, meterSerialNumber);
+
+/** @brief Command description for PublishPrepaySnapshot
+ *
+ * Command: PublishPrepaySnapshot
+ * @param snapshotId INT32U
+ * @param snapshotTime UTC_TIME
+ * @param totalSnapshotsFound INT8U
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param snapshotCause PrepaySnapshotPayloadCause
+ * @param snapshotPayloadType PrepaySnapshotPayloadType
+ * @param snapshotPayload INT8U []
+ * @param snapshotPayloadLen int
+ */
+#define emberAfFillCommandPrepaymentClusterPublishPrepaySnapshot(snapshotId, snapshotTime, totalSnapshotsFound, commandIndex, \
+ totalNumberOfCommands, snapshotCause, snapshotPayloadType, \
+ snapshotPayload, snapshotPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_PREPAY_SNAPSHOT_COMMAND_ID, "uuuuuuub", snapshotId, snapshotTime, totalSnapshotsFound, \
+ commandIndex, totalNumberOfCommands, snapshotCause, snapshotPayloadType, snapshotPayload, \
+ snapshotPayloadLen);
+
+/** @brief Command description for ChangeDebt
+ *
+ * Command: ChangeDebt
+ * @param issuerEventId INT32U
+ * @param friendlyCredit FriendlyCredit
+ * @param debtLabel OCTET_STRING
+ * @param friendlyCreditCalendarId INT32U
+ * @param debtAmount INT32U
+ * @param emergencyCreditLimit INT32U
+ * @param debtRecoveryMethod DebtRecoveryMethod
+ * @param emergencyCreditThreshold INT32U
+ * @param debtAmountType DebtAmountType
+ * @param debtRecoveryStartTime UTC_TIME
+ * @param debtRecoveryCollectionTime INT16U
+ * @param debtRecoveryFrequency DebtRecoveryFrequency
+ * @param debtRecoveryAmount INT32U
+ * @param debtRecoveryBalancePercentage INT16U
+ */
+#define emberAfFillCommandPrepaymentClusterChangeDebt( \
+ issuerEventId, friendlyCredit, debtLabel, friendlyCreditCalendarId, debtAmount, emergencyCreditLimit, debtRecoveryMethod, \
+ emergencyCreditThreshold, debtAmountType, debtRecoveryStartTime, debtRecoveryCollectionTime, debtRecoveryFrequency, \
+ debtRecoveryAmount, debtRecoveryBalancePercentage) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CHANGE_DEBT_COMMAND_ID, "uuuuuuuuuuuuuu", issuerEventId, friendlyCredit, debtLabel, \
+ friendlyCreditCalendarId, debtAmount, emergencyCreditLimit, debtRecoveryMethod, \
+ emergencyCreditThreshold, debtAmountType, debtRecoveryStartTime, debtRecoveryCollectionTime, \
+ debtRecoveryFrequency, debtRecoveryAmount, debtRecoveryBalancePercentage);
+
+/** @brief Command description for EmergencyCreditSetup
+ *
+ * Command: EmergencyCreditSetup
+ * @param issuerEventId INT32U
+ * @param resultType ResultType
+ * @param startTime UTC_TIME
+ * @param topUpValue INT32U
+ * @param emergencyCreditLimit INT32U
+ * @param sourceOfTopUp OriginatingDevice
+ * @param emergencyCreditThreshold INT32U
+ * @param creditRemaining INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterEmergencyCreditSetup(issuerEventId, resultType, startTime, topUpValue, \
+ emergencyCreditLimit, sourceOfTopUp, emergencyCreditThreshold, \
+ creditRemaining) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EMERGENCY_CREDIT_SETUP_COMMAND_ID, "uuuuuuuu", issuerEventId, resultType, startTime, topUpValue, \
+ emergencyCreditLimit, sourceOfTopUp, emergencyCreditThreshold, creditRemaining);
+
+/** @brief Command description for ConsumerTopUp
+ *
+ * Command: ConsumerTopUp
+ * @param originatingDevice OriginatingDevice
+ * @param topUpCode OCTET_STRING
+ */
+#define emberAfFillCommandPrepaymentClusterConsumerTopUp(originatingDevice, topUpCode) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONSUMER_TOP_UP_COMMAND_ID, "uu", originatingDevice, topUpCode);
+
+/** @brief Command description for CreditAdjustment
+ *
+ * Command: CreditAdjustment
+ * @param issuerEventId INT32U
+ * @param commandIndex INT8U
+ * @param startTime UTC_TIME
+ * @param totalNumberOfCommands INT8U
+ * @param creditAdjustmentType CreditAdjustmentType
+ * @param topUpPayload TopUpPayload []
+ * @param topUpPayloadLen int
+ * @param creditAdjustmentValue INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterCreditAdjustment(issuerEventId, commandIndex, startTime, totalNumberOfCommands, \
+ creditAdjustmentType, topUpPayload, topUpPayloadLen, \
+ creditAdjustmentValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CREDIT_ADJUSTMENT_COMMAND_ID, "uuuuubu", issuerEventId, commandIndex, startTime, \
+ totalNumberOfCommands, creditAdjustmentType, topUpPayload, topUpPayloadLen, creditAdjustmentValue);
+
+/** @brief Command description for ChangePaymentMode
+ *
+ * Command: ChangePaymentMode
+ * @param providerId INT32U
+ * @param commandIndex INT8U
+ * @param issuerEventId INT32U
+ * @param totalNumberOfCommands INT8U
+ * @param implementationDateTime UTC_TIME
+ * @param debtPayload DebtPayload []
+ * @param debtPayloadLen int
+ * @param proposedPaymentControlConfiguration PaymentControlConfiguration
+ * @param cutOffValue INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterChangePaymentMode(providerId, commandIndex, issuerEventId, totalNumberOfCommands, \
+ implementationDateTime, debtPayload, debtPayloadLen, \
+ proposedPaymentControlConfiguration, cutOffValue) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CHANGE_PAYMENT_MODE_COMMAND_ID, "uuuuubuu", providerId, commandIndex, issuerEventId, \
+ totalNumberOfCommands, implementationDateTime, debtPayload, debtPayloadLen, \
+ proposedPaymentControlConfiguration, cutOffValue);
+
+/** @brief Command description for GetPrepaySnapshot
+ *
+ * Command: GetPrepaySnapshot
+ * @param earliestStartTime UTC_TIME
+ * @param latestEndTime UTC_TIME
+ * @param snapshotOffset INT8U
+ * @param snapshotCause PrepaySnapshotPayloadCause
+ */
+#define emberAfFillCommandPrepaymentClusterGetPrepaySnapshot(earliestStartTime, latestEndTime, snapshotOffset, snapshotCause) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PREPAY_SNAPSHOT_COMMAND_ID, "uuuu", earliestStartTime, latestEndTime, snapshotOffset, \
+ snapshotCause);
+
+/** @brief Command description for GetTopUpLog
+ *
+ * Command: GetTopUpLog
+ * @param latestEndTime UTC_TIME
+ * @param numberOfRecords INT8U
+ */
+#define emberAfFillCommandPrepaymentClusterGetTopUpLog(latestEndTime, numberOfRecords) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_TOP_UP_LOG_COMMAND_ID, "uu", latestEndTime, numberOfRecords);
+
+/** @brief Command description for SetLowCreditWarningLevel
+ *
+ * Command: SetLowCreditWarningLevel
+ * @param lowCreditWarningLevel INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterSetLowCreditWarningLevel(lowCreditWarningLevel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_LOW_CREDIT_WARNING_LEVEL_COMMAND_ID, "u", lowCreditWarningLevel);
+
+/** @brief Command description for GetDebtRepaymentLog
+ *
+ * Command: GetDebtRepaymentLog
+ * @param latestEndTime UTC_TIME
+ * @param numberOfDebts INT8U
+ * @param debtType RepaymentDebtType
+ */
+#define emberAfFillCommandPrepaymentClusterGetDebtRepaymentLog(latestEndTime, numberOfDebts, debtType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_DEBT_REPAYMENT_LOG_COMMAND_ID, "uuu", latestEndTime, numberOfDebts, debtType);
+
+/** @brief Command description for SetMaximumCreditLimit
+ *
+ * Command: SetMaximumCreditLimit
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param implementationDateTime UTC_TIME
+ * @param maximumCreditLevel INT32U
+ * @param maximumCreditPerTopUp INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterSetMaximumCreditLimit(providerId, issuerEventId, implementationDateTime, \
+ maximumCreditLevel, maximumCreditPerTopUp) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_MAXIMUM_CREDIT_LIMIT_COMMAND_ID, "uuuuu", providerId, issuerEventId, implementationDateTime, \
+ maximumCreditLevel, maximumCreditPerTopUp);
+
+/** @brief Command description for SetOverallDebtCap
+ *
+ * Command: SetOverallDebtCap
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param implementationDateTime UTC_TIME
+ * @param overallDebtCap INT32U
+ */
+#define emberAfFillCommandPrepaymentClusterSetOverallDebtCap(providerId, issuerEventId, implementationDateTime, overallDebtCap) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_OVERALL_DEBT_CAP_COMMAND_ID, "uuuu", providerId, issuerEventId, implementationDateTime, \
+ overallDebtCap);
+
+/** @brief Command description for ReportEventStatus
+ *
+ * Command: ReportEventStatus
+ * @param issuerEventId INT32U
+ * @param issuerEventId INT32U
+ * @param eventStatus AmiEventStatus
+ * @param deviceClass AmiDeviceClass
+ * @param eventStatusTime UTC_TIME
+ * @param utilityEnrollmentGroup INT8U
+ * @param criticalityLevelApplied AmiCriticalityLevel
+ * @param actionRequired INT8U
+ * @param coolingTemperatureSetPointApplied INT16U
+ * @param heatingTemperatureSetPointApplied INT16U
+ * @param averageLoadAdjustmentPercentageApplied INT8S
+ * @param dutyCycleApplied INT8U
+ * @param eventControl AmiEventControl
+ */
+#define emberAfFillCommandEnergy \
+ ManagementClusterReportEventStatus(issuerEventId, issuerEventId, eventStatus, deviceClass, eventStatusTime, \
+ utilityEnrollmentGroup, criticalityLevelApplied, actionRequired, \
+ coolingTemperatureSetPointApplied, heatingTemperatureSetPointApplied, \
+ averageLoadAdjustmentPercentageApplied, dutyCycleApplied, eventControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REPORT_EVENT_STATUS_COMMAND_ID, "uuuuuuuuuuuuu", issuerEventId, issuerEventId, eventStatus, \
+ deviceClass, eventStatusTime, utilityEnrollmentGroup, criticalityLevelApplied, actionRequired, \
+ coolingTemperatureSetPointApplied, heatingTemperatureSetPointApplied, \
+ averageLoadAdjustmentPercentageApplied, dutyCycleApplied, eventControl);
+
+/** @brief Command description for PublishCalendar
+ *
+ * Command: PublishCalendar
+ * @param providerId INT32U
+ * @param earliestStartTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param minIssuerEventId INT32U
+ * @param issuerCalendarId INT32U
+ * @param numberOfCalendars INT8U
+ * @param startTime UTC_TIME
+ * @param calendarType CalendarType
+ * @param calendarType CalendarType
+ * @param providerId INT32U
+ * @param calendarTimeReference CalendarTimeReference
+ * @param calendarName OCTET_STRING
+ * @param numberOfSeasons INT8U
+ * @param numberOfWeekProfiles INT8U
+ * @param numberOfDayProfiles INT8U
+ */
+#define emberAfFillCommandCalendarClusterPublishCalendar( \
+ providerId, earliestStartTime, issuerEventId, minIssuerEventId, issuerCalendarId, numberOfCalendars, startTime, calendarType, \
+ calendarType, providerId, calendarTimeReference, calendarName, numberOfSeasons, numberOfWeekProfiles, numberOfDayProfiles) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_CALENDAR_COMMAND_ID, "uuuuuuuuuuuuuuu", providerId, earliestStartTime, issuerEventId, \
+ minIssuerEventId, issuerCalendarId, numberOfCalendars, startTime, calendarType, calendarType, \
+ providerId, calendarTimeReference, calendarName, numberOfSeasons, numberOfWeekProfiles, \
+ numberOfDayProfiles);
+
+/** @brief Command description for PublishDayProfile
+ *
+ * Command: PublishDayProfile
+ * @param providerId INT32U
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerCalendarId INT32U
+ * @param issuerCalendarId INT32U
+ * @param startDayId INT8U
+ * @param dayId INT8U
+ * @param numberOfDays INT8U
+ * @param totalNumberOfScheduleEntries INT8U
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param calendarType CalendarType
+ * @param dayScheduleEntries ScheduleEntry []
+ * @param dayScheduleEntriesLen int
+ */
+#define emberAfFillCommandCalendarClusterPublishDayProfile( \
+ providerId, providerId, issuerEventId, issuerCalendarId, issuerCalendarId, startDayId, dayId, numberOfDays, \
+ totalNumberOfScheduleEntries, commandIndex, totalNumberOfCommands, calendarType, dayScheduleEntries, dayScheduleEntriesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_DAY_PROFILE_COMMAND_ID, "uuuuuuuuuuuub", providerId, providerId, issuerEventId, \
+ issuerCalendarId, issuerCalendarId, startDayId, dayId, numberOfDays, totalNumberOfScheduleEntries, \
+ commandIndex, totalNumberOfCommands, calendarType, dayScheduleEntries, dayScheduleEntriesLen);
+
+/** @brief Command description for PublishWeekProfile
+ *
+ * Command: PublishWeekProfile
+ * @param providerId INT32U
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerCalendarId INT32U
+ * @param issuerCalendarId INT32U
+ * @param startWeekId INT8U
+ * @param weekId INT8U
+ * @param numberOfWeeks INT8U
+ * @param dayIdRefMonday INT8U
+ * @param dayIdRefTuesday INT8U
+ * @param dayIdRefWednesday INT8U
+ * @param dayIdRefThursday INT8U
+ * @param dayIdRefFriday INT8U
+ * @param dayIdRefSaturday INT8U
+ * @param dayIdRefSunday INT8U
+ */
+#define emberAfFillCommandCalendarClusterPublishWeekProfile( \
+ providerId, providerId, issuerEventId, issuerCalendarId, issuerCalendarId, startWeekId, weekId, numberOfWeeks, dayIdRefMonday, \
+ dayIdRefTuesday, dayIdRefWednesday, dayIdRefThursday, dayIdRefFriday, dayIdRefSaturday, dayIdRefSunday) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_WEEK_PROFILE_COMMAND_ID, "uuuuuuuuuuuuuuu", providerId, providerId, issuerEventId, \
+ issuerCalendarId, issuerCalendarId, startWeekId, weekId, numberOfWeeks, dayIdRefMonday, \
+ dayIdRefTuesday, dayIdRefWednesday, dayIdRefThursday, dayIdRefFriday, dayIdRefSaturday, \
+ dayIdRefSunday);
+
+/** @brief Command description for PublishSeasons
+ *
+ * Command: PublishSeasons
+ * @param providerId INT32U
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param issuerCalendarId INT32U
+ * @param issuerCalendarId INT32U
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param seasonEntries SeasonEntry []
+ * @param seasonEntriesLen int
+ */
+#define emberAfFillCommandCalendarClusterPublishSeasons(providerId, providerId, issuerEventId, issuerCalendarId, issuerCalendarId, \
+ commandIndex, totalNumberOfCommands, seasonEntries, seasonEntriesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_SEASONS_COMMAND_ID, "uuuuuuub", providerId, providerId, issuerEventId, issuerCalendarId, \
+ issuerCalendarId, commandIndex, totalNumberOfCommands, seasonEntries, seasonEntriesLen);
+
+/** @brief Command description for PublishSpecialDays
+ *
+ * Command: PublishSpecialDays
+ * @param providerId INT32U
+ * @param startTime UTC_TIME
+ * @param issuerEventId INT32U
+ * @param numberOfEvents INT8U
+ * @param issuerCalendarId INT32U
+ * @param calendarType CalendarType
+ * @param startTime UTC_TIME
+ * @param providerId INT32U
+ * @param calendarType CalendarType
+ * @param issuerCalendarId INT32U
+ * @param totalNumberOfSpecialDays INT8U
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param specialDayEntries SpecialDay []
+ * @param specialDayEntriesLen int
+ */
+#define emberAfFillCommandCalendarClusterPublishSpecialDays( \
+ providerId, startTime, issuerEventId, numberOfEvents, issuerCalendarId, calendarType, startTime, providerId, calendarType, \
+ issuerCalendarId, totalNumberOfSpecialDays, commandIndex, totalNumberOfCommands, specialDayEntries, specialDayEntriesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUBLISH_SPECIAL_DAYS_COMMAND_ID, "uuuuuuuuuuuuub", providerId, startTime, issuerEventId, \
+ numberOfEvents, issuerCalendarId, calendarType, startTime, providerId, calendarType, \
+ issuerCalendarId, totalNumberOfSpecialDays, commandIndex, totalNumberOfCommands, specialDayEntries, \
+ specialDayEntriesLen);
+
+/** @brief Command description for GetCalendarCancellation
+ *
+ * Command: GetCalendarCancellation
+ * @param providerId INT32U
+ * @param issuerCalendarId INT32U
+ * @param calendarType CalendarType
+ */
+#define emberAfFillCommandCalendarClusterGetCalendarCancellation(providerId, issuerCalendarId, calendarType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CALENDAR_CANCELLATION_COMMAND_ID, "uuu", providerId, issuerCalendarId, calendarType);
+
+/** @brief Command description for GetChangeOfTenancy
+ *
+ * Command: GetChangeOfTenancy
+ * @param providerId INT32U
+ * @param issuerEventId INT32U
+ * @param tariffType TariffType
+ * @param implementationDateTime UTC_TIME
+ * @param proposedTenancyChangeControl ProposedChangeControl
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterGetChangeOfTenancy(providerId, issuerEventId, tariffType, implementationDateTime, \
+ proposedTenancyChangeControl) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CHANGE_OF_TENANCY_COMMAND_ID, "uuuuu", providerId, issuerEventId, tariffType, \
+ implementationDateTime, proposedTenancyChangeControl);
+
+/** @brief Command description for GetChangeOfSupplier
+ *
+ * Command: GetChangeOfSupplier
+ * @param currentProviderId INT32U
+ * @param issuerEventId INT32U
+ * @param tariffType TariffType
+ * @param proposedProviderId INT32U
+ * @param providerChangeImplementationTime UTC_TIME
+ * @param providerChangeControl ProposedChangeControl
+ * @param proposedProviderName OCTET_STRING
+ * @param proposedProviderContactDetails OCTET_STRING
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterGetChangeOfSupplier(currentProviderId, issuerEventId, tariffType, proposedProviderId, \
+ providerChangeImplementationTime, providerChangeControl, proposedProviderName, \
+ proposedProviderContactDetails) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CHANGE_OF_SUPPLIER_COMMAND_ID, "uuuuuuuu", currentProviderId, issuerEventId, tariffType, \
+ proposedProviderId, providerChangeImplementationTime, providerChangeControl, \
+ proposedProviderName, proposedProviderContactDetails);
+
+/** @brief Command description for RequestNewPassword
+ *
+ * Command: RequestNewPassword
+ * @param passwordType PasswordType
+ * @param issuerEventId INT32U
+ * @param implementationDateTime UTC_TIME
+ * @param durationInMinutes INT16U
+ * @param passwordType PasswordType
+ * @param password OCTET_STRING
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterRequestNewPassword(passwordType, issuerEventId, implementationDateTime, durationInMinutes, passwordType, \
+ password) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_NEW_PASSWORD_COMMAND_ID, "uuuuuu", passwordType, issuerEventId, \
+ implementationDateTime, durationInMinutes, passwordType, password);
+
+/** @brief Command description for GetSiteId
+ *
+ * Command: GetSiteId
+ * @param issuerEventId INT32U
+ * @param siteIdTime UTC_TIME
+ * @param providerId INT32U
+ * @param siteId OCTET_STRING
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterGetSiteId(issuerEventId, siteIdTime, providerId, siteId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SITE_ID_COMMAND_ID, "uuuu", issuerEventId, siteIdTime, providerId, siteId);
+
+/** @brief Command description for ReportEventConfiguration
+ *
+ * Command: ReportEventConfiguration
+ * @param commandIndex INT8U
+ * @param issuerEventId INT32U
+ * @param totalCommands INT8U
+ * @param startDateTime UTC_TIME
+ * @param eventConfigurationPayload EventConfigurationPayload []
+ * @param eventConfigurationPayloadLen int
+ * @param eventConfiguration EventConfiguration
+ * @param configurationControl EventConfigurationControl
+ * @param eventConfigurationPayload INT8U []
+ * @param eventConfigurationPayloadLen int
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterReportEventConfiguration(commandIndex, issuerEventId, totalCommands, startDateTime, \
+ eventConfigurationPayload, eventConfigurationPayloadLen, eventConfiguration, \
+ configurationControl, eventConfigurationPayload, eventConfigurationPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REPORT_EVENT_CONFIGURATION_COMMAND_ID, "uuuubuub", commandIndex, issuerEventId, \
+ totalCommands, startDateTime, eventConfigurationPayload, eventConfigurationPayloadLen, \
+ eventConfiguration, configurationControl, eventConfigurationPayload, \
+ eventConfigurationPayloadLen);
+
+/** @brief Command description for GetCIN
+ *
+ * Command: GetCIN
+ * @param eventId INT16U
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterGetCIN(eventId) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_CIN_COMMAND_ID, "u", eventId);
+
+/** @brief Command description for UpdateCIN
+ *
+ * Command: UpdateCIN
+ * @param issuerEventId INT32U
+ * @param implementationTime UTC_TIME
+ * @param providerId INT32U
+ * @param customerIdNumber OCTET_STRING
+ */
+#define emberAfFillCommandDevice \
+ ManagementClusterUpdateCIN(issuerEventId, implementationTime, providerId, customerIdNumber) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_UPDATE_CIN_COMMAND_ID, "uuuu", issuerEventId, implementationTime, providerId, customerIdNumber);
+
+/** @brief Command description for GetEventLog
+ *
+ * Command: GetEventLog
+ * @param eventControlLogId EventControlLogId
+ * @param logId EventLogId
+ * @param eventId INT16U
+ * @param eventId INT16U
+ * @param startTime UTC_TIME
+ * @param eventTime UTC_TIME
+ * @param endTime UTC_TIME
+ * @param eventControl EventActionControl
+ * @param numberOfEvents INT8U
+ * @param eventData OCTET_STRING
+ * @param eventOffset INT16U
+ */
+#define emberAfFillCommandEventsClusterGetEventLog(eventControlLogId, logId, eventId, eventId, startTime, eventTime, endTime, \
+ eventControl, numberOfEvents, eventData, eventOffset) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_EVENT_LOG_COMMAND_ID, "uuuuuuuuuuu", eventControlLogId, logId, eventId, eventId, startTime, \
+ eventTime, endTime, eventControl, numberOfEvents, eventData, eventOffset);
+
+/** @brief Command description for ClearEventLogRequest
+ *
+ * Command: ClearEventLogRequest
+ * @param logId EventLogId
+ * @param totalNumberOfEvents INT16U
+ * @param commandIndex INT8U
+ * @param totalCommands INT8U
+ * @param logPayloadControl NumberOfEventsLogPayloadControl
+ * @param logPayload EventLogPayload []
+ * @param logPayloadLen int
+ */
+#define emberAfFillCommandEventsClusterClearEventLogRequest(logId, totalNumberOfEvents, commandIndex, totalCommands, \
+ logPayloadControl, logPayload, logPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_EVENT_LOG_REQUEST_COMMAND_ID, "uuuuub", logId, totalNumberOfEvents, commandIndex, \
+ totalCommands, logPayloadControl, logPayload, logPayloadLen);
+
+/** @brief Command description for ClearEventLogResponse
+ *
+ * Command: ClearEventLogResponse
+ * @param clearedEventsLogs ClearedEventsLogs
+ */
+#define emberAfFillCommandEventsClusterClearEventLogResponse(clearedEventsLogs) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_EVENT_LOG_RESPONSE_COMMAND_ID, "u", clearedEventsLogs);
+
+/** @brief Command description for PairingResponse
+ *
+ * Command: PairingResponse
+ * @param pairingInformationVersion INT32U
+ * @param localPairingInformationVersion INT32U
+ * @param totalNumberOfDevices INT8U
+ * @param eui64OfRequestingDevice IEEE_ADDRESS
+ * @param commandIndex INT8U
+ * @param totalNumberOfCommands INT8U
+ * @param eui64s IEEE_ADDRESS []
+ * @param eui64sLen int
+ */
+#define emberAfFillCommandMDU \
+ PairingClusterPairingResponse(pairingInformationVersion, localPairingInformationVersion, totalNumberOfDevices, \
+ eui64OfRequestingDevice, commandIndex, totalNumberOfCommands, eui64s, eui64sLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PAIRING_RESPONSE_COMMAND_ID, "uuuuuub", pairingInformationVersion, \
+ localPairingInformationVersion, totalNumberOfDevices, eui64OfRequestingDevice, commandIndex, \
+ totalNumberOfCommands, eui64s, eui64sLen);
+
+/** @brief Command description for GetSuspendZclMessagesStatus
+ *
+ * Command: GetSuspendZclMessagesStatus
+ * @param period INT8U
+ */
+#define emberAfFillCommandSub \
+ -GHzClusterGetSuspendZclMessagesStatus(period) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_SUSPEND_ZCL_MESSAGES_STATUS_COMMAND_ID, "u", period);
+
+/** @brief Command description for InitiateKeyEstablishmentRequest
+ *
+ * Command: InitiateKeyEstablishmentRequest
+ * @param keyEstablishmentSuite BITMAP16
+ * @param requestedKeyEstablishmentSuite BITMAP16
+ * @param ephemeralDataGenerateTime INT8U
+ * @param ephemeralDataGenerateTime INT8U
+ * @param confirmKeyGenerateTime INT8U
+ * @param confirmKeyGenerateTime INT8U
+ * @param identity Identity
+ * @param identity Identity
+ */
+#define emberAfFillCommandKey \
+ EstablishmentClusterInitiateKeyEstablishmentRequest(keyEstablishmentSuite, requestedKeyEstablishmentSuite, \
+ ephemeralDataGenerateTime, ephemeralDataGenerateTime, \
+ confirmKeyGenerateTime, confirmKeyGenerateTime, identity, identity) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_INITIATE_KEY_ESTABLISHMENT_REQUEST_COMMAND_ID, "uuuuuuuu", keyEstablishmentSuite, \
+ requestedKeyEstablishmentSuite, ephemeralDataGenerateTime, ephemeralDataGenerateTime, \
+ confirmKeyGenerateTime, confirmKeyGenerateTime, identity, identity);
+
+/** @brief Command description for EphemeralDataRequest
+ *
+ * Command: EphemeralDataRequest
+ * @param ephemeralData EphemeralData
+ * @param ephemeralData EphemeralData
+ */
+#define emberAfFillCommandKey \
+ EstablishmentClusterEphemeralDataRequest(ephemeralData, ephemeralData) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EPHEMERAL_DATA_REQUEST_COMMAND_ID, "uu", ephemeralData, ephemeralData);
+
+/** @brief Command description for ConfirmKeyDataRequest
+ *
+ * Command: ConfirmKeyDataRequest
+ * @param secureMessageAuthenticationCode Smac
+ * @param secureMessageAuthenticationCode Smac
+ */
+#define emberAfFillCommandKey \
+ EstablishmentClusterConfirmKeyDataRequest(secureMessageAuthenticationCode, secureMessageAuthenticationCode) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIRM_KEY_DATA_REQUEST_COMMAND_ID, "uu", secureMessageAuthenticationCode, \
+ secureMessageAuthenticationCode);
+
+/** @brief Command description for TerminateKeyEstablishment
+ *
+ * Command: TerminateKeyEstablishment
+ * @param statusCode AmiKeyEstablishmentStatus
+ * @param waitTime INT8U
+ * @param keyEstablishmentSuite BITMAP16
+ */
+#define emberAfFillCommandKey \
+ EstablishmentClusterTerminateKeyEstablishment(statusCode, waitTime, keyEstablishmentSuite) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TERMINATE_KEY_ESTABLISHMENT_COMMAND_ID, "uuu", statusCode, waitTime, keyEstablishmentSuite);
+
+/** @brief Command description for RequestInformation
+ *
+ * Command: RequestInformation
+ * @param inquiryId ENUM8
+ * @param number INT8U
+ * @param dataTypeId BITMAP8
+ * @param buffer INT8U []
+ * @param bufferLen int
+ * @param requestInformationPayload INT8U []
+ * @param requestInformationPayloadLen int
+ */
+#define emberAfFillCommandInformationClusterRequestInformation(inquiryId, number, dataTypeId, buffer, bufferLen, \
+ requestInformationPayload, requestInformationPayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_INFORMATION_COMMAND_ID, "uuubb", inquiryId, number, dataTypeId, buffer, bufferLen, \
+ requestInformationPayload, requestInformationPayloadLen);
+
+/** @brief Command description for PushInformationResponse
+ *
+ * Command: PushInformationResponse
+ * @param notificationList Notification []
+ * @param notificationListLen int
+ * @param contents INT8U []
+ * @param contentsLen int
+ */
+#define emberAfFillCommandInformationClusterPushInformationResponse(notificationList, notificationListLen, contents, contentsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PUSH_INFORMATION_RESPONSE_COMMAND_ID, "bb", notificationList, notificationListLen, contents, \
+ contentsLen);
+
+/** @brief Command description for SendPreference
+ *
+ * Command: SendPreference
+ * @param preferenceType INT16U
+ * @param statusFeedbackList Status []
+ * @param statusFeedbackListLen int
+ * @param preferencePayload INT8U []
+ * @param preferencePayloadLen int
+ */
+#define emberAfFillCommandInformationClusterSendPreference(preferenceType, statusFeedbackList, statusFeedbackListLen, \
+ preferencePayload, preferencePayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SEND_PREFERENCE_COMMAND_ID, "ubb", preferenceType, statusFeedbackList, statusFeedbackListLen, \
+ preferencePayload, preferencePayloadLen);
+
+/** @brief Command description for ServerRequestPreference
+ *
+ * Command: ServerRequestPreference
+ * @param statusFeedback Status
+ * @param preferenceType INT16U
+ * @param preferencePayload INT8U []
+ * @param preferencePayloadLen int
+ */
+#define emberAfFillCommandInformationClusterServerRequestPreference(statusFeedback, preferenceType, preferencePayload, \
+ preferencePayloadLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SERVER_REQUEST_PREFERENCE_COMMAND_ID, "uub", statusFeedback, preferenceType, preferencePayload, \
+ preferencePayloadLen);
+
+/** @brief Command description for Update
+ *
+ * Command: Update
+ * @param accessControl ENUM8
+ * @param statusFeedbackList Status []
+ * @param statusFeedbackListLen int
+ * @param option BITMAP8
+ * @param contents INT8U []
+ * @param contentsLen int
+ */
+#define emberAfFillCommandInformationClusterUpdate(accessControl, statusFeedbackList, statusFeedbackListLen, option, contents, \
+ contentsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UPDATE_COMMAND_ID, "ubub", accessControl, statusFeedbackList, statusFeedbackListLen, option, \
+ contents, contentsLen);
+
+/** @brief Command description for Delete
+ *
+ * Command: Delete
+ * @param deletionOptions BITMAP8
+ * @param notificationList Notification []
+ * @param notificationListLen int
+ * @param contentIds INT16U []
+ * @param contentIdsLen int
+ */
+#define emberAfFillCommandInformationClusterDelete(deletionOptions, notificationList, notificationListLen, contentIds, \
+ contentIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DELETE_COMMAND_ID, "ubb", deletionOptions, notificationList, notificationListLen, contentIds, \
+ contentIdsLen);
+
+/** @brief Command description for ConfigureNodeDescription
+ *
+ * Command: ConfigureNodeDescription
+ * @param description CHAR_STRING
+ * @param notificationList Notification []
+ * @param notificationListLen int
+ */
+#define emberAfFillCommandInformationClusterConfigureNodeDescription(description, notificationList, notificationListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_NODE_DESCRIPTION_COMMAND_ID, "ub", description, notificationList, \
+ notificationListLen);
+
+/** @brief Command description for ConfigureDeliveryEnable
+ *
+ * Command: ConfigureDeliveryEnable
+ * @param enable BOOLEAN
+ */
+#define emberAfFillCommandInformationClusterConfigureDeliveryEnable(enable) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_DELIVERY_ENABLE_COMMAND_ID, "u", enable);
+
+/** @brief Command description for ConfigurePushInformationTimer
+ *
+ * Command: ConfigurePushInformationTimer
+ * @param timer INT32U
+ */
+#define emberAfFillCommandInformationClusterConfigurePushInformationTimer(timer) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_PUSH_INFORMATION_TIMER_COMMAND_ID, "u", timer);
+
+/** @brief Command description for ConfigureSetRootId
+ *
+ * Command: ConfigureSetRootId
+ * @param rootId INT16U
+ */
+#define emberAfFillCommandInformationClusterConfigureSetRootId(rootId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONFIGURE_SET_ROOT_ID_COMMAND_ID, "u", rootId);
+
+/** @brief Command description for ReadFileRequest
+ *
+ * Command: ReadFileRequest
+ * @param fileIndex INT16U
+ * @param writeOptions BITMAP8
+ * @param fileStartPositionAndRequestedOctetCount INT8U []
+ * @param fileStartPositionAndRequestedOctetCountLen int
+ * @param fileSize INT8U []
+ * @param fileSizeLen int
+ */
+#define emberAfFillCommandData \
+ SharingClusterReadFileRequest(fileIndex, writeOptions, fileStartPositionAndRequestedOctetCount, \
+ fileStartPositionAndRequestedOctetCountLen, fileSize, fileSizeLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READ_FILE_REQUEST_COMMAND_ID, "uubb", fileIndex, writeOptions, \
+ fileStartPositionAndRequestedOctetCount, fileStartPositionAndRequestedOctetCountLen, fileSize, \
+ fileSizeLen);
+
+/** @brief Command description for ReadRecordRequest
+ *
+ * Command: ReadRecordRequest
+ * @param fileIndex INT16U
+ * @param fileIndex INT16U
+ * @param fileStartRecordAndRequestedRecordCount INT8U []
+ * @param fileStartRecordAndRequestedRecordCountLen int
+ * @param fileStartPosition INT32U
+ * @param octetCount INT32U
+ */
+#define emberAfFillCommandData \
+ SharingClusterReadRecordRequest(fileIndex, fileIndex, fileStartRecordAndRequestedRecordCount, \
+ fileStartRecordAndRequestedRecordCountLen, fileStartPosition, octetCount) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READ_RECORD_REQUEST_COMMAND_ID, "uubuu", fileIndex, fileIndex, \
+ fileStartRecordAndRequestedRecordCount, fileStartRecordAndRequestedRecordCountLen, \
+ fileStartPosition, octetCount);
+
+/** @brief Command description for WriteFileResponse
+ *
+ * Command: WriteFileResponse
+ * @param status ENUM8
+ * @param fileIndex INT16U
+ * @param fileIndex INT8U []
+ * @param fileIndexLen int
+ * @param fileStartRecord INT16U
+ * @param recordCount INT16U
+ */
+#define emberAfFillCommandData \
+ SharingClusterWriteFileResponse(status, fileIndex, fileIndex, fileIndexLen, fileStartRecord, recordCount) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_WRITE_FILE_RESPONSE_COMMAND_ID, "uubuu", status, fileIndex, fileIndex, fileIndexLen, \
+ fileStartRecord, recordCount);
+
+/** @brief Command description for FileTransmission
+ *
+ * Command: FileTransmission
+ * @param transmitOptions BITMAP8
+ * @param buffer INT8U []
+ * @param bufferLen int
+ */
+#define emberAfFillCommandData \
+ SharingClusterFileTransmission(transmitOptions, buffer, bufferLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_FILE_TRANSMISSION_COMMAND_ID, "ub", transmitOptions, buffer, bufferLen);
+
+/** @brief Command description for RecordTransmission
+ *
+ * Command: RecordTransmission
+ * @param transmitOptions BITMAP8
+ * @param buffer INT8U []
+ * @param bufferLen int
+ */
+#define emberAfFillCommandData \
+ SharingClusterRecordTransmission(transmitOptions, buffer, bufferLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RECORD_TRANSMISSION_COMMAND_ID, "ub", transmitOptions, buffer, bufferLen);
+
+/** @brief Command description for SearchGame
+ *
+ * Command: SearchGame
+ * @param specificGame ENUM8
+ * @param gameId INT16U
+ * @param gameId INT16U
+ * @param gameMaster BOOLEAN
+ * @param listOfGame CHAR_STRING
+ */
+#define emberAfFillCommandGamingClusterSearchGame(specificGame, gameId, gameId, gameMaster, listOfGame) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SEARCH_GAME_COMMAND_ID, "uuuuu", specificGame, gameId, gameId, gameMaster, listOfGame);
+
+/** @brief Command description for JoinGame
+ *
+ * Command: JoinGame
+ * @param gameId INT16U
+ * @param commandId INT8U
+ * @param joinAsMaster BOOLEAN
+ * @param status BITMAP8
+ * @param nameOfGame CHAR_STRING
+ * @param message CHAR_STRING
+ */
+#define emberAfFillCommandGamingClusterJoinGame(gameId, commandId, joinAsMaster, status, nameOfGame, message) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_JOIN_GAME_COMMAND_ID, "uuuuuu", gameId, commandId, joinAsMaster, status, nameOfGame, message);
+
+/** @brief Command description for StartGame
+ *
+ * Command: StartGame
+ */
+#define emberAfFillCommandGamingClusterStartGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for PauseGame
+ *
+ * Command: PauseGame
+ */
+#define emberAfFillCommandGamingClusterPauseGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PAUSE_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for ResumeGame
+ *
+ * Command: ResumeGame
+ */
+#define emberAfFillCommandGamingClusterResumeGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESUME_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for QuitGame
+ *
+ * Command: QuitGame
+ */
+#define emberAfFillCommandGamingClusterQuitGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_QUIT_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for EndGame
+ *
+ * Command: EndGame
+ */
+#define emberAfFillCommandGamingClusterEndGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_END_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for StartOver
+ *
+ * Command: StartOver
+ */
+#define emberAfFillCommandGamingClusterStartOver() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_OVER_COMMAND_ID, "", );
+
+/** @brief Command description for ActionControl
+ *
+ * Command: ActionControl
+ * @param actions BITMAP32
+ */
+#define emberAfFillCommandGamingClusterActionControl(actions) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ACTION_CONTROL_COMMAND_ID, "u", actions);
+
+/** @brief Command description for DownloadGame
+ *
+ * Command: DownloadGame
+ */
+#define emberAfFillCommandGamingClusterDownloadGame() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DOWNLOAD_GAME_COMMAND_ID, "", );
+
+/** @brief Command description for PathCreation
+ *
+ * Command: PathCreation
+ * @param originatorAddress DATA16
+ * @param originatorAddress DATA16
+ * @param destinationAddress DATA16
+ * @param destinationAddress DATA16
+ * @param dataRate INT8U
+ * @param dataRate INT8U
+ */
+#define emberAfFillCommandData \
+ Rate ControlClusterPathCreation(originatorAddress, originatorAddress, destinationAddress, destinationAddress, dataRate, \
+ dataRate) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PATH_CREATION_COMMAND_ID, "uuuuuu", originatorAddress, originatorAddress, \
+ destinationAddress, destinationAddress, dataRate, dataRate);
+
+/** @brief Command description for DataRateNotification
+ *
+ * Command: DataRateNotification
+ * @param originatorAddress DATA16
+ * @param destinationAddress DATA16
+ * @param dataRate INT8U
+ */
+#define emberAfFillCommandData \
+ Rate ControlClusterDataRateNotification(originatorAddress, destinationAddress, dataRate) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DATA_RATE_NOTIFICATION_COMMAND_ID, "uuu", originatorAddress, destinationAddress, dataRate);
+
+/** @brief Command description for PathDeletion
+ *
+ * Command: PathDeletion
+ * @param originatorAddress DATA16
+ * @param destinationAddress DATA16
+ */
+#define emberAfFillCommandData \
+ Rate ControlClusterPathDeletion(originatorAddress, destinationAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PATH_DELETION_COMMAND_ID, "uu", originatorAddress, destinationAddress);
+
+/** @brief Command description for EstablishmentRequest
+ *
+ * Command: EstablishmentRequest
+ * @param flag BITMAP8
+ * @param ackNack ENUM8
+ * @param codecType ENUM8
+ * @param codecType ENUM8
+ * @param sampFreq ENUM8
+ * @param codecRate ENUM8
+ * @param serviceType ENUM8
+ * @param buffer INT8U []
+ * @param bufferLen int
+ */
+#define emberAfFillCommandVoice \
+ over ZigBeeClusterEstablishmentRequest(flag, ackNack, codecType, codecType, sampFreq, codecRate, serviceType, buffer, \
+ bufferLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ESTABLISHMENT_REQUEST_COMMAND_ID, "uuuuuuub", flag, ackNack, codecType, codecType, sampFreq, \
+ codecRate, serviceType, buffer, bufferLen);
+
+/** @brief Command description for VoiceTransmission
+ *
+ * Command: VoiceTransmission
+ * @param voiceData INT8U []
+ * @param voiceDataLen int
+ * @param sequenceNumber INT8U
+ * @param errorFlag ENUM8
+ */
+#define emberAfFillCommandVoice \
+ over ZigBeeClusterVoiceTransmission(voiceData, voiceDataLen, sequenceNumber, errorFlag) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_VOICE_TRANSMISSION_COMMAND_ID, "buu", voiceData, voiceDataLen, sequenceNumber, errorFlag);
+
+/** @brief Command description for VoiceTransmissionCompletion
+ *
+ * Command: VoiceTransmissionCompletion
+ * @param controlType ENUM8
+ */
+#define emberAfFillCommandVoice \
+ over ZigBeeClusterVoiceTransmissionCompletion(controlType) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_VOICE_TRANSMISSION_COMPLETION_COMMAND_ID, "u", controlType);
+
+/** @brief Command description for ControlResponse
+ *
+ * Command: ControlResponse
+ * @param ackNack ENUM8
+ */
+#define emberAfFillCommandVoice \
+ over ZigBeeClusterControlResponse(ackNack) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CONTROL_RESPONSE_COMMAND_ID, "u", ackNack);
+
+/** @brief Command description for JoinChatRequest
+ *
+ * Command: JoinChatRequest
+ * @param uid INT16U
+ * @param status ENUM8
+ * @param nickname CHAR_STRING
+ * @param cid INT16U
+ * @param cid INT16U
+ */
+#define emberAfFillCommandChattingClusterJoinChatRequest(uid, status, nickname, cid, cid) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_JOIN_CHAT_REQUEST_COMMAND_ID, "uuuuu", uid, status, nickname, cid, cid);
+
+/** @brief Command description for LeaveChatRequest
+ *
+ * Command: LeaveChatRequest
+ * @param cid INT16U
+ * @param status ENUM8
+ * @param uid INT16U
+ * @param cid INT16U
+ * @param chatParticipantList ChatParticipant []
+ * @param chatParticipantListLen int
+ */
+#define emberAfFillCommandChattingClusterLeaveChatRequest(cid, status, uid, cid, chatParticipantList, chatParticipantListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LEAVE_CHAT_REQUEST_COMMAND_ID, "uuuub", cid, status, uid, cid, chatParticipantList, \
+ chatParticipantListLen);
+
+/** @brief Command description for SearchChatRequest
+ *
+ * Command: SearchChatRequest
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param nickname CHAR_STRING
+ */
+#define emberAfFillCommandChattingClusterSearchChatRequest(cid, uid, nickname) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SEARCH_CHAT_REQUEST_COMMAND_ID, "uuu", cid, uid, nickname);
+
+/** @brief Command description for SwitchChairmanResponse
+ *
+ * Command: SwitchChairmanResponse
+ * @param cid INT16U
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param uid INT16U
+ * @param nickname CHAR_STRING
+ */
+#define emberAfFillCommandChattingClusterSwitchChairmanResponse(cid, cid, uid, uid, nickname) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SWITCH_CHAIRMAN_RESPONSE_COMMAND_ID, "uuuuu", cid, cid, uid, uid, nickname);
+
+/** @brief Command description for StartChatRequest
+ *
+ * Command: StartChatRequest
+ * @param name CHAR_STRING
+ * @param options BITMAP8
+ * @param uid INT16U
+ * @param chatRoomList ChatRoom []
+ * @param chatRoomListLen int
+ * @param nickname CHAR_STRING
+ */
+#define emberAfFillCommandChattingClusterStartChatRequest(name, options, uid, chatRoomList, chatRoomListLen, nickname) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_CHAT_REQUEST_COMMAND_ID, "uuubu", name, options, uid, chatRoomList, chatRoomListLen, \
+ nickname);
+
+/** @brief Command description for ChatMessage
+ *
+ * Command: ChatMessage
+ * @param destinationUid INT16U
+ * @param cid INT16U
+ * @param sourceUid INT16U
+ * @param cid INT16U
+ * @param nickname CHAR_STRING
+ * @param message CHAR_STRING
+ */
+#define emberAfFillCommandChattingClusterChatMessage(destinationUid, cid, sourceUid, cid, nickname, message) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CHAT_MESSAGE_COMMAND_ID, "uuuuuu", destinationUid, cid, sourceUid, cid, nickname, message);
+
+/** @brief Command description for GetNodeInformationRequest
+ *
+ * Command: GetNodeInformationRequest
+ * @param cid INT16U
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param nodeInformationList NodeInformation []
+ * @param nodeInformationListLen int
+ */
+#define emberAfFillCommandChattingClusterGetNodeInformationRequest(cid, cid, uid, nodeInformationList, nodeInformationListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_NODE_INFORMATION_REQUEST_COMMAND_ID, "uuub", cid, cid, uid, nodeInformationList, \
+ nodeInformationListLen);
+
+/** @brief Command description for SwitchChairmanNotification
+ *
+ * Command: SwitchChairmanNotification
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param address DATA16
+ * @param endpoint INT8U
+ */
+#define emberAfFillCommandChattingClusterSwitchChairmanNotification(cid, uid, address, endpoint) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SWITCH_CHAIRMAN_NOTIFICATION_COMMAND_ID, "uuuu", cid, uid, address, endpoint);
+
+/** @brief Command description for GetNodeInformationResponse
+ *
+ * Command: GetNodeInformationResponse
+ * @param status ENUM8
+ * @param cid INT16U
+ * @param uid INT16U
+ * @param addressEndpointAndNickname INT8U []
+ * @param addressEndpointAndNicknameLen int
+ */
+#define emberAfFillCommandChattingClusterGetNodeInformationResponse(status, cid, uid, addressEndpointAndNickname, \
+ addressEndpointAndNicknameLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_NODE_INFORMATION_RESPONSE_COMMAND_ID, "uuub", status, cid, uid, addressEndpointAndNickname, \
+ addressEndpointAndNicknameLen);
+
+/** @brief Command description for BuyRequest
+ *
+ * Command: BuyRequest
+ * @param userId OCTET_STRING
+ * @param serialNumber OCTET_STRING
+ * @param userType INT16U
+ * @param currency INT32U
+ * @param serviceId INT16U
+ * @param priceTrailingDigit INT8U
+ * @param goodId OCTET_STRING
+ * @param price INT32U
+ * @param timestamp OCTET_STRING
+ * @param transId INT16U
+ * @param transStatus ENUM8
+ */
+#define emberAfFillCommandPaymentClusterBuyRequest(userId, serialNumber, userType, currency, serviceId, priceTrailingDigit, \
+ goodId, price, timestamp, transId, transStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BUY_REQUEST_COMMAND_ID, "uuuuuuuuuuu", userId, serialNumber, userType, currency, serviceId, \
+ priceTrailingDigit, goodId, price, timestamp, transId, transStatus);
+
+/** @brief Command description for AcceptPayment
+ *
+ * Command: AcceptPayment
+ * @param userId OCTET_STRING
+ * @param serialNumber OCTET_STRING
+ * @param userType INT16U
+ * @param currency INT32U
+ * @param serviceId INT16U
+ * @param priceTrailingDigit INT8U
+ * @param goodId OCTET_STRING
+ * @param price INT32U
+ * @param timestamp OCTET_STRING
+ */
+#define emberAfFillCommandPaymentClusterAcceptPayment(userId, serialNumber, userType, currency, serviceId, priceTrailingDigit, \
+ goodId, price, timestamp) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ACCEPT_PAYMENT_COMMAND_ID, "uuuuuuuuu", userId, serialNumber, userType, currency, serviceId, \
+ priceTrailingDigit, goodId, price, timestamp);
+
+/** @brief Command description for PaymentConfirm
+ *
+ * Command: PaymentConfirm
+ * @param serialNumber OCTET_STRING
+ * @param serialNumber OCTET_STRING
+ * @param transId INT16U
+ * @param status ENUM8
+ * @param transStatus ENUM8
+ */
+#define emberAfFillCommandPaymentClusterPaymentConfirm(serialNumber, serialNumber, transId, status, transStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_PAYMENT_CONFIRM_COMMAND_ID, "uuuuu", serialNumber, serialNumber, transId, status, transStatus);
+
+/** @brief Command description for Subscribe
+ *
+ * Command: Subscribe
+ * @param userId OCTET_STRING
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ * @param serviceProviderId INT16U
+ */
+#define emberAfFillCommandBillingClusterSubscribe(userId, userId, serviceId, serviceId, serviceProviderId, serviceProviderId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SUBSCRIBE_COMMAND_ID, "uuuuuu", userId, userId, serviceId, serviceId, serviceProviderId, \
+ serviceProviderId);
+
+/** @brief Command description for Unsubscribe
+ *
+ * Command: Unsubscribe
+ * @param userId OCTET_STRING
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ * @param serviceProviderId INT16U
+ * @param timestamp OCTET_STRING
+ * @param duration INT16U
+ */
+#define emberAfFillCommandBillingClusterUnsubscribe(userId, userId, serviceId, serviceId, serviceProviderId, serviceProviderId, \
+ timestamp, duration) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNSUBSCRIBE_COMMAND_ID, "uuuuuuuu", userId, userId, serviceId, serviceId, serviceProviderId, \
+ serviceProviderId, timestamp, duration);
+
+/** @brief Command description for StartBillingSession
+ *
+ * Command: StartBillingSession
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ */
+#define emberAfFillCommandBillingClusterStartBillingSession(userId, serviceId, serviceProviderId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_START_BILLING_SESSION_COMMAND_ID, "uuu", userId, serviceId, serviceProviderId);
+
+/** @brief Command description for StopBillingSession
+ *
+ * Command: StopBillingSession
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ */
+#define emberAfFillCommandBillingClusterStopBillingSession(userId, serviceId, serviceProviderId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STOP_BILLING_SESSION_COMMAND_ID, "uuu", userId, serviceId, serviceProviderId);
+
+/** @brief Command description for BillStatusNotification
+ *
+ * Command: BillStatusNotification
+ * @param userId OCTET_STRING
+ * @param status ENUM8
+ */
+#define emberAfFillCommandBillingClusterBillStatusNotification(userId, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BILL_STATUS_NOTIFICATION_COMMAND_ID, "uu", userId, status);
+
+/** @brief Command description for SessionKeepAlive
+ *
+ * Command: SessionKeepAlive
+ * @param userId OCTET_STRING
+ * @param serviceId INT16U
+ * @param serviceProviderId INT16U
+ */
+#define emberAfFillCommandBillingClusterSessionKeepAlive(userId, serviceId, serviceProviderId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SESSION_KEEP_ALIVE_COMMAND_ID, "uuu", userId, serviceId, serviceProviderId);
+
+/** @brief Command description for GetAlerts
+ *
+ * Command: GetAlerts
+ * @param alertsCount AlertCount
+ * @param alertStructures AlertStructure []
+ * @param alertStructuresLen int
+ */
+#define emberAfFillCommandAppliance \
+ Events and AlertClusterGetAlerts(alertsCount, alertStructures, alertStructuresLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_ALERTS_COMMAND_ID, "ub", alertsCount, alertStructures, alertStructuresLen);
+
+/** @brief Command description for AlertsNotification
+ *
+ * Command: AlertsNotification
+ * @param alertsCount AlertCount
+ * @param alertStructures AlertStructure []
+ * @param alertStructuresLen int
+ */
+#define emberAfFillCommandAppliance \
+ Events and AlertClusterAlertsNotification(alertsCount, alertStructures, alertStructuresLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ALERTS_NOTIFICATION_COMMAND_ID, "ub", alertsCount, alertStructures, alertStructuresLen);
+
+/** @brief Command description for EventsNotification
+ *
+ * Command: EventsNotification
+ * @param eventHeader INT8U
+ * @param eventId EventIdentification
+ */
+#define emberAfFillCommandAppliance \
+ Events and AlertClusterEventsNotification(eventHeader, eventId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_EVENTS_NOTIFICATION_COMMAND_ID, "uu", eventHeader, eventId);
+
+/** @brief Command description for LogNotification
+ *
+ * Command: LogNotification
+ * @param timeStamp TIME_OF_DAY
+ * @param logId INT32U
+ * @param logId INT32U
+ * @param logLength INT32U
+ * @param logPayload INT8U []
+ * @param logPayloadLen int
+ */
+#define emberAfFillCommandAppliance \
+ StatisticsClusterLogNotification(timeStamp, logId, logId, logLength, logPayload, logPayloadLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_LOG_NOTIFICATION_COMMAND_ID, "uuuub", timeStamp, logId, logId, logLength, logPayload, logPayloadLen);
+
+/** @brief Command description for LogQueueRequest
+ *
+ * Command: LogQueueRequest
+ * @param timeStamp TIME_OF_DAY
+ * @param logId INT32U
+ * @param logLength INT32U
+ * @param logPayload INT8U []
+ * @param logPayloadLen int
+ */
+#define emberAfFillCommandAppliance \
+ StatisticsClusterLogQueueRequest(timeStamp, logId, logLength, logPayload, logPayloadLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_LOG_QUEUE_REQUEST_COMMAND_ID, "uuub", timeStamp, logId, logLength, logPayload, logPayloadLen);
+
+/** @brief Command description for LogQueueResponse
+ *
+ * Command: LogQueueResponse
+ * @param logQueueSize INT8U
+ * @param logIds INT32U []
+ * @param logIdsLen int
+ */
+#define emberAfFillCommandAppliance \
+ StatisticsClusterLogQueueResponse(logQueueSize, logIds, logIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LOG_QUEUE_RESPONSE_COMMAND_ID, "ub", logQueueSize, logIds, logIdsLen);
+
+/** @brief Command description for StatisticsAvailable
+ *
+ * Command: StatisticsAvailable
+ * @param logQueueSize INT8U
+ * @param logIds INT32U []
+ * @param logIdsLen int
+ */
+#define emberAfFillCommandAppliance \
+ StatisticsClusterStatisticsAvailable(logQueueSize, logIds, logIdsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STATISTICS_AVAILABLE_COMMAND_ID, "ub", logQueueSize, logIds, logIdsLen);
+
+/** @brief Command description for GetProfileInfoCommand
+ *
+ * Command: GetProfileInfoCommand
+ * @param profileCount INT8U
+ * @param profileIntervalPeriod ENUM8
+ * @param maxNumberOfIntervals INT8U
+ * @param listOfAttributes INT16U []
+ * @param listOfAttributesLen int
+ */
+#define emberAfFillCommandElectrical \
+ MeasurementClusterGetProfileInfoCommand(profileCount, profileIntervalPeriod, maxNumberOfIntervals, listOfAttributes, \
+ listOfAttributesLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_PROFILE_INFO_COMMAND_COMMAND_ID, "uuub", profileCount, profileIntervalPeriod, \
+ maxNumberOfIntervals, listOfAttributes, listOfAttributesLen);
+
+/** @brief Command description for GetMeasurementProfileResponseCommand
+ *
+ * Command: GetMeasurementProfileResponseCommand
+ * @param startTime INT32U
+ * @param attributeId INT16U
+ * @param status ENUM8
+ * @param startTime INT32U
+ * @param profileIntervalPeriod ENUM8
+ * @param numberOfIntervals ENUM8
+ * @param numberOfIntervalsDelivered INT8U
+ * @param attributeId INT16U
+ * @param intervals INT8U []
+ * @param intervalsLen int
+ */
+#define emberAfFillCommandElectrical \
+ MeasurementClusterGetMeasurementProfileResponseCommand(startTime, attributeId, status, startTime, profileIntervalPeriod, \
+ numberOfIntervals, numberOfIntervalsDelivered, attributeId, intervals, \
+ intervalsLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_MEASUREMENT_PROFILE_RESPONSE_COMMAND_COMMAND_ID, "uuuuuuuub", startTime, attributeId, \
+ status, startTime, profileIntervalPeriod, numberOfIntervals, numberOfIntervalsDelivered, \
+ attributeId, intervals, intervalsLen);
+
+/** @brief Command description for ScanRequest
+ *
+ * Command: ScanRequest
+ * @param transaction INT32U
+ * @param zigbeeInformation ZigbeeInformation
+ * @param zllInformation ZllInformation
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterScanRequest(transaction, zigbeeInformation, zllInformation) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SCAN_REQUEST_COMMAND_ID, "uuu", transaction, zigbeeInformation, zllInformation);
+
+/** @brief Command description for ScanResponse
+ *
+ * Command: ScanResponse
+ * @param transaction INT32U
+ * @param rssiCorrection INT8U
+ * @param zigbeeInformation ZigbeeInformation
+ * @param zllInformation ZllInformation
+ * @param keyBitmask KeyBitmask
+ * @param responseId INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ * @param numberOfSubDevices INT8U
+ * @param totalGroupIds INT8U
+ * @param endpointId INT8U
+ * @param profileId INT16U
+ * @param deviceId INT16U
+ * @param version INT8U
+ * @param groupIdCount INT8U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterScanResponse(transaction, rssiCorrection, zigbeeInformation, zllInformation, keyBitmask, responseId, \
+ extendedPanId, networkUpdateId, logicalChannel, panId, networkAddress, numberOfSubDevices, \
+ totalGroupIds, endpointId, profileId, deviceId, version, groupIdCount) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SCAN_RESPONSE_COMMAND_ID, "uuuuuuuuuuuuuuuuuu", transaction, rssiCorrection, \
+ zigbeeInformation, zllInformation, keyBitmask, responseId, extendedPanId, networkUpdateId, \
+ logicalChannel, panId, networkAddress, numberOfSubDevices, totalGroupIds, endpointId, profileId, \
+ deviceId, version, groupIdCount);
+
+/** @brief Command description for DeviceInformationRequest
+ *
+ * Command: DeviceInformationRequest
+ * @param transaction INT32U
+ * @param startIndex INT8U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterDeviceInformationRequest(transaction, startIndex) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DEVICE_INFORMATION_REQUEST_COMMAND_ID, "uu", transaction, startIndex);
+
+/** @brief Command description for DeviceInformationResponse
+ *
+ * Command: DeviceInformationResponse
+ * @param transaction INT32U
+ * @param numberOfSubDevices INT8U
+ * @param startIndex INT8U
+ * @param deviceInformationRecordCount INT8U
+ * @param deviceInformationRecordList DeviceInformationRecord []
+ * @param deviceInformationRecordListLen int
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterDeviceInformationResponse(transaction, numberOfSubDevices, startIndex, deviceInformationRecordCount, \
+ deviceInformationRecordList, deviceInformationRecordListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DEVICE_INFORMATION_RESPONSE_COMMAND_ID, "uuuub", transaction, numberOfSubDevices, \
+ startIndex, deviceInformationRecordCount, deviceInformationRecordList, \
+ deviceInformationRecordListLen);
+
+/** @brief Command description for IdentifyRequest
+ *
+ * Command: IdentifyRequest
+ * @param transaction INT32U
+ * @param identifyDuration INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterIdentifyRequest(transaction, identifyDuration) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_IDENTIFY_REQUEST_COMMAND_ID, "uu", transaction, identifyDuration);
+
+/** @brief Command description for ResetToFactoryNewRequest
+ *
+ * Command: ResetToFactoryNewRequest
+ * @param transaction INT32U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterResetToFactoryNewRequest(transaction) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RESET_TO_FACTORY_NEW_REQUEST_COMMAND_ID, "u", transaction);
+
+/** @brief Command description for NetworkStartRequest
+ *
+ * Command: NetworkStartRequest
+ * @param transaction INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param keyIndex KeyIndex
+ * @param encryptedNetworkKey SECURITY_KEY
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ * @param groupIdentifiersBegin INT16U
+ * @param groupIdentifiersEnd INT16U
+ * @param freeNetworkAddressRangeBegin INT16U
+ * @param freeNetworkAddressRangeEnd INT16U
+ * @param freeGroupIdentifierRangeBegin INT16U
+ * @param freeGroupIdentifierRangeEnd INT16U
+ * @param initiatorIeeeAddress IEEE_ADDRESS
+ * @param initiatorNetworkAddress INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkStartRequest( \
+ transaction, extendedPanId, keyIndex, encryptedNetworkKey, logicalChannel, panId, networkAddress, groupIdentifiersBegin, \
+ groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, \
+ freeGroupIdentifierRangeEnd, initiatorIeeeAddress, initiatorNetworkAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_START_REQUEST_COMMAND_ID, "uuuuuuuuuuuuuuu", transaction, extendedPanId, keyIndex, \
+ encryptedNetworkKey, logicalChannel, panId, networkAddress, groupIdentifiersBegin, \
+ groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, \
+ freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd, initiatorIeeeAddress, \
+ initiatorNetworkAddress);
+
+/** @brief Command description for NetworkStartResponse
+ *
+ * Command: NetworkStartResponse
+ * @param transaction INT32U
+ * @param status ZllStatus
+ * @param extendedPanId IEEE_ADDRESS
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkStartResponse(transaction, status, extendedPanId, networkUpdateId, logicalChannel, panId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_START_RESPONSE_COMMAND_ID, "uuuuuu", transaction, status, extendedPanId, \
+ networkUpdateId, logicalChannel, panId);
+
+/** @brief Command description for NetworkJoinRouterRequest
+ *
+ * Command: NetworkJoinRouterRequest
+ * @param transaction INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param keyIndex KeyIndex
+ * @param encryptedNetworkKey SECURITY_KEY
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ * @param groupIdentifiersBegin INT16U
+ * @param groupIdentifiersEnd INT16U
+ * @param freeNetworkAddressRangeBegin INT16U
+ * @param freeNetworkAddressRangeEnd INT16U
+ * @param freeGroupIdentifierRangeBegin INT16U
+ * @param freeGroupIdentifierRangeEnd INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkJoinRouterRequest(transaction, extendedPanId, keyIndex, encryptedNetworkKey, networkUpdateId, \
+ logicalChannel, panId, networkAddress, groupIdentifiersBegin, \
+ groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, \
+ freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_JOIN_ROUTER_REQUEST_COMMAND_ID, "uuuuuuuuuuuuuu", transaction, extendedPanId, \
+ keyIndex, encryptedNetworkKey, networkUpdateId, logicalChannel, panId, networkAddress, \
+ groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, \
+ freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd);
+
+/** @brief Command description for NetworkJoinRouterResponse
+ *
+ * Command: NetworkJoinRouterResponse
+ * @param transaction INT32U
+ * @param status ZllStatus
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkJoinRouterResponse(transaction, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_JOIN_ROUTER_RESPONSE_COMMAND_ID, "uu", transaction, status);
+
+/** @brief Command description for NetworkJoinEndDeviceRequest
+ *
+ * Command: NetworkJoinEndDeviceRequest
+ * @param transaction INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param keyIndex KeyIndex
+ * @param encryptedNetworkKey SECURITY_KEY
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ * @param groupIdentifiersBegin INT16U
+ * @param groupIdentifiersEnd INT16U
+ * @param freeNetworkAddressRangeBegin INT16U
+ * @param freeNetworkAddressRangeEnd INT16U
+ * @param freeGroupIdentifierRangeBegin INT16U
+ * @param freeGroupIdentifierRangeEnd INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkJoinEndDeviceRequest(transaction, extendedPanId, keyIndex, encryptedNetworkKey, networkUpdateId, \
+ logicalChannel, panId, networkAddress, groupIdentifiersBegin, \
+ groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, \
+ freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_JOIN_END_DEVICE_REQUEST_COMMAND_ID, "uuuuuuuuuuuuuu", transaction, extendedPanId, \
+ keyIndex, encryptedNetworkKey, networkUpdateId, logicalChannel, panId, networkAddress, \
+ groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, \
+ freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd);
+
+/** @brief Command description for NetworkJoinEndDeviceResponse
+ *
+ * Command: NetworkJoinEndDeviceResponse
+ * @param transaction INT32U
+ * @param status ZllStatus
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkJoinEndDeviceResponse(transaction, status) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_JOIN_END_DEVICE_RESPONSE_COMMAND_ID, "uu", transaction, status);
+
+/** @brief Command description for NetworkUpdateRequest
+ *
+ * Command: NetworkUpdateRequest
+ * @param transaction INT32U
+ * @param extendedPanId IEEE_ADDRESS
+ * @param networkUpdateId INT8U
+ * @param logicalChannel INT8U
+ * @param panId INT16U
+ * @param networkAddress INT16U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterNetworkUpdateRequest(transaction, extendedPanId, networkUpdateId, logicalChannel, panId, networkAddress) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_NETWORK_UPDATE_REQUEST_COMMAND_ID, "uuuuuu", transaction, extendedPanId, networkUpdateId, \
+ logicalChannel, panId, networkAddress);
+
+/** @brief Command description for EndpointInformation
+ *
+ * Command: EndpointInformation
+ * @param ieeeAddress IEEE_ADDRESS
+ * @param networkAddress INT16U
+ * @param endpointId INT8U
+ * @param profileId INT16U
+ * @param deviceId INT16U
+ * @param version INT8U
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterEndpointInformation(ieeeAddress, networkAddress, endpointId, profileId, deviceId, version) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENDPOINT_INFORMATION_COMMAND_ID, "uuuuuu", ieeeAddress, networkAddress, endpointId, \
+ profileId, deviceId, version);
+
+/** @brief Command description for GetGroupIdentifiersRequest
+ *
+ * Command: GetGroupIdentifiersRequest
+ * @param startIndex INT8U
+ * @param total INT8U
+ * @param startIndex INT8U
+ * @param count INT8U
+ * @param groupInformationRecordList GroupInformationRecord []
+ * @param groupInformationRecordListLen int
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterGetGroupIdentifiersRequest(startIndex, total, startIndex, count, groupInformationRecordList, \
+ groupInformationRecordListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_GROUP_IDENTIFIERS_REQUEST_COMMAND_ID, "uuuub", startIndex, total, startIndex, count, \
+ groupInformationRecordList, groupInformationRecordListLen);
+
+/** @brief Command description for GetEndpointListRequest
+ *
+ * Command: GetEndpointListRequest
+ * @param startIndex INT8U
+ * @param total INT8U
+ * @param startIndex INT8U
+ * @param count INT8U
+ * @param endpointInformationRecordList EndpointInformationRecord []
+ * @param endpointInformationRecordListLen int
+ */
+#define emberAfFillCommandZLL \
+ CommissioningClusterGetEndpointListRequest(startIndex, total, startIndex, count, endpointInformationRecordList, \
+ endpointInformationRecordListLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_GET_ENDPOINT_LIST_REQUEST_COMMAND_ID, "uuuub", startIndex, total, startIndex, count, \
+ endpointInformationRecordList, endpointInformationRecordListLen);
+
+/** @brief Command description for Bind
+ *
+ * Command: Bind
+ * @param nodeId NODE_ID
+ * @param groupId GROUP_ID
+ * @param endpointId ENDPOINT_ID
+ * @param clusterId CLUSTER_ID
+ */
+#define emberAfFillCommandBindingClusterBind(nodeId, groupId, endpointId, clusterId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_BIND_COMMAND_ID, "uuuu", nodeId, groupId, endpointId, clusterId);
+
+/** @brief Command description for Unbind
+ *
+ * Command: Unbind
+ * @param nodeId NODE_ID
+ * @param groupId GROUP_ID
+ * @param endpointId ENDPOINT_ID
+ * @param clusterId CLUSTER_ID
+ */
+#define emberAfFillCommandBindingClusterUnbind(nodeId, groupId, endpointId, clusterId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNBIND_COMMAND_ID, "uuuu", nodeId, groupId, endpointId, clusterId);
+
+/** @brief Command description for CommandOne
+ *
+ * Command: CommandOne
+ * @param argOne INT8U
+ * @param argOne INT8U
+ */
+#define emberAfFillCommandSample \
+ Mfg Specific ClusterClusterCommandOne(argOne, argOne) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_COMMAND_ONE_COMMAND_ID, "uu", argOne, argOne);
+
+/** @brief Command description for SetToken
+ *
+ * Command: SetToken
+ * @param token INT16U
+ * @param token INT16U
+ * @param data OCTET_STRING
+ * @param data OCTET_STRING
+ */
+#define emberAfFillCommandConfiguration \
+ ClusterClusterSetToken(token, token, data, data) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_TOKEN_COMMAND_ID, "uuuu", token, token, data, data);
+
+/** @brief Command description for LockTokens
+ *
+ * Command: LockTokens
+ */
+#define emberAfFillCommandConfiguration \
+ ClusterClusterLockTokens() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_LOCK_TOKENS_COMMAND_ID, "", );
+
+/** @brief Command description for ReadTokens
+ *
+ * Command: ReadTokens
+ * @param token INT16U
+ */
+#define emberAfFillCommandConfiguration \
+ ClusterClusterReadTokens(token) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_READ_TOKENS_COMMAND_ID, "u", token);
+
+/** @brief Command description for UnlockTokens
+ *
+ * Command: UnlockTokens
+ * @param data OCTET_STRING
+ */
+#define emberAfFillCommandConfiguration \
+ ClusterClusterUnlockTokens(data) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_UNLOCK_TOKENS_COMMAND_ID, "u", data);
+
+/** @brief Command description for stream
+ *
+ * Command: stream
+ * @param channel INT8U
+ * @param power INT8S
+ * @param time INT16U
+ */
+#define emberAfFillCommandMFGLIB \
+ ClusterClusterstream(channel, power, time) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_STREAM_COMMAND_ID, "uuu", channel, power, time);
+
+/** @brief Command description for tone
+ *
+ * Command: tone
+ * @param channel INT8U
+ * @param power INT8S
+ * @param time INT16U
+ */
+#define emberAfFillCommandMFGLIB \
+ ClusterClustertone(channel, power, time) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TONE_COMMAND_ID, "uuu", channel, power, time);
+
+/** @brief Command description for rxMode
+ *
+ * Command: rxMode
+ * @param channel INT8U
+ * @param power INT8S
+ * @param time INT16U
+ */
+#define emberAfFillCommandMFGLIB \
+ ClusterClusterrxMode(channel, power, time) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_RX_MODE_COMMAND_ID, "uuu", channel, power, time);
+
+/** @brief Command description for EnableApsLinkKeyAuthorization
+ *
+ * Command: EnableApsLinkKeyAuthorization
+ * @param numberExemptClusters INT8U
+ * @param clusterId CLUSTER_ID
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ * @param apsLinkKeyAuthStatus BOOLEAN
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableApsLinkKeyAuthorization(numberExemptClusters, clusterId, clusterId, clusterIdLen, \
+ apsLinkKeyAuthStatus) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID, "uubu", numberExemptClusters, clusterId, \
+ clusterId, clusterIdLen, apsLinkKeyAuthStatus);
+
+/** @brief Command description for DisableApsLinkKeyAuthorization
+ *
+ * Command: DisableApsLinkKeyAuthorization
+ * @param numberExemptClusters INT8U
+ * @param powerNotificationReason WwahPowerNotificationReason
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ * @param manufacturerId INT16U
+ * @param manufacturerReasonLength INT8U
+ * @param manufacturerReason INT8U []
+ * @param manufacturerReasonLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableApsLinkKeyAuthorization(numberExemptClusters, powerNotificationReason, clusterId, \
+ clusterIdLen, manufacturerId, manufacturerReasonLength, \
+ manufacturerReason, manufacturerReasonLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID, "uubuub", numberExemptClusters, \
+ powerNotificationReason, clusterId, clusterIdLen, manufacturerId, manufacturerReasonLength, \
+ manufacturerReason, manufacturerReasonLen);
+
+/** @brief Command description for ApsLinkKeyAuthorizationQuery
+ *
+ * Command: ApsLinkKeyAuthorizationQuery
+ * @param clusterId CLUSTER_ID
+ * @param powerNotificationReason WwahPowerNotificationReason
+ * @param manufacturerId INT16U
+ * @param manufacturerReasonLength INT8U
+ * @param manufacturerReason INT8U []
+ * @param manufacturerReasonLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterApsLinkKeyAuthorizationQuery(clusterId, powerNotificationReason, manufacturerId, \
+ manufacturerReasonLength, manufacturerReason, manufacturerReasonLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_COMMAND_ID, "uuuub", clusterId, powerNotificationReason, \
+ manufacturerId, manufacturerReasonLength, manufacturerReason, manufacturerReasonLen);
+
+/** @brief Command description for RequestNewApsLinkKey
+ *
+ * Command: RequestNewApsLinkKey
+ * @param deviceEui64 IEEE_ADDRESS
+ * @param deviceShort INT16U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterRequestNewApsLinkKey(deviceEui64, deviceShort) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_NEW_APS_LINK_KEY_COMMAND_ID, "uu", deviceEui64, deviceShort);
+
+/** @brief Command description for EnableWwahAppEventRetryAlgorithm
+ *
+ * Command: EnableWwahAppEventRetryAlgorithm
+ * @param firstBackoffTimeSeconds INT8U
+ * @param numberExemptClusters INT8U
+ * @param backoffSeqCommonRatio INT8U
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ * @param maxBackoffTimeSeconds INT32U
+ * @param maxRedeliveryAttempts INT8U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableWwahAppEventRetryAlgorithm( \
+ firstBackoffTimeSeconds, numberExemptClusters, backoffSeqCommonRatio, clusterId, clusterIdLen, maxBackoffTimeSeconds, \
+ maxRedeliveryAttempts) emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID, "uuubuu", \
+ firstBackoffTimeSeconds, numberExemptClusters, backoffSeqCommonRatio, \
+ clusterId, clusterIdLen, maxBackoffTimeSeconds, maxRedeliveryAttempts);
+
+/** @brief Command description for DisableWwahAppEventRetryAlgorithm
+ *
+ * Command: DisableWwahAppEventRetryAlgorithm
+ * @param currentPowerMode INT32U
+ * @param availablePowerSources INT32U
+ * @param currentPowerSource INT32U
+ * @param currentPowerSourceLevel INT32U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableWwahAppEventRetryAlgorithm(currentPowerMode, availablePowerSources, currentPowerSource, \
+ currentPowerSourceLevel) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID, "uuuu", currentPowerMode, \
+ availablePowerSources, currentPowerSource, currentPowerSourceLevel);
+
+/** @brief Command description for RequestTime
+ *
+ * Command: RequestTime
+ * @param debugReportId INT8U
+ * @param debugReportSize INT32U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterRequestTime(debugReportId, debugReportSize) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REQUEST_TIME_COMMAND_ID, "uu", debugReportId, debugReportSize);
+
+/** @brief Command description for EnableWwahRejoinAlgorithm
+ *
+ * Command: EnableWwahRejoinAlgorithm
+ * @param fastRejoinTimeoutSeconds INT16U
+ * @param debugReportId INT8U
+ * @param durationBetweenRejoinsSeconds INT16U
+ * @param debugReportData INT8U []
+ * @param debugReportDataLen int
+ * @param fastRejoinFirstBackoffSeconds INT16U
+ * @param maxBackoffTimeSeconds INT16U
+ * @param maxBackoffIterations INT16U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableWwahRejoinAlgorithm(fastRejoinTimeoutSeconds, debugReportId, durationBetweenRejoinsSeconds, \
+ debugReportData, debugReportDataLen, fastRejoinFirstBackoffSeconds, \
+ maxBackoffTimeSeconds, maxBackoffIterations) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID, "uuubuuu", fastRejoinTimeoutSeconds, debugReportId, \
+ durationBetweenRejoinsSeconds, debugReportData, debugReportDataLen, \
+ fastRejoinFirstBackoffSeconds, maxBackoffTimeSeconds, maxBackoffIterations);
+
+/** @brief Command description for DisableWwahRejoinAlgorithm
+ *
+ * Command: DisableWwahRejoinAlgorithm
+ * @param numberOfClusters INT8U
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableWwahRejoinAlgorithm(numberOfClusters, clusterId, clusterIdLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID, "ub", numberOfClusters, clusterId, clusterIdLen);
+
+/** @brief Command description for SetIasZoneEnrollmentMethod
+ *
+ * Command: SetIasZoneEnrollmentMethod
+ * @param enrollmentMode WwahIasZoneEnrollmentMode
+ * @param numberOfBeacons INT8U
+ * @param beacon WwahBeaconSurvey []
+ * @param beaconLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterSetIasZoneEnrollmentMethod(enrollmentMode, numberOfBeacons, beacon, beaconLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_IAS_ZONE_ENROLLMENT_METHOD_COMMAND_ID, "uub", enrollmentMode, numberOfBeacons, beacon, \
+ beaconLen);
+
+/** @brief Command description for ClearBindingTable
+ *
+ * Command: ClearBindingTable
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterClearBindingTable() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_CLEAR_BINDING_TABLE_COMMAND_ID, "", );
+
+/** @brief Command description for EnablePeriodicRouterCheckIns
+ *
+ * Command: EnablePeriodicRouterCheckIns
+ * @param checkInInterval INT16U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnablePeriodicRouterCheckIns(checkInInterval) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID, "u", checkInInterval);
+
+/** @brief Command description for DisablePeriodicRouterCheckIns
+ *
+ * Command: DisablePeriodicRouterCheckIns
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisablePeriodicRouterCheckIns() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID, "", );
+
+/** @brief Command description for SetMacPollFailureWaitTime
+ *
+ * Command: SetMacPollFailureWaitTime
+ * @param waitTime INT8U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterSetMacPollFailureWaitTime(waitTime) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_MAC_POLL_FAILURE_WAIT_TIME_COMMAND_ID, "u", waitTime);
+
+/** @brief Command description for SetPendingNetworkUpdate
+ *
+ * Command: SetPendingNetworkUpdate
+ * @param channel INT8U
+ * @param panId INT16U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterSetPendingNetworkUpdate(channel, panId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SET_PENDING_NETWORK_UPDATE_COMMAND_ID, "uu", channel, panId);
+
+/** @brief Command description for RequireApsAcksOnUnicasts
+ *
+ * Command: RequireApsAcksOnUnicasts
+ * @param numberExemptClusters INT8U
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterRequireApsAcksOnUnicasts(numberExemptClusters, clusterId, clusterIdLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_REQUIRE_APS_ACKS_ON_UNICASTS_COMMAND_ID, "ub", numberExemptClusters, clusterId, clusterIdLen);
+
+/** @brief Command description for RemoveApsAcksOnUnicastsRequirement
+ *
+ * Command: RemoveApsAcksOnUnicastsRequirement
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterRemoveApsAcksOnUnicastsRequirement() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_REMOVE_APS_ACKS_ON_UNICASTS_REQUIREMENT_COMMAND_ID, "", );
+
+/** @brief Command description for ApsAckRequirementQuery
+ *
+ * Command: ApsAckRequirementQuery
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterApsAckRequirementQuery() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_APS_ACK_REQUIREMENT_QUERY_COMMAND_ID, "", );
+
+/** @brief Command description for DebugReportQuery
+ *
+ * Command: DebugReportQuery
+ * @param debugReportId INT8U
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDebugReportQuery(debugReportId) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DEBUG_REPORT_QUERY_COMMAND_ID, "u", debugReportId);
+
+/** @brief Command description for SurveyBeacons
+ *
+ * Command: SurveyBeacons
+ * @param standardBeacons BOOLEAN
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterSurveyBeacons(standardBeacons) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_SURVEY_BEACONS_COMMAND_ID, "u", standardBeacons);
+
+/** @brief Command description for DisableOtaDowngrades
+ *
+ * Command: DisableOtaDowngrades
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableOtaDowngrades() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_OTA_DOWNGRADES_COMMAND_ID, "", );
+
+/** @brief Command description for DisableMgmtLeaveWithoutRejoin
+ *
+ * Command: DisableMgmtLeaveWithoutRejoin
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableMgmtLeaveWithoutRejoin() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_MGMT_LEAVE_WITHOUT_REJOIN_COMMAND_ID, "", );
+
+/** @brief Command description for DisableTouchlinkInterpanMessageSupport
+ *
+ * Command: DisableTouchlinkInterpanMessageSupport
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableTouchlinkInterpanMessageSupport() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_TOUCHLINK_INTERPAN_MESSAGE_SUPPORT_COMMAND_ID, "", );
+
+/** @brief Command description for EnableWwahParentClassification
+ *
+ * Command: EnableWwahParentClassification
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableWwahParentClassification() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID, "", );
+
+/** @brief Command description for DisableWwahParentClassification
+ *
+ * Command: DisableWwahParentClassification
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableWwahParentClassification() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID, "", );
+
+/** @brief Command description for EnableTcSecurityOnNtwkKeyRotation
+ *
+ * Command: EnableTcSecurityOnNtwkKeyRotation
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableTcSecurityOnNtwkKeyRotation() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_TC_SECURITY_ON_NTWK_KEY_ROTATION_COMMAND_ID, "", );
+
+/** @brief Command description for EnableWwahBadParentRecovery
+ *
+ * Command: EnableWwahBadParentRecovery
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableWwahBadParentRecovery() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID, "", );
+
+/** @brief Command description for DisableWwahBadParentRecovery
+ *
+ * Command: DisableWwahBadParentRecovery
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableWwahBadParentRecovery() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID, "", );
+
+/** @brief Command description for EnableConfigurationMode
+ *
+ * Command: EnableConfigurationMode
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterEnableConfigurationMode() emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_ENABLE_CONFIGURATION_MODE_COMMAND_ID, "", );
+
+/** @brief Command description for DisableConfigurationMode
+ *
+ * Command: DisableConfigurationMode
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterDisableConfigurationMode() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_DISABLE_CONFIGURATION_MODE_COMMAND_ID, "", );
+
+/** @brief Command description for UseTrustCenterForClusterServer
+ *
+ * Command: UseTrustCenterForClusterServer
+ * @param numberOfClusters INT8U
+ * @param clusterId CLUSTER_ID []
+ * @param clusterIdLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterUseTrustCenterForClusterServer(numberOfClusters, clusterId, clusterIdLen) emberAfFillExternalBuffer( \
+ mask, \
+ \
+ ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_COMMAND_ID, "ub", numberOfClusters, clusterId, clusterIdLen);
+
+/** @brief Command description for TrustCenterForClusterServerQuery
+ *
+ * Command: TrustCenterForClusterServerQuery
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterTrustCenterForClusterServerQuery() \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_COMMAND_ID, "", );
+
+/** @brief Command description for UseTrustCenterForClusterServerResponse
+ *
+ * Command: UseTrustCenterForClusterServerResponse
+ * @param status Status
+ * @param clusterStatusLength INT8U
+ * @param clusterStatus WwahClusterStatusToUseTC []
+ * @param clusterStatusLen int
+ */
+#define emberAfFillCommandSL \
+ Works With All HubsClusterUseTrustCenterForClusterServerResponse(status, clusterStatusLength, clusterStatus, clusterStatusLen) \
+ emberAfFillExternalBuffer(mask, \
+ \
+ ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_RESPONSE_COMMAND_ID, "uub", status, clusterStatusLength, \
+ clusterStatus, clusterStatusLen);
diff --git a/src/darwin/Framework/CHIP/gen/cluster-id.h b/src/darwin/Framework/CHIP/gen/cluster-id.h
new file mode 100644
index 0000000..262de53
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/cluster-id.h
@@ -0,0 +1,351 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Definitions for cluster: Basic
+#define ZCL_BASIC_CLUSTER_ID (0x0000)
+
+// Definitions for cluster: Power Configuration
+#define ZCL_POWER_CONFIG_CLUSTER_ID (0x0001)
+
+// Definitions for cluster: Device Temperature Configuration
+#define ZCL_DEVICE_TEMP_CLUSTER_ID (0x0002)
+
+// Definitions for cluster: Identify
+#define ZCL_IDENTIFY_CLUSTER_ID (0x0003)
+
+// Definitions for cluster: Groups
+#define ZCL_GROUPS_CLUSTER_ID (0x0004)
+
+// Definitions for cluster: Scenes
+#define ZCL_SCENES_CLUSTER_ID (0x0005)
+
+// Definitions for cluster: On/off
+#define ZCL_ON_OFF_CLUSTER_ID (0x0006)
+
+// Definitions for cluster: On/off Switch Configuration
+#define ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_ID (0x0007)
+
+// Definitions for cluster: Level Control
+#define ZCL_LEVEL_CONTROL_CLUSTER_ID (0x0008)
+
+// Definitions for cluster: Alarms
+#define ZCL_ALARM_CLUSTER_ID (0x0009)
+
+// Definitions for cluster: Time
+#define ZCL_TIME_CLUSTER_ID (0x000A)
+
+// Definitions for cluster: RSSI Location
+#define ZCL_RSSI_LOCATION_CLUSTER_ID (0x000B)
+
+// Definitions for cluster: Binary Input (Basic)
+#define ZCL_BINARY_INPUT_BASIC_CLUSTER_ID (0x000F)
+
+// Definitions for cluster: Commissioning
+#define ZCL_COMMISSIONING_CLUSTER_ID (0x0015)
+
+// Definitions for cluster: Partition
+#define ZCL_PARTITION_CLUSTER_ID (0x0016)
+
+// Definitions for cluster: Over the Air Bootloading
+#define ZCL_OTA_BOOTLOAD_CLUSTER_ID (0x0019)
+
+// Definitions for cluster: Power Profile
+#define ZCL_POWER_PROFILE_CLUSTER_ID (0x001A)
+
+// Definitions for cluster: Appliance Control
+#define ZCL_APPLIANCE_CONTROL_CLUSTER_ID (0x001B)
+
+// Definitions for cluster: Poll Control
+#define ZCL_POLL_CONTROL_CLUSTER_ID (0x0020)
+
+// Definitions for cluster: Green Power
+#define ZCL_GREEN_POWER_CLUSTER_ID (0x0021)
+
+// Definitions for cluster: Keep-Alive
+#define ZCL_KEEPALIVE_CLUSTER_ID (0x0025)
+
+// Definitions for cluster: Shade Configuration
+#define ZCL_SHADE_CONFIG_CLUSTER_ID (0x0100)
+
+// Definitions for cluster: Door Lock
+#define ZCL_DOOR_LOCK_CLUSTER_ID (0x0101)
+
+// Definitions for cluster: Window Covering
+#define ZCL_WINDOW_COVERING_CLUSTER_ID (0x0102)
+
+// Definitions for cluster: Barrier Control
+#define ZCL_BARRIER_CONTROL_CLUSTER_ID (0x0103)
+
+// Definitions for cluster: Pump Configuration and Control
+#define ZCL_PUMP_CONFIG_CONTROL_CLUSTER_ID (0x0200)
+
+// Definitions for cluster: Thermostat
+#define ZCL_THERMOSTAT_CLUSTER_ID (0x0201)
+
+// Definitions for cluster: Fan Control
+#define ZCL_FAN_CONTROL_CLUSTER_ID (0x0202)
+
+// Definitions for cluster: Dehumidification Control
+#define ZCL_DEHUMID_CONTROL_CLUSTER_ID (0x0203)
+
+// Definitions for cluster: Thermostat User Interface Configuration
+#define ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_ID (0x0204)
+
+// Definitions for cluster: Color Control
+#define ZCL_COLOR_CONTROL_CLUSTER_ID (0x0300)
+
+// Definitions for cluster: Ballast Configuration
+#define ZCL_BALLAST_CONFIGURATION_CLUSTER_ID (0x0301)
+
+// Definitions for cluster: Illuminance Measurement
+#define ZCL_ILLUM_MEASUREMENT_CLUSTER_ID (0x0400)
+
+// Definitions for cluster: Illuminance Level Sensing
+#define ZCL_ILLUM_LEVEL_SENSING_CLUSTER_ID (0x0401)
+
+// Definitions for cluster: Temperature Measurement
+#define ZCL_TEMP_MEASUREMENT_CLUSTER_ID (0x0402)
+
+// Definitions for cluster: Pressure Measurement
+#define ZCL_PRESSURE_MEASUREMENT_CLUSTER_ID (0x0403)
+
+// Definitions for cluster: Flow Measurement
+#define ZCL_FLOW_MEASUREMENT_CLUSTER_ID (0x0404)
+
+// Definitions for cluster: Relative Humidity Measurement
+#define ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_ID (0x0405)
+
+// Definitions for cluster: Occupancy Sensing
+#define ZCL_OCCUPANCY_SENSING_CLUSTER_ID (0x0406)
+
+// Definitions for cluster: Carbon Monoxide Concentration Measurement
+#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x040C)
+
+// Definitions for cluster: Carbon Dioxide Concentration Measurement
+#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x040D)
+
+// Definitions for cluster: Ethylene Concentration Measurement
+#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x040E)
+
+// Definitions for cluster: Ethylene Oxide Concentration Measurement
+#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x040F)
+
+// Definitions for cluster: Hydrogen Concentration Measurement
+#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0410)
+
+// Definitions for cluster: Hydrogen Sulphide Concentration Measurement
+#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0411)
+
+// Definitions for cluster: Nitric Oxide Concentration Measurement
+#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0412)
+
+// Definitions for cluster: Nitrogen Dioxide Concentration Measurement
+#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0413)
+
+// Definitions for cluster: Oxygen Concentration Measurement
+#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0414)
+
+// Definitions for cluster: Ozone Concentration Measurement
+#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0415)
+
+// Definitions for cluster: Sulfur Dioxide Concentration Measurement
+#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0416)
+
+// Definitions for cluster: Dissolved Oxygen Concentration Measurement
+#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0417)
+
+// Definitions for cluster: Bromate Concentration Measurement
+#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0418)
+
+// Definitions for cluster: Chloramines Concentration Measurement
+#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0419)
+
+// Definitions for cluster: Chlorine Concentration Measurement
+#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041A)
+
+// Definitions for cluster: Fecal coliform and E. Coli Concentration Measurement
+#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041B)
+
+// Definitions for cluster: Fluoride Concentration Measurement
+#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041C)
+
+// Definitions for cluster: Haloacetic Acids Concentration Measurement
+#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041D)
+
+// Definitions for cluster: Total Trihalomethanes Concentration Measurement
+#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041E)
+
+// Definitions for cluster: Total Coliform Bacteria Concentration Measurement
+#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x041F)
+
+// Definitions for cluster: Turbidity Concentration Measurement
+#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0420)
+
+// Definitions for cluster: Copper Concentration Measurement
+#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0421)
+
+// Definitions for cluster: Lead Concentration Measurement
+#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0422)
+
+// Definitions for cluster: Manganese Concentration Measurement
+#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0423)
+
+// Definitions for cluster: Sulfate Concentration Measurement
+#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0424)
+
+// Definitions for cluster: Bromodichloromethane Concentration Measurement
+#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0425)
+
+// Definitions for cluster: Bromoform Concentration Measurement
+#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0426)
+
+// Definitions for cluster: Chlorodibromomethane Concentration Measurement
+#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0427)
+
+// Definitions for cluster: Chloroform Concentration Measurement
+#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0428)
+
+// Definitions for cluster: Sodium Concentration Measurement
+#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x0429)
+
+// Definitions for cluster: IAS Zone
+#define ZCL_IAS_ZONE_CLUSTER_ID (0x0500)
+
+// Definitions for cluster: IAS ACE
+#define ZCL_IAS_ACE_CLUSTER_ID (0x0501)
+
+// Definitions for cluster: IAS WD
+#define ZCL_IAS_WD_CLUSTER_ID (0x0502)
+
+// Definitions for cluster: Generic Tunnel
+#define ZCL_GENERIC_TUNNEL_CLUSTER_ID (0x0600)
+
+// Definitions for cluster: BACnet Protocol Tunnel
+#define ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_ID (0x0601)
+
+// Definitions for cluster: 11073 Protocol Tunnel
+#define ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_ID (0x0614)
+
+// Definitions for cluster: ISO 7816 Protocol Tunnel
+#define ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_ID (0x0615)
+
+// Definitions for cluster: Price
+#define ZCL_PRICE_CLUSTER_ID (0x0700)
+
+// Definitions for cluster: Demand Response and Load Control
+#define ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID (0x0701)
+
+// Definitions for cluster: Simple Metering
+#define ZCL_SIMPLE_METERING_CLUSTER_ID (0x0702)
+
+// Definitions for cluster: Messaging
+#define ZCL_MESSAGING_CLUSTER_ID (0x0703)
+
+// Definitions for cluster: Tunneling
+#define ZCL_TUNNELING_CLUSTER_ID (0x0704)
+
+// Definitions for cluster: Prepayment
+#define ZCL_PREPAYMENT_CLUSTER_ID (0x0705)
+
+// Definitions for cluster: Energy Management
+#define ZCL_ENERGY_MANAGEMENT_CLUSTER_ID (0x0706)
+
+// Definitions for cluster: Calendar
+#define ZCL_CALENDAR_CLUSTER_ID (0x0707)
+
+// Definitions for cluster: Device Management
+#define ZCL_DEVICE_MANAGEMENT_CLUSTER_ID (0x0708)
+
+// Definitions for cluster: Events
+#define ZCL_EVENTS_CLUSTER_ID (0x0709)
+
+// Definitions for cluster: MDU Pairing
+#define ZCL_MDU_PAIRING_CLUSTER_ID (0x070A)
+
+// Definitions for cluster: Sub-GHz
+#define ZCL_SUB_GHZ_CLUSTER_ID (0x070B)
+
+// Definitions for cluster: Key Establishment
+#define ZCL_KEY_ESTABLISHMENT_CLUSTER_ID (0x0800)
+
+// Definitions for cluster: Information
+#define ZCL_INFORMATION_CLUSTER_ID (0x0900)
+
+// Definitions for cluster: Data Sharing
+#define ZCL_DATA_SHARING_CLUSTER_ID (0x0901)
+
+// Definitions for cluster: Gaming
+#define ZCL_GAMING_CLUSTER_ID (0x0902)
+
+// Definitions for cluster: Data Rate Control
+#define ZCL_DATA_RATE_CONTROL_CLUSTER_ID (0x0903)
+
+// Definitions for cluster: Voice over ZigBee
+#define ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID (0x0904)
+
+// Definitions for cluster: Chatting
+#define ZCL_CHATTING_CLUSTER_ID (0x0905)
+
+// Definitions for cluster: Payment
+#define ZCL_PAYMENT_CLUSTER_ID (0x0A01)
+
+// Definitions for cluster: Billing
+#define ZCL_BILLING_CLUSTER_ID (0x0A02)
+
+// Definitions for cluster: Appliance Identification
+#define ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_ID (0x0B00)
+
+// Definitions for cluster: Meter Identification
+#define ZCL_METER_IDENTIFICATION_CLUSTER_ID (0x0B01)
+
+// Definitions for cluster: Appliance Events and Alert
+#define ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID (0x0B02)
+
+// Definitions for cluster: Appliance Statistics
+#define ZCL_APPLIANCE_STATISTICS_CLUSTER_ID (0x0B03)
+
+// Definitions for cluster: Electrical Measurement
+#define ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID (0x0B04)
+
+// Definitions for cluster: Diagnostics
+#define ZCL_DIAGNOSTICS_CLUSTER_ID (0x0B05)
+
+// Definitions for cluster: ZLL Commissioning
+#define ZCL_ZLL_COMMISSIONING_CLUSTER_ID (0x1000)
+
+// Definitions for cluster: Binding
+#define ZCL_BINDING_CLUSTER_ID (0xF000)
+
+// Definitions for cluster: Sample Mfg Specific Cluster
+#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID (0xFC00)
+
+// Definitions for cluster: Sample Mfg Specific Cluster 2
+#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_ID (0xFC00)
+
+// Definitions for cluster: Configuration Cluster
+#define ZCL_OTA_CONFIGURATION_CLUSTER_ID (0xFC01)
+
+// Definitions for cluster: MFGLIB Cluster
+#define ZCL_MFGLIB_CLUSTER_ID (0xFC02)
+
+// Definitions for cluster: SL Works With All Hubs
+#define ZCL_SL_WWAH_CLUSTER_ID (0xFC57)
diff --git a/src/darwin/Framework/CHIP/gen/command-id.h b/src/darwin/Framework/CHIP/gen/command-id.h
new file mode 100644
index 0000000..9e60862
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/command-id.h
@@ -0,0 +1,753 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Global, non-cluster-specific commands
+#define ZCL_READ_ATTRIBUTES_COMMAND_ID (0x00)
+#define ZCL_READ_ATTRIBUTES_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_WRITE_ATTRIBUTES_COMMAND_ID (0x02)
+#define ZCL_WRITE_ATTRIBUTES_UNDIVIDED_COMMAND_ID (0x03)
+#define ZCL_WRITE_ATTRIBUTES_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_WRITE_ATTRIBUTES_NO_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_CONFIGURE_REPORTING_COMMAND_ID (0x06)
+#define ZCL_CONFIGURE_REPORTING_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_READ_REPORTING_CONFIGURATION_COMMAND_ID (0x08)
+#define ZCL_READ_REPORTING_CONFIGURATION_RESPONSE_COMMAND_ID (0x09)
+#define ZCL_REPORT_ATTRIBUTES_COMMAND_ID (0x0A)
+#define ZCL_DEFAULT_RESPONSE_COMMAND_ID (0x0B)
+#define ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID (0x0C)
+#define ZCL_DISCOVER_ATTRIBUTES_RESPONSE_COMMAND_ID (0x0D)
+#define ZCL_READ_ATTRIBUTES_STRUCTURED_COMMAND_ID (0x0E)
+#define ZCL_WRITE_ATTRIBUTES_STRUCTURED_COMMAND_ID (0x0F)
+#define ZCL_WRITE_ATTRIBUTES_STRUCTURED_RESPONSE_COMMAND_ID (0x10)
+#define ZCL_DISCOVER_COMMANDS_RECEIVED_COMMAND_ID (0x11)
+#define ZCL_DISCOVER_COMMANDS_RECEIVED_RESPONSE_COMMAND_ID (0x12)
+#define ZCL_DISCOVER_COMMANDS_GENERATED_COMMAND_ID (0x13)
+#define ZCL_DISCOVER_COMMANDS_GENERATED_RESPONSE_COMMAND_ID (0x14)
+#define ZCL_DISCOVER_ATTRIBUTES_EXTENDED_COMMAND_ID (0x15)
+#define ZCL_DISCOVER_ATTRIBUTES_EXTENDED_RESPONSE_COMMAND_ID (0x16)
+
+// Commands for cluster: Basic
+#define ZCL_RESET_TO_FACTORY_DEFAULTS_COMMAND_ID (0x00)
+#define ZCL_MFG_SPECIFIC_PING_COMMAND_ID (0x00)
+
+// Commands for cluster: Identify
+#define ZCL_IDENTIFY_COMMAND_ID (0x00)
+#define ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_IDENTIFY_QUERY_COMMAND_ID (0x01)
+#define ZCL_EZ_MODE_INVOKE_COMMAND_ID (0x02)
+#define ZCL_UPDATE_COMMISSION_STATE_COMMAND_ID (0x03)
+#define ZCL_TRIGGER_EFFECT_COMMAND_ID (0x40)
+
+// Commands for cluster: Groups
+#define ZCL_ADD_GROUP_COMMAND_ID (0x00)
+#define ZCL_ADD_GROUP_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_VIEW_GROUP_COMMAND_ID (0x01)
+#define ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID (0x02)
+#define ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_REMOVE_GROUP_COMMAND_ID (0x03)
+#define ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_REMOVE_ALL_GROUPS_COMMAND_ID (0x04)
+#define ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID (0x05)
+
+// Commands for cluster: Scenes
+#define ZCL_ADD_SCENE_COMMAND_ID (0x00)
+#define ZCL_ADD_SCENE_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_VIEW_SCENE_COMMAND_ID (0x01)
+#define ZCL_VIEW_SCENE_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_REMOVE_SCENE_COMMAND_ID (0x02)
+#define ZCL_REMOVE_SCENE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_REMOVE_ALL_SCENES_COMMAND_ID (0x03)
+#define ZCL_REMOVE_ALL_SCENES_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_STORE_SCENE_COMMAND_ID (0x04)
+#define ZCL_STORE_SCENE_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_RECALL_SCENE_COMMAND_ID (0x05)
+#define ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID (0x06)
+#define ZCL_GET_SCENE_MEMBERSHIP_RESPONSE_COMMAND_ID (0x06)
+#define ZCL_ENHANCED_ADD_SCENE_COMMAND_ID (0x40)
+#define ZCL_ENHANCED_ADD_SCENE_RESPONSE_COMMAND_ID (0x40)
+#define ZCL_ENHANCED_VIEW_SCENE_COMMAND_ID (0x41)
+#define ZCL_ENHANCED_VIEW_SCENE_RESPONSE_COMMAND_ID (0x41)
+#define ZCL_COPY_SCENE_COMMAND_ID (0x42)
+#define ZCL_COPY_SCENE_RESPONSE_COMMAND_ID (0x42)
+
+// Commands for cluster: On/off
+#define ZCL_OFF_COMMAND_ID (0x00)
+#define ZCL_SAMPLE_MFG_SPECIFIC_OFF_WITH_TRANSITION_COMMAND_ID (0x00)
+#define ZCL_ON_COMMAND_ID (0x01)
+#define ZCL_SAMPLE_MFG_SPECIFIC_ON_WITH_TRANSITION_COMMAND_ID (0x01)
+#define ZCL_SAMPLE_MFG_SPECIFIC_ON_WITH_TRANSITION2_COMMAND_ID (0x01)
+#define ZCL_TOGGLE_COMMAND_ID (0x02)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TOGGLE_WITH_TRANSITION_COMMAND_ID (0x02)
+#define ZCL_SAMPLE_MFG_SPECIFIC_TOGGLE_WITH_TRANSITION2_COMMAND_ID (0x02)
+#define ZCL_OFF_WITH_EFFECT_COMMAND_ID (0x40)
+#define ZCL_ON_WITH_RECALL_GLOBAL_SCENE_COMMAND_ID (0x41)
+#define ZCL_ON_WITH_TIMED_OFF_COMMAND_ID (0x42)
+
+// Commands for cluster: Level Control
+#define ZCL_MOVE_TO_LEVEL_COMMAND_ID (0x00)
+#define ZCL_MOVE_COMMAND_ID (0x01)
+#define ZCL_STEP_COMMAND_ID (0x02)
+#define ZCL_STOP_COMMAND_ID (0x03)
+#define ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID (0x04)
+#define ZCL_MOVE_WITH_ON_OFF_COMMAND_ID (0x05)
+#define ZCL_STEP_WITH_ON_OFF_COMMAND_ID (0x06)
+#define ZCL_STOP_WITH_ON_OFF_COMMAND_ID (0x07)
+
+// Commands for cluster: Alarms
+#define ZCL_RESET_ALARM_COMMAND_ID (0x00)
+#define ZCL_ALARM_COMMAND_ID (0x00)
+#define ZCL_RESET_ALL_ALARMS_COMMAND_ID (0x01)
+#define ZCL_GET_ALARM_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_GET_ALARM_COMMAND_ID (0x02)
+#define ZCL_RESET_ALARM_LOG_COMMAND_ID (0x03)
+
+// Commands for cluster: RSSI Location
+#define ZCL_SET_ABSOLUTE_LOCATION_COMMAND_ID (0x00)
+#define ZCL_DEVICE_CONFIGURATION_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_SET_DEVICE_CONFIGURATION_COMMAND_ID (0x01)
+#define ZCL_LOCATION_DATA_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_GET_DEVICE_CONFIGURATION_COMMAND_ID (0x02)
+#define ZCL_LOCATION_DATA_NOTIFICATION_COMMAND_ID (0x02)
+#define ZCL_GET_LOCATION_DATA_COMMAND_ID (0x03)
+#define ZCL_COMPACT_LOCATION_DATA_NOTIFICATION_COMMAND_ID (0x03)
+#define ZCL_RSSI_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_RSSI_PING_COMMAND_ID (0x04)
+#define ZCL_SEND_PINGS_COMMAND_ID (0x05)
+#define ZCL_RSSI_REQUEST_COMMAND_ID (0x05)
+#define ZCL_ANCHOR_NODE_ANNOUNCE_COMMAND_ID (0x06)
+#define ZCL_REPORT_RSSI_MEASUREMENTS_COMMAND_ID (0x06)
+#define ZCL_REQUEST_OWN_LOCATION_COMMAND_ID (0x07)
+
+// Commands for cluster: Commissioning
+#define ZCL_RESTART_DEVICE_COMMAND_ID (0x00)
+#define ZCL_RESTART_DEVICE_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_SAVE_STARTUP_PARAMETERS_COMMAND_ID (0x01)
+#define ZCL_SAVE_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_RESTORE_STARTUP_PARAMETERS_COMMAND_ID (0x02)
+#define ZCL_RESTORE_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_RESET_STARTUP_PARAMETERS_COMMAND_ID (0x03)
+#define ZCL_RESET_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID (0x03)
+
+// Commands for cluster: Partition
+#define ZCL_TRANSFER_PARTITIONED_FRAME_COMMAND_ID (0x00)
+#define ZCL_MULTIPLE_ACK_COMMAND_ID (0x00)
+#define ZCL_READ_HANDSHAKE_PARAM_COMMAND_ID (0x01)
+#define ZCL_READ_HANDSHAKE_PARAM_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_WRITE_HANDSHAKE_PARAM_COMMAND_ID (0x02)
+
+// Commands for cluster: Over the Air Bootloading
+#define ZCL_IMAGE_NOTIFY_COMMAND_ID (0x00)
+#define ZCL_QUERY_NEXT_IMAGE_REQUEST_COMMAND_ID (0x01)
+#define ZCL_QUERY_NEXT_IMAGE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_IMAGE_BLOCK_REQUEST_COMMAND_ID (0x03)
+#define ZCL_IMAGE_PAGE_REQUEST_COMMAND_ID (0x04)
+#define ZCL_IMAGE_BLOCK_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_UPGRADE_END_REQUEST_COMMAND_ID (0x06)
+#define ZCL_UPGRADE_END_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_QUERY_SPECIFIC_FILE_REQUEST_COMMAND_ID (0x08)
+#define ZCL_QUERY_SPECIFIC_FILE_RESPONSE_COMMAND_ID (0x09)
+
+// Commands for cluster: Power Profile
+#define ZCL_POWER_PROFILE_REQUEST_COMMAND_ID (0x00)
+#define ZCL_POWER_PROFILE_NOTIFICATION_COMMAND_ID (0x00)
+#define ZCL_POWER_PROFILE_STATE_REQUEST_COMMAND_ID (0x01)
+#define ZCL_POWER_PROFILE_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_GET_POWER_PROFILE_PRICE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_POWER_PROFILE_STATE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_GET_OVERALL_SCHEDULE_PRICE_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_GET_POWER_PROFILE_PRICE_COMMAND_ID (0x03)
+#define ZCL_ENERGY_PHASES_SCHEDULE_NOTIFICATION_COMMAND_ID (0x04)
+#define ZCL_POWER_PROFILES_STATE_NOTIFICATION_COMMAND_ID (0x04)
+#define ZCL_ENERGY_PHASES_SCHEDULE_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_GET_OVERALL_SCHEDULE_PRICE_COMMAND_ID (0x05)
+#define ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_REQUEST_COMMAND_ID (0x06)
+#define ZCL_ENERGY_PHASES_SCHEDULE_REQUEST_COMMAND_ID (0x06)
+#define ZCL_ENERGY_PHASES_SCHEDULE_STATE_REQUEST_COMMAND_ID (0x07)
+#define ZCL_ENERGY_PHASES_SCHEDULE_STATE_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_ENERGY_PHASES_SCHEDULE_STATE_NOTIFICATION_COMMAND_ID (0x08)
+#define ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_NOTIFICATION_COMMAND_ID (0x09)
+#define ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_RESPONSE_COMMAND_ID (0x0A)
+#define ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_COMMAND_ID (0x0B)
+
+// Commands for cluster: Appliance Control
+#define ZCL_EXECUTION_OF_A_COMMAND_COMMAND_ID (0x00)
+#define ZCL_SIGNAL_STATE_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_SIGNAL_STATE_COMMAND_ID (0x01)
+#define ZCL_SIGNAL_STATE_NOTIFICATION_COMMAND_ID (0x01)
+#define ZCL_WRITE_FUNCTIONS_COMMAND_ID (0x02)
+#define ZCL_OVERLOAD_PAUSE_RESUME_COMMAND_ID (0x03)
+#define ZCL_OVERLOAD_PAUSE_COMMAND_ID (0x04)
+#define ZCL_OVERLOAD_WARNING_COMMAND_ID (0x05)
+
+// Commands for cluster: Poll Control
+#define ZCL_CHECK_IN_COMMAND_ID (0x00)
+#define ZCL_CHECK_IN_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_FAST_POLL_STOP_COMMAND_ID (0x01)
+#define ZCL_SET_LONG_POLL_INTERVAL_COMMAND_ID (0x02)
+#define ZCL_SET_SHORT_POLL_INTERVAL_COMMAND_ID (0x03)
+
+// Commands for cluster: Green Power
+#define ZCL_GP_NOTIFICATION_COMMAND_ID (0x00)
+#define ZCL_GP_NOTIFICATION_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_GP_PAIRING_SEARCH_COMMAND_ID (0x01)
+#define ZCL_GP_PAIRING_COMMAND_ID (0x01)
+#define ZCL_GP_PROXY_COMMISSIONING_MODE_COMMAND_ID (0x02)
+#define ZCL_GP_TUNNELING_STOP_COMMAND_ID (0x03)
+#define ZCL_GP_COMMISSIONING_NOTIFICATION_COMMAND_ID (0x04)
+#define ZCL_GP_SINK_COMMISSIONING_MODE_COMMAND_ID (0x05)
+#define ZCL_GP_RESPONSE_COMMAND_ID (0x06)
+#define ZCL_GP_TRANSLATION_TABLE_UPDATE_COMMAND_ID (0x07)
+#define ZCL_GP_TRANSLATION_TABLE_REQUEST_COMMAND_ID (0x08)
+#define ZCL_GP_TRANSLATION_TABLE_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_GP_PAIRING_CONFIGURATION_COMMAND_ID (0x09)
+#define ZCL_GP_SINK_TABLE_REQUEST_COMMAND_ID (0x0A)
+#define ZCL_GP_SINK_TABLE_RESPONSE_COMMAND_ID (0x0A)
+#define ZCL_GP_PROXY_TABLE_RESPONSE_COMMAND_ID (0x0B)
+#define ZCL_GP_PROXY_TABLE_REQUEST_COMMAND_ID (0x0B)
+
+// Commands for cluster: Door Lock
+#define ZCL_LOCK_DOOR_COMMAND_ID (0x00)
+#define ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_UNLOCK_DOOR_COMMAND_ID (0x01)
+#define ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_TOGGLE_COMMAND_ID (0x02)
+#define ZCL_TOGGLE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID (0x03)
+#define ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_GET_LOG_RECORD_COMMAND_ID (0x04)
+#define ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_SET_PIN_COMMAND_ID (0x05)
+#define ZCL_SET_PIN_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_GET_PIN_COMMAND_ID (0x06)
+#define ZCL_GET_PIN_RESPONSE_COMMAND_ID (0x06)
+#define ZCL_CLEAR_PIN_COMMAND_ID (0x07)
+#define ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_CLEAR_ALL_PINS_COMMAND_ID (0x08)
+#define ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_SET_USER_STATUS_COMMAND_ID (0x09)
+#define ZCL_SET_USER_STATUS_RESPONSE_COMMAND_ID (0x09)
+#define ZCL_GET_USER_STATUS_COMMAND_ID (0x0A)
+#define ZCL_GET_USER_STATUS_RESPONSE_COMMAND_ID (0x0A)
+#define ZCL_SET_WEEKDAY_SCHEDULE_COMMAND_ID (0x0B)
+#define ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0B)
+#define ZCL_GET_WEEKDAY_SCHEDULE_COMMAND_ID (0x0C)
+#define ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0C)
+#define ZCL_CLEAR_WEEKDAY_SCHEDULE_COMMAND_ID (0x0D)
+#define ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0D)
+#define ZCL_SET_YEARDAY_SCHEDULE_COMMAND_ID (0x0E)
+#define ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0E)
+#define ZCL_GET_YEARDAY_SCHEDULE_COMMAND_ID (0x0F)
+#define ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x0F)
+#define ZCL_CLEAR_YEARDAY_SCHEDULE_COMMAND_ID (0x10)
+#define ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x10)
+#define ZCL_SET_HOLIDAY_SCHEDULE_COMMAND_ID (0x11)
+#define ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x11)
+#define ZCL_GET_HOLIDAY_SCHEDULE_COMMAND_ID (0x12)
+#define ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x12)
+#define ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID (0x13)
+#define ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x13)
+#define ZCL_SET_USER_TYPE_COMMAND_ID (0x14)
+#define ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID (0x14)
+#define ZCL_GET_USER_TYPE_COMMAND_ID (0x15)
+#define ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID (0x15)
+#define ZCL_SET_RFID_COMMAND_ID (0x16)
+#define ZCL_SET_RFID_RESPONSE_COMMAND_ID (0x16)
+#define ZCL_GET_RFID_COMMAND_ID (0x17)
+#define ZCL_GET_RFID_RESPONSE_COMMAND_ID (0x17)
+#define ZCL_CLEAR_RFID_COMMAND_ID (0x18)
+#define ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID (0x18)
+#define ZCL_CLEAR_ALL_RFIDS_COMMAND_ID (0x19)
+#define ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID (0x19)
+#define ZCL_OPERATION_EVENT_NOTIFICATION_COMMAND_ID (0x20)
+#define ZCL_PROGRAMMING_EVENT_NOTIFICATION_COMMAND_ID (0x21)
+
+// Commands for cluster: Window Covering
+#define ZCL_WINDOW_COVERING_UP_OPEN_COMMAND_ID (0x00)
+#define ZCL_WINDOW_COVERING_DOWN_CLOSE_COMMAND_ID (0x01)
+#define ZCL_WINDOW_COVERING_STOP_COMMAND_ID (0x02)
+#define ZCL_WINDOW_COVERING_GO_TO_LIFT_VALUE_COMMAND_ID (0x04)
+#define ZCL_WINDOW_COVERING_GO_TO_LIFT_PERCENTAGE_COMMAND_ID (0x05)
+#define ZCL_WINDOW_COVERING_GO_TO_TILT_VALUE_COMMAND_ID (0x07)
+#define ZCL_WINDOW_COVERING_GO_TO_TILT_PERCENTAGE_COMMAND_ID (0x08)
+
+// Commands for cluster: Barrier Control
+#define ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID (0x00)
+#define ZCL_BARRIER_CONTROL_STOP_COMMAND_ID (0x01)
+
+// Commands for cluster: Thermostat
+#define ZCL_SETPOINT_RAISE_LOWER_COMMAND_ID (0x00)
+#define ZCL_CURRENT_WEEKLY_SCHEDULE_COMMAND_ID (0x00)
+#define ZCL_SET_WEEKLY_SCHEDULE_COMMAND_ID (0x01)
+#define ZCL_RELAY_STATUS_LOG_COMMAND_ID (0x01)
+#define ZCL_GET_WEEKLY_SCHEDULE_COMMAND_ID (0x02)
+#define ZCL_CLEAR_WEEKLY_SCHEDULE_COMMAND_ID (0x03)
+#define ZCL_GET_RELAY_STATUS_LOG_COMMAND_ID (0x04)
+
+// Commands for cluster: Color Control
+#define ZCL_MOVE_TO_HUE_COMMAND_ID (0x00)
+#define ZCL_MOVE_HUE_COMMAND_ID (0x01)
+#define ZCL_STEP_HUE_COMMAND_ID (0x02)
+#define ZCL_MOVE_TO_SATURATION_COMMAND_ID (0x03)
+#define ZCL_MOVE_SATURATION_COMMAND_ID (0x04)
+#define ZCL_STEP_SATURATION_COMMAND_ID (0x05)
+#define ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID (0x06)
+#define ZCL_MOVE_TO_COLOR_COMMAND_ID (0x07)
+#define ZCL_MOVE_COLOR_COMMAND_ID (0x08)
+#define ZCL_STEP_COLOR_COMMAND_ID (0x09)
+#define ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID (0x0A)
+#define ZCL_ENHANCED_MOVE_TO_HUE_COMMAND_ID (0x40)
+#define ZCL_ENHANCED_MOVE_HUE_COMMAND_ID (0x41)
+#define ZCL_ENHANCED_STEP_HUE_COMMAND_ID (0x42)
+#define ZCL_ENHANCED_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID (0x43)
+#define ZCL_COLOR_LOOP_SET_COMMAND_ID (0x44)
+#define ZCL_STOP_MOVE_STEP_COMMAND_ID (0x47)
+#define ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID (0x4B)
+#define ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID (0x4C)
+
+// Commands for cluster: IAS Zone
+#define ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_ZONE_STATUS_CHANGE_NOTIFICATION_COMMAND_ID (0x00)
+#define ZCL_INITIATE_NORMAL_OPERATION_MODE_COMMAND_ID (0x01)
+#define ZCL_ZONE_ENROLL_REQUEST_COMMAND_ID (0x01)
+#define ZCL_INITIATE_TEST_MODE_COMMAND_ID (0x02)
+#define ZCL_INITIATE_NORMAL_OPERATION_MODE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_INITIATE_TEST_MODE_RESPONSE_COMMAND_ID (0x03)
+
+// Commands for cluster: IAS ACE
+#define ZCL_ARM_COMMAND_ID (0x00)
+#define ZCL_ARM_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_BYPASS_COMMAND_ID (0x01)
+#define ZCL_GET_ZONE_ID_MAP_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_EMERGENCY_COMMAND_ID (0x02)
+#define ZCL_GET_ZONE_INFORMATION_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_FIRE_COMMAND_ID (0x03)
+#define ZCL_ZONE_STATUS_CHANGED_COMMAND_ID (0x03)
+#define ZCL_PANIC_COMMAND_ID (0x04)
+#define ZCL_PANEL_STATUS_CHANGED_COMMAND_ID (0x04)
+#define ZCL_GET_ZONE_ID_MAP_COMMAND_ID (0x05)
+#define ZCL_GET_PANEL_STATUS_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_GET_ZONE_INFORMATION_COMMAND_ID (0x06)
+#define ZCL_SET_BYPASSED_ZONE_LIST_COMMAND_ID (0x06)
+#define ZCL_GET_PANEL_STATUS_COMMAND_ID (0x07)
+#define ZCL_BYPASS_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_GET_BYPASSED_ZONE_LIST_COMMAND_ID (0x08)
+#define ZCL_GET_ZONE_STATUS_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_GET_ZONE_STATUS_COMMAND_ID (0x09)
+
+// Commands for cluster: IAS WD
+#define ZCL_START_WARNING_COMMAND_ID (0x00)
+#define ZCL_SQUAWK_COMMAND_ID (0x01)
+
+// Commands for cluster: Generic Tunnel
+#define ZCL_MATCH_PROTOCOL_ADDRESS_COMMAND_ID (0x00)
+#define ZCL_MATCH_PROTOCOL_ADDRESS_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_ADVERTISE_PROTOCOL_ADDRESS_COMMAND_ID (0x01)
+
+// Commands for cluster: BACnet Protocol Tunnel
+#define ZCL_TRANSFER_NPDU_COMMAND_ID (0x00)
+
+// Commands for cluster: 11073 Protocol Tunnel
+#define ZCL_TRANSFER_APDU_COMMAND_ID (0x00)
+#define ZCL_CONNECT_REQUEST_COMMAND_ID (0x01)
+#define ZCL_DISCONNECT_REQUEST_COMMAND_ID (0x02)
+#define ZCL_CONNECT_STATUS_NOTIFICATION_COMMAND_ID (0x03)
+
+// Commands for cluster: ISO 7816 Protocol Tunnel
+#define ZCL_TRANSFER_APDU_COMMAND_ID (0x00)
+#define ZCL_INSERT_SMART_CARD_COMMAND_ID (0x01)
+#define ZCL_EXTRACT_SMART_CARD_COMMAND_ID (0x02)
+
+// Commands for cluster: Price
+#define ZCL_PUBLISH_PRICE_COMMAND_ID (0x00)
+#define ZCL_GET_CURRENT_PRICE_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_BLOCK_PERIOD_COMMAND_ID (0x01)
+#define ZCL_GET_SCHEDULED_PRICES_COMMAND_ID (0x01)
+#define ZCL_PUBLISH_CONVERSION_FACTOR_COMMAND_ID (0x02)
+#define ZCL_PRICE_ACKNOWLEDGEMENT_COMMAND_ID (0x02)
+#define ZCL_PUBLISH_CALORIFIC_VALUE_COMMAND_ID (0x03)
+#define ZCL_GET_BLOCK_PERIODS_COMMAND_ID (0x03)
+#define ZCL_PUBLISH_TARIFF_INFORMATION_COMMAND_ID (0x04)
+#define ZCL_GET_CONVERSION_FACTOR_COMMAND_ID (0x04)
+#define ZCL_PUBLISH_PRICE_MATRIX_COMMAND_ID (0x05)
+#define ZCL_GET_CALORIFIC_VALUE_COMMAND_ID (0x05)
+#define ZCL_PUBLISH_BLOCK_THRESHOLDS_COMMAND_ID (0x06)
+#define ZCL_GET_TARIFF_INFORMATION_COMMAND_ID (0x06)
+#define ZCL_PUBLISH_CO2_VALUE_COMMAND_ID (0x07)
+#define ZCL_GET_PRICE_MATRIX_COMMAND_ID (0x07)
+#define ZCL_PUBLISH_TIER_LABELS_COMMAND_ID (0x08)
+#define ZCL_GET_BLOCK_THRESHOLDS_COMMAND_ID (0x08)
+#define ZCL_PUBLISH_BILLING_PERIOD_COMMAND_ID (0x09)
+#define ZCL_GET_CO2_VALUE_COMMAND_ID (0x09)
+#define ZCL_PUBLISH_CONSOLIDATED_BILL_COMMAND_ID (0x0A)
+#define ZCL_GET_TIER_LABELS_COMMAND_ID (0x0A)
+#define ZCL_PUBLISH_CPP_EVENT_COMMAND_ID (0x0B)
+#define ZCL_GET_BILLING_PERIOD_COMMAND_ID (0x0B)
+#define ZCL_PUBLISH_CREDIT_PAYMENT_COMMAND_ID (0x0C)
+#define ZCL_GET_CONSOLIDATED_BILL_COMMAND_ID (0x0C)
+#define ZCL_PUBLISH_CURRENCY_CONVERSION_COMMAND_ID (0x0D)
+#define ZCL_CPP_EVENT_RESPONSE_COMMAND_ID (0x0D)
+#define ZCL_CANCEL_TARIFF_COMMAND_ID (0x0E)
+#define ZCL_GET_CREDIT_PAYMENT_COMMAND_ID (0x0E)
+#define ZCL_GET_CURRENCY_CONVERSION_COMMAND_COMMAND_ID (0x0F)
+#define ZCL_GET_TARIFF_CANCELLATION_COMMAND_ID (0x10)
+
+// Commands for cluster: Demand Response and Load Control
+#define ZCL_LOAD_CONTROL_EVENT_COMMAND_ID (0x00)
+#define ZCL_REPORT_EVENT_STATUS_COMMAND_ID (0x00)
+#define ZCL_CANCEL_LOAD_CONTROL_EVENT_COMMAND_ID (0x01)
+#define ZCL_GET_SCHEDULED_EVENTS_COMMAND_ID (0x01)
+#define ZCL_CANCEL_ALL_LOAD_CONTROL_EVENTS_COMMAND_ID (0x02)
+
+// Commands for cluster: Simple Metering
+#define ZCL_GET_PROFILE_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_GET_PROFILE_COMMAND_ID (0x00)
+#define ZCL_REQUEST_MIRROR_COMMAND_ID (0x01)
+#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_REMOVE_MIRROR_COMMAND_ID (0x02)
+#define ZCL_MIRROR_REMOVED_COMMAND_ID (0x02)
+#define ZCL_REQUEST_FAST_POLL_MODE_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_REQUEST_FAST_POLL_MODE_COMMAND_ID (0x03)
+#define ZCL_SCHEDULE_SNAPSHOT_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_ID (0x04)
+#define ZCL_TAKE_SNAPSHOT_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_TAKE_SNAPSHOT_COMMAND_ID (0x05)
+#define ZCL_PUBLISH_SNAPSHOT_COMMAND_ID (0x06)
+#define ZCL_GET_SNAPSHOT_COMMAND_ID (0x06)
+#define ZCL_GET_SAMPLED_DATA_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_START_SAMPLING_COMMAND_ID (0x07)
+#define ZCL_CONFIGURE_MIRROR_COMMAND_ID (0x08)
+#define ZCL_GET_SAMPLED_DATA_COMMAND_ID (0x08)
+#define ZCL_CONFIGURE_NOTIFICATION_SCHEME_COMMAND_ID (0x09)
+#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_ID (0x09)
+#define ZCL_CONFIGURE_NOTIFICATION_FLAGS_COMMAND_ID (0x0A)
+#define ZCL_RESET_LOAD_LIMIT_COUNTER_COMMAND_ID (0x0A)
+#define ZCL_GET_NOTIFIED_MESSAGE_COMMAND_ID (0x0B)
+#define ZCL_CHANGE_SUPPLY_COMMAND_ID (0x0B)
+#define ZCL_SUPPLY_STATUS_RESPONSE_COMMAND_ID (0x0C)
+#define ZCL_LOCAL_CHANGE_SUPPLY_COMMAND_ID (0x0C)
+#define ZCL_START_SAMPLING_RESPONSE_COMMAND_ID (0x0D)
+#define ZCL_SET_SUPPLY_STATUS_COMMAND_ID (0x0D)
+#define ZCL_SET_UNCONTROLLED_FLOW_THRESHOLD_COMMAND_ID (0x0E)
+
+// Commands for cluster: Messaging
+#define ZCL_DISPLAY_MESSAGE_COMMAND_ID (0x00)
+#define ZCL_GET_LAST_MESSAGE_COMMAND_ID (0x00)
+#define ZCL_CANCEL_MESSAGE_COMMAND_ID (0x01)
+#define ZCL_MESSAGE_CONFIRMATION_COMMAND_ID (0x01)
+#define ZCL_DISPLAY_PROTECTED_MESSAGE_COMMAND_ID (0x02)
+#define ZCL_GET_MESSAGE_CANCELLATION_COMMAND_ID (0x02)
+#define ZCL_CANCEL_ALL_MESSAGES_COMMAND_ID (0x03)
+
+// Commands for cluster: Tunneling
+#define ZCL_REQUEST_TUNNEL_COMMAND_ID (0x00)
+#define ZCL_REQUEST_TUNNEL_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_CLOSE_TUNNEL_COMMAND_ID (0x01)
+#define ZCL_TRANSFER_DATA_SERVER_TO_CLIENT_COMMAND_ID (0x01)
+#define ZCL_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID (0x02)
+#define ZCL_TRANSFER_DATA_ERROR_SERVER_TO_CLIENT_COMMAND_ID (0x02)
+#define ZCL_TRANSFER_DATA_ERROR_CLIENT_TO_SERVER_COMMAND_ID (0x03)
+#define ZCL_ACK_TRANSFER_DATA_SERVER_TO_CLIENT_COMMAND_ID (0x03)
+#define ZCL_ACK_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID (0x04)
+#define ZCL_READY_DATA_SERVER_TO_CLIENT_COMMAND_ID (0x04)
+#define ZCL_READY_DATA_CLIENT_TO_SERVER_COMMAND_ID (0x05)
+#define ZCL_SUPPORTED_TUNNEL_PROTOCOLS_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_ID (0x06)
+#define ZCL_TUNNEL_CLOSURE_NOTIFICATION_COMMAND_ID (0x06)
+
+// Commands for cluster: Prepayment
+#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_PREPAY_SNAPSHOT_COMMAND_ID (0x01)
+#define ZCL_CHANGE_DEBT_COMMAND_ID (0x02)
+#define ZCL_CHANGE_PAYMENT_MODE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_EMERGENCY_CREDIT_SETUP_COMMAND_ID (0x03)
+#define ZCL_CONSUMER_TOP_UP_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_CONSUMER_TOP_UP_COMMAND_ID (0x04)
+#define ZCL_CREDIT_ADJUSTMENT_COMMAND_ID (0x05)
+#define ZCL_PUBLISH_TOP_UP_LOG_COMMAND_ID (0x05)
+#define ZCL_CHANGE_PAYMENT_MODE_COMMAND_ID (0x06)
+#define ZCL_PUBLISH_DEBT_LOG_COMMAND_ID (0x06)
+#define ZCL_GET_PREPAY_SNAPSHOT_COMMAND_ID (0x07)
+#define ZCL_GET_TOP_UP_LOG_COMMAND_ID (0x08)
+#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_COMMAND_ID (0x09)
+#define ZCL_GET_DEBT_REPAYMENT_LOG_COMMAND_ID (0x0A)
+#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_COMMAND_ID (0x0B)
+#define ZCL_SET_OVERALL_DEBT_CAP_COMMAND_ID (0x0C)
+
+// Commands for cluster: Energy Management
+#define ZCL_REPORT_EVENT_STATUS_COMMAND_ID (0x00)
+#define ZCL_MANAGE_EVENT_COMMAND_ID (0x00)
+
+// Commands for cluster: Calendar
+#define ZCL_PUBLISH_CALENDAR_COMMAND_ID (0x00)
+#define ZCL_GET_CALENDAR_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_DAY_PROFILE_COMMAND_ID (0x01)
+#define ZCL_GET_DAY_PROFILES_COMMAND_ID (0x01)
+#define ZCL_PUBLISH_WEEK_PROFILE_COMMAND_ID (0x02)
+#define ZCL_GET_WEEK_PROFILES_COMMAND_ID (0x02)
+#define ZCL_PUBLISH_SEASONS_COMMAND_ID (0x03)
+#define ZCL_GET_SEASONS_COMMAND_ID (0x03)
+#define ZCL_PUBLISH_SPECIAL_DAYS_COMMAND_ID (0x04)
+#define ZCL_GET_SPECIAL_DAYS_COMMAND_ID (0x04)
+#define ZCL_CANCEL_CALENDAR_COMMAND_ID (0x05)
+#define ZCL_GET_CALENDAR_CANCELLATION_COMMAND_ID (0x05)
+
+// Commands for cluster: Device Management
+#define ZCL_GET_CHANGE_OF_TENANCY_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_CHANGE_OF_TENANCY_COMMAND_ID (0x00)
+#define ZCL_GET_CHANGE_OF_SUPPLIER_COMMAND_ID (0x01)
+#define ZCL_PUBLISH_CHANGE_OF_SUPPLIER_COMMAND_ID (0x01)
+#define ZCL_REQUEST_NEW_PASSWORD_COMMAND_ID (0x02)
+#define ZCL_REQUEST_NEW_PASSWORD_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_GET_SITE_ID_COMMAND_ID (0x03)
+#define ZCL_UPDATE_SITE_ID_COMMAND_ID (0x03)
+#define ZCL_REPORT_EVENT_CONFIGURATION_COMMAND_ID (0x04)
+#define ZCL_SET_EVENT_CONFIGURATION_COMMAND_ID (0x04)
+#define ZCL_GET_CIN_COMMAND_ID (0x05)
+#define ZCL_GET_EVENT_CONFIGURATION_COMMAND_ID (0x05)
+#define ZCL_UPDATE_CIN_COMMAND_ID (0x06)
+
+// Commands for cluster: Events
+#define ZCL_GET_EVENT_LOG_COMMAND_ID (0x00)
+#define ZCL_PUBLISH_EVENT_COMMAND_ID (0x00)
+#define ZCL_CLEAR_EVENT_LOG_REQUEST_COMMAND_ID (0x01)
+#define ZCL_PUBLISH_EVENT_LOG_COMMAND_ID (0x01)
+#define ZCL_CLEAR_EVENT_LOG_RESPONSE_COMMAND_ID (0x02)
+
+// Commands for cluster: MDU Pairing
+#define ZCL_PAIRING_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_PAIRING_REQUEST_COMMAND_ID (0x00)
+
+// Commands for cluster: Sub-GHz
+#define ZCL_SUSPEND_ZCL_MESSAGES_COMMAND_ID (0x00)
+#define ZCL_GET_SUSPEND_ZCL_MESSAGES_STATUS_COMMAND_ID (0x00)
+
+// Commands for cluster: Key Establishment
+#define ZCL_INITIATE_KEY_ESTABLISHMENT_REQUEST_COMMAND_ID (0x00)
+#define ZCL_INITIATE_KEY_ESTABLISHMENT_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_EPHEMERAL_DATA_REQUEST_COMMAND_ID (0x01)
+#define ZCL_EPHEMERAL_DATA_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_CONFIRM_KEY_DATA_REQUEST_COMMAND_ID (0x02)
+#define ZCL_CONFIRM_KEY_DATA_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_TERMINATE_KEY_ESTABLISHMENT_COMMAND_ID (0x03)
+
+// Commands for cluster: Information
+#define ZCL_REQUEST_INFORMATION_COMMAND_ID (0x00)
+#define ZCL_REQUEST_INFORMATION_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_PUSH_INFORMATION_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_PUSH_INFORMATION_COMMAND_ID (0x01)
+#define ZCL_SEND_PREFERENCE_COMMAND_ID (0x02)
+#define ZCL_SEND_PREFERENCE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_REQUEST_PREFERENCE_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_SERVER_REQUEST_PREFERENCE_COMMAND_ID (0x03)
+#define ZCL_UPDATE_COMMAND_ID (0x04)
+#define ZCL_REQUEST_PREFERENCE_CONFIRMATION_COMMAND_ID (0x04)
+#define ZCL_DELETE_COMMAND_ID (0x05)
+#define ZCL_UPDATE_RESPONSE_COMMAND_ID (0x05)
+#define ZCL_CONFIGURE_NODE_DESCRIPTION_COMMAND_ID (0x06)
+#define ZCL_DELETE_RESPONSE_COMMAND_ID (0x06)
+#define ZCL_CONFIGURE_DELIVERY_ENABLE_COMMAND_ID (0x07)
+#define ZCL_CONFIGURE_PUSH_INFORMATION_TIMER_COMMAND_ID (0x08)
+#define ZCL_CONFIGURE_SET_ROOT_ID_COMMAND_ID (0x09)
+
+// Commands for cluster: Data Sharing
+#define ZCL_READ_FILE_REQUEST_COMMAND_ID (0x00)
+#define ZCL_WRITE_FILE_REQUEST_COMMAND_ID (0x00)
+#define ZCL_READ_RECORD_REQUEST_COMMAND_ID (0x01)
+#define ZCL_MODIFY_FILE_REQUEST_COMMAND_ID (0x01)
+#define ZCL_WRITE_FILE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_MODIFY_RECORD_REQUEST_COMMAND_ID (0x02)
+#define ZCL_FILE_TRANSMISSION_COMMAND_ID (0x03)
+#define ZCL_RECORD_TRANSMISSION_COMMAND_ID (0x04)
+
+// Commands for cluster: Gaming
+#define ZCL_SEARCH_GAME_COMMAND_ID (0x00)
+#define ZCL_GAME_ANNOUNCEMENT_COMMAND_ID (0x00)
+#define ZCL_JOIN_GAME_COMMAND_ID (0x01)
+#define ZCL_GENERAL_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_START_GAME_COMMAND_ID (0x02)
+#define ZCL_PAUSE_GAME_COMMAND_ID (0x03)
+#define ZCL_RESUME_GAME_COMMAND_ID (0x04)
+#define ZCL_QUIT_GAME_COMMAND_ID (0x05)
+#define ZCL_END_GAME_COMMAND_ID (0x06)
+#define ZCL_START_OVER_COMMAND_ID (0x07)
+#define ZCL_ACTION_CONTROL_COMMAND_ID (0x08)
+#define ZCL_DOWNLOAD_GAME_COMMAND_ID (0x09)
+
+// Commands for cluster: Data Rate Control
+#define ZCL_PATH_CREATION_COMMAND_ID (0x00)
+#define ZCL_DATA_RATE_CONTROL_COMMAND_ID (0x00)
+#define ZCL_DATA_RATE_NOTIFICATION_COMMAND_ID (0x01)
+#define ZCL_PATH_DELETION_COMMAND_ID (0x02)
+
+// Commands for cluster: Voice over ZigBee
+#define ZCL_ESTABLISHMENT_REQUEST_COMMAND_ID (0x00)
+#define ZCL_ESTABLISHMENT_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_VOICE_TRANSMISSION_COMMAND_ID (0x01)
+#define ZCL_VOICE_TRANSMISSION_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_VOICE_TRANSMISSION_COMPLETION_COMMAND_ID (0x02)
+#define ZCL_CONTROL_COMMAND_ID (0x02)
+#define ZCL_CONTROL_RESPONSE_COMMAND_ID (0x03)
+
+// Commands for cluster: Chatting
+#define ZCL_JOIN_CHAT_REQUEST_COMMAND_ID (0x00)
+#define ZCL_START_CHAT_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_LEAVE_CHAT_REQUEST_COMMAND_ID (0x01)
+#define ZCL_JOIN_CHAT_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_SEARCH_CHAT_REQUEST_COMMAND_ID (0x02)
+#define ZCL_USER_LEFT_COMMAND_ID (0x02)
+#define ZCL_SWITCH_CHAIRMAN_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_USER_JOINED_COMMAND_ID (0x03)
+#define ZCL_START_CHAT_REQUEST_COMMAND_ID (0x04)
+#define ZCL_SEARCH_CHAT_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_CHAT_MESSAGE_COMMAND_ID (0x05)
+#define ZCL_SWITCH_CHAIRMAN_REQUEST_COMMAND_ID (0x05)
+#define ZCL_GET_NODE_INFORMATION_REQUEST_COMMAND_ID (0x06)
+#define ZCL_SWITCH_CHAIRMAN_CONFIRM_COMMAND_ID (0x06)
+#define ZCL_SWITCH_CHAIRMAN_NOTIFICATION_COMMAND_ID (0x07)
+#define ZCL_GET_NODE_INFORMATION_RESPONSE_COMMAND_ID (0x08)
+
+// Commands for cluster: Payment
+#define ZCL_BUY_REQUEST_COMMAND_ID (0x00)
+#define ZCL_BUY_CONFIRM_COMMAND_ID (0x00)
+#define ZCL_ACCEPT_PAYMENT_COMMAND_ID (0x01)
+#define ZCL_RECEIPT_DELIVERY_COMMAND_ID (0x01)
+#define ZCL_PAYMENT_CONFIRM_COMMAND_ID (0x02)
+#define ZCL_TRANSACTION_END_COMMAND_ID (0x02)
+
+// Commands for cluster: Billing
+#define ZCL_SUBSCRIBE_COMMAND_ID (0x00)
+#define ZCL_CHECK_BILL_STATUS_COMMAND_ID (0x00)
+#define ZCL_UNSUBSCRIBE_COMMAND_ID (0x01)
+#define ZCL_SEND_BILL_RECORD_COMMAND_ID (0x01)
+#define ZCL_START_BILLING_SESSION_COMMAND_ID (0x02)
+#define ZCL_STOP_BILLING_SESSION_COMMAND_ID (0x03)
+#define ZCL_BILL_STATUS_NOTIFICATION_COMMAND_ID (0x04)
+#define ZCL_SESSION_KEEP_ALIVE_COMMAND_ID (0x05)
+
+// Commands for cluster: Appliance Events and Alert
+#define ZCL_GET_ALERTS_COMMAND_ID (0x00)
+#define ZCL_GET_ALERTS_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_ALERTS_NOTIFICATION_COMMAND_ID (0x01)
+#define ZCL_EVENTS_NOTIFICATION_COMMAND_ID (0x02)
+
+// Commands for cluster: Appliance Statistics
+#define ZCL_LOG_NOTIFICATION_COMMAND_ID (0x00)
+#define ZCL_LOG_REQUEST_COMMAND_ID (0x00)
+#define ZCL_LOG_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_LOG_QUEUE_REQUEST_COMMAND_ID (0x01)
+#define ZCL_LOG_QUEUE_RESPONSE_COMMAND_ID (0x02)
+#define ZCL_STATISTICS_AVAILABLE_COMMAND_ID (0x03)
+
+// Commands for cluster: Electrical Measurement
+#define ZCL_GET_PROFILE_INFO_RESPONSE_COMMAND_COMMAND_ID (0x00)
+#define ZCL_GET_PROFILE_INFO_COMMAND_COMMAND_ID (0x00)
+#define ZCL_GET_MEASUREMENT_PROFILE_RESPONSE_COMMAND_COMMAND_ID (0x01)
+#define ZCL_GET_MEASUREMENT_PROFILE_COMMAND_COMMAND_ID (0x01)
+
+// Commands for cluster: ZLL Commissioning
+#define ZCL_SCAN_REQUEST_COMMAND_ID (0x00)
+#define ZCL_SCAN_RESPONSE_COMMAND_ID (0x01)
+#define ZCL_DEVICE_INFORMATION_REQUEST_COMMAND_ID (0x02)
+#define ZCL_DEVICE_INFORMATION_RESPONSE_COMMAND_ID (0x03)
+#define ZCL_IDENTIFY_REQUEST_COMMAND_ID (0x06)
+#define ZCL_RESET_TO_FACTORY_NEW_REQUEST_COMMAND_ID (0x07)
+#define ZCL_NETWORK_START_REQUEST_COMMAND_ID (0x10)
+#define ZCL_NETWORK_START_RESPONSE_COMMAND_ID (0x11)
+#define ZCL_NETWORK_JOIN_ROUTER_REQUEST_COMMAND_ID (0x12)
+#define ZCL_NETWORK_JOIN_ROUTER_RESPONSE_COMMAND_ID (0x13)
+#define ZCL_NETWORK_JOIN_END_DEVICE_REQUEST_COMMAND_ID (0x14)
+#define ZCL_NETWORK_JOIN_END_DEVICE_RESPONSE_COMMAND_ID (0x15)
+#define ZCL_NETWORK_UPDATE_REQUEST_COMMAND_ID (0x16)
+#define ZCL_ENDPOINT_INFORMATION_COMMAND_ID (0x40)
+#define ZCL_GET_GROUP_IDENTIFIERS_REQUEST_COMMAND_ID (0x41)
+#define ZCL_GET_GROUP_IDENTIFIERS_RESPONSE_COMMAND_ID (0x41)
+#define ZCL_GET_ENDPOINT_LIST_REQUEST_COMMAND_ID (0x42)
+#define ZCL_GET_ENDPOINT_LIST_RESPONSE_COMMAND_ID (0x42)
+
+// Commands for cluster: Binding
+#define ZCL_BIND_COMMAND_ID (0x00)
+#define ZCL_UNBIND_COMMAND_ID (0x01)
+
+// Commands for cluster: Sample Mfg Specific Cluster
+#define ZCL_COMMAND_ONE_COMMAND_ID (0x00)
+
+// Commands for cluster: Sample Mfg Specific Cluster 2
+#define ZCL_COMMAND_TWO_COMMAND_ID (0x00)
+
+// Commands for cluster: Configuration Cluster
+#define ZCL_SET_TOKEN_COMMAND_ID (0x00)
+#define ZCL_RETURN_TOKEN_COMMAND_ID (0x00)
+#define ZCL_LOCK_TOKENS_COMMAND_ID (0x01)
+#define ZCL_READ_TOKENS_COMMAND_ID (0x02)
+#define ZCL_UNLOCK_TOKENS_COMMAND_ID (0x03)
+
+// Commands for cluster: MFGLIB Cluster
+#define ZCL_STREAM_COMMAND_ID (0x00)
+#define ZCL_TONE_COMMAND_ID (0x01)
+#define ZCL_RX_MODE_COMMAND_ID (0x02)
+
+// Commands for cluster: SL Works With All Hubs
+#define ZCL_ENABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID (0x00)
+#define ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_RESPONSE_COMMAND_ID (0x00)
+#define ZCL_DISABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID (0x01)
+#define ZCL_POWERING_OFF_NOTIFICATION_COMMAND_ID (0x01)
+#define ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_COMMAND_ID (0x02)
+#define ZCL_POWERING_ON_NOTIFICATION_COMMAND_ID (0x02)
+#define ZCL_REQUEST_NEW_APS_LINK_KEY_COMMAND_ID (0x03)
+#define ZCL_SHORT_ADDRESS_CHANGE_COMMAND_ID (0x03)
+#define ZCL_ENABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID (0x04)
+#define ZCL_APS_ACK_ENABLEMENT_QUERY_RESPONSE_COMMAND_ID (0x04)
+#define ZCL_DISABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID (0x05)
+#define ZCL_POWER_DESCRIPTOR_CHANGE_COMMAND_ID (0x05)
+#define ZCL_REQUEST_TIME_COMMAND_ID (0x06)
+#define ZCL_NEW_DEBUG_REPORT_NOTIFICATION_COMMAND_ID (0x06)
+#define ZCL_ENABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID (0x07)
+#define ZCL_DEBUG_REPORT_QUERY_RESPONSE_COMMAND_ID (0x07)
+#define ZCL_DISABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID (0x08)
+#define ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_RESPONSE_COMMAND_ID (0x08)
+#define ZCL_SET_IAS_ZONE_ENROLLMENT_METHOD_COMMAND_ID (0x09)
+#define ZCL_SURVEY_BEACONS_RESPONSE_COMMAND_ID (0x09)
+#define ZCL_CLEAR_BINDING_TABLE_COMMAND_ID (0x0A)
+#define ZCL_ENABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID (0x0B)
+#define ZCL_DISABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID (0x0C)
+#define ZCL_SET_MAC_POLL_FAILURE_WAIT_TIME_COMMAND_ID (0x0D)
+#define ZCL_SET_PENDING_NETWORK_UPDATE_COMMAND_ID (0x0E)
+#define ZCL_REQUIRE_APS_ACKS_ON_UNICASTS_COMMAND_ID (0x0F)
+#define ZCL_REMOVE_APS_ACKS_ON_UNICASTS_REQUIREMENT_COMMAND_ID (0x10)
+#define ZCL_APS_ACK_REQUIREMENT_QUERY_COMMAND_ID (0x11)
+#define ZCL_DEBUG_REPORT_QUERY_COMMAND_ID (0x12)
+#define ZCL_SURVEY_BEACONS_COMMAND_ID (0x13)
+#define ZCL_DISABLE_OTA_DOWNGRADES_COMMAND_ID (0x14)
+#define ZCL_DISABLE_MGMT_LEAVE_WITHOUT_REJOIN_COMMAND_ID (0x15)
+#define ZCL_DISABLE_TOUCHLINK_INTERPAN_MESSAGE_SUPPORT_COMMAND_ID (0x16)
+#define ZCL_ENABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID (0x17)
+#define ZCL_DISABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID (0x18)
+#define ZCL_ENABLE_TC_SECURITY_ON_NTWK_KEY_ROTATION_COMMAND_ID (0x19)
+#define ZCL_ENABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID (0x1A)
+#define ZCL_DISABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID (0x1B)
+#define ZCL_ENABLE_CONFIGURATION_MODE_COMMAND_ID (0x1C)
+#define ZCL_DISABLE_CONFIGURATION_MODE_COMMAND_ID (0x1D)
+#define ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_COMMAND_ID (0x1E)
+#define ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_COMMAND_ID (0x1F)
+#define ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_RESPONSE_COMMAND_ID (0x9E)
diff --git a/src/darwin/Framework/CHIP/gen/endpoint_config.h b/src/darwin/Framework/CHIP/gen/endpoint_config.h
new file mode 100644
index 0000000..2d57360
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/endpoint_config.h
@@ -0,0 +1,428 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// Default values for the attributes longer than a pointer,
+// in a form of a binary blob
+// Separate block is generated for big-endian and little-endian cases.
+#if BIGENDIAN_CPU
+#define GENERATED_DEFAULTS \
+ { \
+ }
+
+#else // !BIGENDIAN_CPU
+#define GENERATED_DEFAULTS \
+ { \
+ }
+
+#endif // BIGENDIAN_CPU
+
+#define GENERATED_DEFAULTS_COUNT (0)
+
+#define ZAP_TYPE(type) ZCL_##type##_ATTRIBUTE_TYPE
+#define ZAP_LONG_DEFAULTS_INDEX(index) \
+ { \
+ (uint8_t *) (&generatedDefaults[index]) \
+ }
+#define ZAP_MIN_MAX_DEFAULTS_INDEX(index) \
+ { \
+ (uint8_t *) (&minMaxDefault[index]) \
+ }
+
+// This is an array of EmberAfAttributeMinMaxValue structures.
+#define GENERATED_MIN_MAX_DEFAULT_COUNT 0
+#define GENERATED_MIN_MAX_DEFAULTS \
+ { \
+ }
+
+#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
+// This is an array of EmberAfAttributeMetadata structures.
+#define GENERATED_ATTRIBUTE_COUNT 11
+#define GENERATED_ATTRIBUTES \
+ { \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } }, /* Basic (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 2 } \
+ }, /* Identify (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Groups (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Scenes (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 2 } \
+ }, /* On/off (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Level Control (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Door Lock (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 } \
+ }, /* Barrier Control (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Color Control (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 } \
+ }, /* Temperature Measurement (client): cluster revision */ \
+ { \
+ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 } \
+ }, /* Binding (client): cluster revision */ \
+ }
+
+// This is an array of EmberAfCluster structures.
+#define ZAP_ATTRIBUTE_INDEX(index) ((EmberAfAttributeMetadata *) (&generatedAttributes[index]))
+
+// Cluster function static arrays
+#define GENERATED_FUNCTION_ARRAYS
+
+#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
+#define GENERATED_CLUSTER_COUNT 11
+#define GENERATED_CLUSTERS \
+ { \
+ { 0x0000, ZAP_ATTRIBUTE_INDEX(0), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Basic (client) */ \
+ { \
+ 0x0003, ZAP_ATTRIBUTE_INDEX(1), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Identify (client) */ \
+ { 0x0004, ZAP_ATTRIBUTE_INDEX(2), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Groups (client) */ \
+ { 0x0005, ZAP_ATTRIBUTE_INDEX(3), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Scenes (client) */ \
+ { 0x0006, ZAP_ATTRIBUTE_INDEX(4), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: On/off (client) */ \
+ { \
+ 0x0008, ZAP_ATTRIBUTE_INDEX(5), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Level Control (client) */ \
+ { \
+ 0x0101, ZAP_ATTRIBUTE_INDEX(6), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Door Lock (client) */ \
+ { \
+ 0x0103, ZAP_ATTRIBUTE_INDEX(7), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Barrier Control (client) */ \
+ { \
+ 0x0300, ZAP_ATTRIBUTE_INDEX(8), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Color Control (client) */ \
+ { \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(9), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \
+ { \
+ 0xF000, ZAP_ATTRIBUTE_INDEX(10), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: Binding (client) */ \
+ }
+
+#define ZAP_CLUSTER_INDEX(index) ((EmberAfCluster *) (&generatedClusters[index]))
+
+// This is an array of EmberAfEndpointType structures.
+#define GENERATED_ENDPOINT_TYPES \
+ { \
+ { ZAP_CLUSTER_INDEX(0), 11, 22 }, \
+ }
+
+// Largest attribute size is needed for various buffers
+#define ATTRIBUTE_LARGEST (2)
+
+// Total size of singleton attributes
+#define ATTRIBUTE_SINGLETONS_SIZE (0)
+
+// Total size of attribute storage
+#define ATTRIBUTE_MAX_SIZE (22)
+
+// Number of fixed endpoints
+#define FIXED_ENDPOINT_COUNT (1)
+
+// Array of endpoints that are supported, the data inside
+// the array is the endpoint number.
+#define FIXED_ENDPOINT_ARRAY \
+ { \
+ 0x0001 \
+ }
+
+// Array of profile ids
+#define FIXED_PROFILE_IDS \
+ { \
+ 0x0103 \
+ }
+
+// Array of device ids
+#define FIXED_DEVICE_IDS \
+ { \
+ 0 \
+ }
+
+// Array of device versions
+#define FIXED_DEVICE_VERSIONS \
+ { \
+ 1 \
+ }
+
+// Array of endpoint types supported on each endpoint
+#define FIXED_ENDPOINT_TYPES \
+ { \
+ 0 \
+ }
+
+// Array of networks supported on each endpoint
+#define FIXED_NETWORKS \
+ { \
+ 0 \
+ }
+
+// Array of EmberAfCommandMetadata structs.
+#define ZAP_COMMAND_MASK(mask) COMMAND_MASK_##mask
+#define EMBER_AF_GENERATED_COMMAND_COUNT (105)
+#define GENERATED_COMMANDS \
+ { \
+ { 0x0000, 0x00, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Basic (client): MfgSpecificPing */ \
+ { \
+ 0x0000, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Basic (client): ResetToFactoryDefaults */ \
+ { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (client): Identify */ \
+ { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Identify (client): IdentifyQueryResponse */ \
+ { 0x0003, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (client): IdentifyQuery */ \
+ { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): AddGroup */ \
+ { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): AddGroupResponse */ \
+ { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): ViewGroup */ \
+ { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): ViewGroupResponse */ \
+ { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): GetGroupMembership */ \
+ { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): GetGroupMembershipResponse */ \
+ { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): RemoveGroup */ \
+ { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): RemoveGroupResponse */ \
+ { 0x0004, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): RemoveAllGroups */ \
+ { 0x0004, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): AddGroupIfIdentifying */ \
+ { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): AddScene */ \
+ { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): AddSceneResponse */ \
+ { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): ViewScene */ \
+ { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): ViewSceneResponse */ \
+ { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RemoveScene */ \
+ { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): RemoveSceneResponse */ \
+ { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RemoveAllScenes */ \
+ { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): RemoveAllScenesResponse */ \
+ { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): StoreScene */ \
+ { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): StoreSceneResponse */ \
+ { 0x0005, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RecallScene */ \
+ { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): GetSceneMembership */ \
+ { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): GetSceneMembershipResponse */ \
+ { 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): Off */ \
+ { 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): On */ \
+ { 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): Toggle */ \
+ { 0x0008, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveToLevel */ \
+ { 0x0008, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Move */ \
+ { 0x0008, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Step */ \
+ { 0x0008, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Stop */ \
+ { 0x0008, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveToLevelWithOnOff */ \
+ { 0x0008, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveWithOnOff */ \
+ { 0x0008, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): StepWithOnOff */ \
+ { 0x0008, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): StopWithOnOff */ \
+ { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): LockDoor */ \
+ { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): LockDoorResponse */ \
+ { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): UnlockDoor */ \
+ { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): UnlockDoorResponse */ \
+ { 0x0101, 0x03, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): UnlockWithTimeout */ \
+ { \
+ 0x0101, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): UnlockWithTimeoutResponse */ \
+ { 0x0101, 0x04, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetLogRecord */ \
+ { \
+ 0x0101, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetLogRecordResponse */ \
+ { 0x0101, 0x05, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetPin */ \
+ { 0x0101, 0x05, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetPinResponse */ \
+ { 0x0101, 0x06, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetPin */ \
+ { 0x0101, 0x06, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetPinResponse */ \
+ { 0x0101, 0x07, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearPin */ \
+ { 0x0101, 0x07, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearPinResponse */ \
+ { 0x0101, 0x08, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllPins */ \
+ { \
+ 0x0101, 0x08, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearAllPinsResponse */ \
+ { 0x0101, 0x09, 0 }, /* Door Lock (client): SetUserStatusResponse */ \
+ { 0x0101, 0x0A, 0 }, /* Door Lock (client): GetUserStatusResponse */ \
+ { \
+ 0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetWeekdaySchedule */ \
+ { \
+ 0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetWeekdayScheduleResponse */ \
+ { \
+ 0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetWeekdaySchedule */ \
+ { \
+ 0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetWeekdayScheduleResponse */ \
+ { \
+ 0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearWeekdaySchedule */ \
+ { \
+ 0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearWeekdayScheduleResponse */ \
+ { \
+ 0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetYeardaySchedule */ \
+ { \
+ 0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetYeardayScheduleResponse */ \
+ { \
+ 0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetYeardaySchedule */ \
+ { \
+ 0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetYeardayScheduleResponse */ \
+ { \
+ 0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearYeardaySchedule */ \
+ { \
+ 0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearYeardayScheduleResponse */ \
+ { \
+ 0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetHolidaySchedule */ \
+ { \
+ 0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetHolidayScheduleResponse */ \
+ { \
+ 0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetHolidaySchedule */ \
+ { \
+ 0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetHolidayScheduleResponse */ \
+ { \
+ 0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearHolidaySchedule */ \
+ { \
+ 0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearHolidayScheduleResponse */ \
+ { 0x0101, 0x14, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetUserType */ \
+ { \
+ 0x0101, 0x14, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): SetUserTypeResponse */ \
+ { 0x0101, 0x15, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetUserType */ \
+ { \
+ 0x0101, 0x15, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): GetUserTypeResponse */ \
+ { 0x0101, 0x16, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetRfid */ \
+ { 0x0101, 0x16, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetRfidResponse */ \
+ { 0x0101, 0x17, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetRfid */ \
+ { 0x0101, 0x17, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetRfidResponse */ \
+ { 0x0101, 0x18, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearRfid */ \
+ { 0x0101, 0x18, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearRfidResponse */ \
+ { 0x0101, 0x19, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllRfids */ \
+ { \
+ 0x0101, 0x19, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Door Lock (client): ClearAllRfidsResponse */ \
+ { 0x0103, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlGoToPercent */ \
+ { 0x0103, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlStop */ \
+ { 0x0300, 0x00, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveToHue */ \
+ { 0x0300, 0x01, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveHue */ \
+ { 0x0300, 0x02, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StepHue */ \
+ { \
+ 0x0300, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveToSaturation */ \
+ { \
+ 0x0300, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveSaturation */ \
+ { \
+ 0x0300, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): StepSaturation */ \
+ { \
+ 0x0300, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveToHueAndSaturation */ \
+ { 0x0300, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveToColor */ \
+ { 0x0300, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveColor */ \
+ { 0x0300, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): StepColor */ \
+ { \
+ 0x0300, 0x0A, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveToColorTemperature */ \
+ { 0x0300, 0x47, \
+ ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StopMoveStep */ \
+ { \
+ 0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): MoveColorTemperature */ \
+ { \
+ 0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) \
+ }, /* Color Control (client): StepColorTemperature */ \
+ { 0xF000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (client): Bind */ \
+ { 0xF000, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (client): Unbind */ \
+ }
+
+// Array of EmberAfManufacturerCodeEntry structures for commands.
+#define GENERATED_COMMAND_MANUFACTURER_CODE_COUNT (1)
+#define GENERATED_COMMAND_MANUFACTURER_CODES \
+ { \
+ { 0, 0x1002 }, \
+ }
+
+// This is an array of EmberAfManufacturerCodeEntry structures for clusters.
+#define GENERATED_CLUSTER_MANUFACTURER_CODE_COUNT (0)
+#define GENERATED_CLUSTER_MANUFACTURER_CODES \
+ { \
+ { \
+ 0x00, 0x00 \
+ } \
+ }
+
+// This is an array of EmberAfManufacturerCodeEntry structures for attributes.
+#define GENERATED_ATTRIBUTE_MANUFACTURER_CODE_COUNT (0)
+#define GENERATED_ATTRIBUTE_MANUFACTURER_CODES \
+ { \
+ { \
+ 0x00, 0x00 \
+ } \
+ }
+
+// Array of EmberAfPluginReportingEntry structures.
+#define ZRD(x) EMBER_ZCL_REPORTING_DIRECTION_##x
+#define ZAP_REPORT_DIRECTION(x) ZRD(x)
+
+// Use this macro to check if Reporting plugin is included
+#define EMBER_AF_PLUGIN_REPORTING
+// User options for plugin Reporting
+#define EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE (1)
+#define EMBER_AF_PLUGIN_REPORTING_ENABLE_GROUP_BOUND_REPORTS
+
+#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (1)
+#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS \
+ { \
+ { \
+ ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0000, 0xFFFD, ZAP_CLUSTER_MASK(CLIENT), 0x0000, { { 0, 65344, 0 } } \
+ }, /* Reporting for cluster: "Basic", attribute: "cluster revision". side: client */ \
+ }
diff --git a/src/darwin/Framework/CHIP/gen/enums.h b/src/darwin/Framework/CHIP/gen/enums.h
new file mode 100644
index 0000000..7cf4c5c
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/enums.h
@@ -0,0 +1,4007 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// ZCL enums
+
+// Enum for 11073ConnectRequestConnectControl
+typedef enum
+{
+ EMBER_ZCL_11073_CONNECT_REQUEST_CONNECT_CONTROL_PREEMPTIBLE = 1,
+} EmberAf11073ConnectRequestConnectControl;
+
+// Enum for 11073TunnelConnectionStatus
+typedef enum
+{
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_DISCONNECTED = 0,
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_CONNECTED = 1,
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_NOT_AUTHORIZED = 2,
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_RECONNECT_REQUEST = 3,
+ EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_ALREADY_CONNECTED = 4,
+} EmberAf11073TunnelConnectionStatus;
+
+// Enum for AlertCountType
+typedef enum
+{
+ EMBER_ZCL_ALERT_COUNT_TYPE_UNSTRUCTURED = 0,
+} EmberAfAlertCountType;
+
+// Enum for AlertStructureCategory
+typedef enum
+{
+ EMBER_ZCL_ALERT_STRUCTURE_CATEGORY_WARNING = 256,
+ EMBER_ZCL_ALERT_STRUCTURE_CATEGORY_DANGER = 512,
+ EMBER_ZCL_ALERT_STRUCTURE_CATEGORY_FAILURE = 768,
+} EmberAfAlertStructureCategory;
+
+// Enum for AlertStructurePresenceRecovery
+typedef enum
+{
+ EMBER_ZCL_ALERT_STRUCTURE_PRESENCE_RECOVERY_RECOVERY = 0,
+ EMBER_ZCL_ALERT_STRUCTURE_PRESENCE_RECOVERY_PRESENCE = 4096,
+} EmberAfAlertStructurePresenceRecovery;
+
+// Enum for AlternateCostUnit
+typedef enum
+{
+ EMBER_ZCL_ALTERNATE_COST_UNIT_KG_OF_CO2_PER_UNIT_OF_MEASURE = 2,
+} EmberAfAlternateCostUnit;
+
+// Enum for AmiCriticalityLevel
+typedef enum
+{
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_RESERVED = 0,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_GREEN = 1,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_1 = 2,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_2 = 3,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_3 = 4,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_4 = 5,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_5 = 6,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_EMERGENCY = 7,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_PLANNED_OUTAGE = 8,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_SERVICE_DISCONNECT = 9,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED1 = 10,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED2 = 11,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED3 = 12,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED4 = 13,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED5 = 14,
+ EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED6 = 15,
+} EmberAfAmiCriticalityLevel;
+
+// Enum for AmiEventStatus
+typedef enum
+{
+ EMBER_ZCL_AMI_EVENT_STATUS_LOAD_CONTROL_EVENT_COMMAND_RX = 1,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_STARTED = 2,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_COMPLETED = 3,
+ EMBER_ZCL_AMI_EVENT_STATUS_USER_HAS_CHOOSE_TO_OPT_OUT = 4,
+ EMBER_ZCL_AMI_EVENT_STATUS_USER_HAS_CHOOSE_TO_OPT_IN = 5,
+ EMBER_ZCL_AMI_EVENT_STATUS_THE_EVENT_HAS_BEEN_CANCELED = 6,
+ EMBER_ZCL_AMI_EVENT_STATUS_THE_EVENT_HAS_BEEN_SUPERSEDED = 7,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_PARTIALLY_COMPLETED_WITH_USER_OPT_OUT = 8,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_PARTIALLY_COMPLETED_DUE_TO_USER_OPT_IN = 9,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_COMPLETED_NO_USER_PARTICIPATION_PREVIOUS_OPT_OUT = 10,
+ EMBER_ZCL_AMI_EVENT_STATUS_INVALID_OPT_OUT = 246,
+ EMBER_ZCL_AMI_EVENT_STATUS_EVENT_NOT_FOUND = 247,
+ EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_INVALID_CANCEL_COMMAND = 248,
+ EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_INVALID_CANCEL_COMMAND_INVALID_EFFECTIVE_TIME = 249,
+ EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_EVENT_EXPIRED = 251,
+ EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_INVALID_CANCEL_UNDEFINED_EVENT = 253,
+ EMBER_ZCL_AMI_EVENT_STATUS_LOAD_CONTROL_EVENT_COMMAND_REJECTED = 254,
+} EmberAfAmiEventStatus;
+
+// Enum for AmiGetProfileStatus
+typedef enum
+{
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_SUCCESS = 0,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_UNDEFINED_INTERVAL_CHANNEL_REQUESTED = 1,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_INTERVAL_CHANNEL_NOT_SUPPORTED = 2,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_INVALID_END_TIME = 3,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_MORE_PERIODS_REQUESTED_THAN_CAN_BE_RETURNED = 4,
+ EMBER_ZCL_AMI_GET_PROFILE_STATUS_NO_INTERVALS_AVAILABLE_FOR_THE_REQUESTED_TIME = 5,
+} EmberAfAmiGetProfileStatus;
+
+// Enum for AmiIntervalChannel
+typedef enum
+{
+ EMBER_ZCL_AMI_INTERVAL_CHANNEL_CONSUMPTION_DELIVERED = 0,
+ EMBER_ZCL_AMI_INTERVAL_CHANNEL_CONSUMPTION_RECEIVED = 1,
+} EmberAfAmiIntervalChannel;
+
+// Enum for AmiIntervalPeriod
+typedef enum
+{
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_DAILY = 0,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES60 = 1,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES30 = 2,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES15 = 3,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES10 = 4,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES7P5 = 5,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES5 = 6,
+ EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES2P5 = 7,
+} EmberAfAmiIntervalPeriod;
+
+// Enum for AmiKeyEstablishmentStatus
+typedef enum
+{
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_SUCCESS = 0,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_UNKNOWN_ISSUER = 1,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_BAD_KEY_CONFIRM = 2,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_BAD_MESSAGE = 3,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_NO_RESOURCES = 4,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_UNSUPPORTED_SUITE = 5,
+ EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_INVALID_KEY_USAGE = 6,
+} EmberAfAmiKeyEstablishmentStatus;
+
+// Enum for AmiRegistrationState
+typedef enum
+{
+ EMBER_ZCL_AMI_REGISTRATION_STATE_UNREGISTERED = 0,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_JOINING_NETWORK = 1,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_JOINED_NETWORK = 2,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_SUBMITTED_REGISTRATION_REQUEST = 3,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_REGISTRATION_REJECTED = 4,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_REGISTERED = 5,
+ EMBER_ZCL_AMI_REGISTRATION_STATE_REGISTERATION_NOT_POSSIBLE = 6,
+} EmberAfAmiRegistrationState;
+
+// Enum for AmiUnitOfMeasure
+typedef enum
+{
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KILO_WATT_HOURS = 0,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_METER_PER_HOUR = 1,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_FEET_PER_HOUR = 2,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CENTUM_CUBIC_FEET_PER_HOUR = 3,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_US_GALLONS_PER_HOUR = 4,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_IMPERIAL_GALLONS_PER_HOUR = 5,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_BT_US_OR_BTU_PER_HOUR = 6,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_LITERS_OR_LITERS_PER_HOUR = 7,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_GAUGE = 8,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_ABSOLUTE = 9,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_MCF_OR_MCF_PER_SECOND = 10,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_UNITLESS = 11,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_MJ_OR_MJ_PER_SECOND = 12,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_K_VAR_OR_K_VAR_HOURS = 13,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KILO_WATT_HOURS_BCD = 128,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_METER_PER_HOUR_BCD = 129,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_FEET_PER_HOUR_BCD = 130,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_CENTUM_CUBIC_FEET_PER_HOUR_BCD = 131,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_US_GALLONS_PER_HOUR_BCD = 132,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_IMPERIAL_GALLONS_PER_HOUR_BCD = 133,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_BT_US_OR_BTU_PER_HOUR_BCD = 134,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_LITERS_OR_LITERS_PER_HOUR_BCD = 135,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_GUAGE_BCD = 136,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_ABSOLUTE_BCD = 137,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_MCF_OR_MCF_PER_SECOND_BCD = 138,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_UNITLESS_BCD = 139,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_MJ_OR_MJ_PER_SECOND_BCD = 140,
+ EMBER_ZCL_AMI_UNIT_OF_MEASURE_K_VAR_OR_K_VAR_HOURS_BCD = 141,
+} EmberAfAmiUnitOfMeasure;
+
+// Enum for AnonymousDataState
+typedef enum
+{
+ EMBER_ZCL_ANONYMOUS_DATA_STATE_NO_SOURCE_FOUND = 0,
+ EMBER_ZCL_ANONYMOUS_DATA_STATE_SOURCE_FOUND = 1,
+} EmberAfAnonymousDataState;
+
+// Enum for ApplianceStatus
+typedef enum
+{
+ EMBER_ZCL_APPLIANCE_STATUS_OFF = 1,
+ EMBER_ZCL_APPLIANCE_STATUS_STAND_BY = 2,
+ EMBER_ZCL_APPLIANCE_STATUS_PROGRAMMED = 3,
+ EMBER_ZCL_APPLIANCE_STATUS_PROGRAMMED_WAITING_TO_START = 4,
+ EMBER_ZCL_APPLIANCE_STATUS_RUNNING = 5,
+ EMBER_ZCL_APPLIANCE_STATUS_PAUSE = 6,
+ EMBER_ZCL_APPLIANCE_STATUS_END_PROGRAMMED = 7,
+ EMBER_ZCL_APPLIANCE_STATUS_FAILURE = 8,
+ EMBER_ZCL_APPLIANCE_STATUS_PROGRAMME_INTERRUPTED = 9,
+ EMBER_ZCL_APPLIANCE_STATUS_IDLE = 10,
+ EMBER_ZCL_APPLIANCE_STATUS_RINSE_HOLD = 11,
+ EMBER_ZCL_APPLIANCE_STATUS_SERVICE = 12,
+ EMBER_ZCL_APPLIANCE_STATUS_SUPERFREEZING = 13,
+ EMBER_ZCL_APPLIANCE_STATUS_SUPERCOOLING = 14,
+ EMBER_ZCL_APPLIANCE_STATUS_SUPERHEATING = 15,
+} EmberAfApplianceStatus;
+
+// Enum for AttributeReportingStatus
+typedef enum
+{
+ EMBER_ZCL_ATTRIBUTE_REPORTING_STATUS_PENDING = 0,
+ EMBER_ZCL_ATTRIBUTE_REPORTING_STATUS_ATTRIBUTE_REPORTING_COMPLETE = 1,
+} EmberAfAttributeReportingStatus;
+
+// Enum for AttributeWritePermission
+typedef enum
+{
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_DENY_WRITE = 0,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_NORMAL = 1,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_OF_READ_ONLY = 2,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_UNSUPPORTED_ATTRIBUTE = 134,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_INVALID_VALUE = 135,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_READ_ONLY = 136,
+ EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_INVALID_DATA_TYPE = 141,
+} EmberAfAttributeWritePermission;
+
+// Enum for BarrierControlBarrierPosition
+typedef enum
+{
+ EMBER_ZCL_BARRIER_CONTROL_BARRIER_POSITION_CLOSED = 0,
+ EMBER_ZCL_BARRIER_CONTROL_BARRIER_POSITION_OPEN = 100,
+ EMBER_ZCL_BARRIER_CONTROL_BARRIER_POSITION_UNKNOWN = 255,
+} EmberAfBarrierControlBarrierPosition;
+
+// Enum for BarrierControlMovingState
+typedef enum
+{
+ EMBER_ZCL_BARRIER_CONTROL_MOVING_STATE_STOPPED = 0,
+ EMBER_ZCL_BARRIER_CONTROL_MOVING_STATE_CLOSING = 1,
+ EMBER_ZCL_BARRIER_CONTROL_MOVING_STATE_OPENING = 2,
+} EmberAfBarrierControlMovingState;
+
+// Enum for BatterySize
+typedef enum
+{
+ EMBER_ZCL_BATTERY_SIZE_NO_BATTERY = 0,
+ EMBER_ZCL_BATTERY_SIZE_BUILT_IN = 1,
+ EMBER_ZCL_BATTERY_SIZE_OTHER = 2,
+ EMBER_ZCL_BATTERY_SIZE_AA = 3,
+ EMBER_ZCL_BATTERY_SIZE_AAA = 4,
+ EMBER_ZCL_BATTERY_SIZE_C = 5,
+ EMBER_ZCL_BATTERY_SIZE_D = 6,
+ EMBER_ZCL_BATTERY_SIZE_UNKNOWN = 255,
+} EmberAfBatterySize;
+
+// Enum for BillingPeriodDurationUnits
+typedef enum
+{
+ EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_MINUTES = 0,
+ EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_DAYS = 4194304,
+ EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_WEEKS = 8388608,
+ EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_MONTHS = 12582912,
+} EmberAfBillingPeriodDurationUnits;
+
+// Enum for Block
+typedef enum
+{
+ EMBER_ZCL_BLOCK_NO_BLOCKS_IN_USE = 0,
+ EMBER_ZCL_BLOCK_BLOCK1 = 1,
+ EMBER_ZCL_BLOCK_BLOCK2 = 2,
+ EMBER_ZCL_BLOCK_BLOCK3 = 3,
+ EMBER_ZCL_BLOCK_BLOCK4 = 4,
+ EMBER_ZCL_BLOCK_BLOCK5 = 5,
+ EMBER_ZCL_BLOCK_BLOCK6 = 6,
+ EMBER_ZCL_BLOCK_BLOCK7 = 7,
+ EMBER_ZCL_BLOCK_BLOCK8 = 8,
+ EMBER_ZCL_BLOCK_BLOCK9 = 9,
+ EMBER_ZCL_BLOCK_BLOCK10 = 10,
+ EMBER_ZCL_BLOCK_BLOCK11 = 11,
+ EMBER_ZCL_BLOCK_BLOCK12 = 12,
+ EMBER_ZCL_BLOCK_BLOCK13 = 13,
+ EMBER_ZCL_BLOCK_BLOCK14 = 14,
+ EMBER_ZCL_BLOCK_BLOCK15 = 15,
+ EMBER_ZCL_BLOCK_BLOCK16 = 16,
+} EmberAfBlock;
+
+// Enum for BlockPeriodDurationTypeControl
+typedef enum
+{
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_CONTROL_START_OF_TIMEBASE = 0,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_CONTROL_END_OF_TIMEBASE = 16,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_CONTROL_NOT_SPECIFIED = 32,
+} EmberAfBlockPeriodDurationTypeControl;
+
+// Enum for BlockPeriodDurationTypeTimebase
+typedef enum
+{
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_MINUTES = 0,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_DAYS = 1,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_WEEKS = 2,
+ EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_MONTHS = 3,
+} EmberAfBlockPeriodDurationTypeTimebase;
+
+// Enum for CO2Unit
+typedef enum
+{
+ EMBER_ZCL_CO2_UNIT_KILOGRAM_PER_KILOWATT_HOUR = 1,
+ EMBER_ZCL_CO2_UNIT_KILOGRAM_PER_GALLON_OF_GASOLINE = 2,
+ EMBER_ZCL_CO2_UNIT_KILOGRAM_PER_THERM_OF_NATURAL_GAS = 3,
+} EmberAfCO2Unit;
+
+// Enum for CalendarTimeReference
+typedef enum
+{
+ EMBER_ZCL_CALENDAR_TIME_REFERENCE_UTC_TIME = 0,
+ EMBER_ZCL_CALENDAR_TIME_REFERENCE_STANDARD_TIME = 1,
+ EMBER_ZCL_CALENDAR_TIME_REFERENCE_LOCAL_TIME = 2,
+} EmberAfCalendarTimeReference;
+
+// Enum for CalendarType
+typedef enum
+{
+ EMBER_ZCL_CALENDAR_TYPE_DELIVERED_CALENDAR = 0,
+ EMBER_ZCL_CALENDAR_TYPE_RECEIVED_CALENDAR = 1,
+ EMBER_ZCL_CALENDAR_TYPE_DELIVERED_AND_RECEIVED_CALENDAR = 2,
+ EMBER_ZCL_CALENDAR_TYPE_FRIENDLY_CREDIT_CALENDAR = 3,
+ EMBER_ZCL_CALENDAR_TYPE_AUXILLIARY_LOAD_SWITCH_CALENDAR = 4,
+} EmberAfCalendarType;
+
+// Enum for CalorificValueUnit
+typedef enum
+{
+ EMBER_ZCL_CALORIFIC_VALUE_UNIT_MEGAJOULE_PER_CUBIC_METER = 1,
+ EMBER_ZCL_CALORIFIC_VALUE_UNIT_MEGAJOULE_PER_KILOGRAM = 2,
+} EmberAfCalorificValueUnit;
+
+// Enum for CecedSpecificationVersion
+typedef enum
+{
+ EMBER_ZCL_CECED_SPECIFICATION_VERSION_COMPLIANT_WITH_V10_NOT_CERTIFIED = 16,
+ EMBER_ZCL_CECED_SPECIFICATION_VERSION_COMPLIANT_WITH_V10_CERTIFIED = 26,
+} EmberAfCecedSpecificationVersion;
+
+// Enum for ColorControlOptions
+typedef enum
+{
+ EMBER_ZCL_COLOR_CONTROL_OPTIONS_EXECUTE_IF_OFF = 1,
+} EmberAfColorControlOptions;
+
+// Enum for ColorLoopAction
+typedef enum
+{
+ EMBER_ZCL_COLOR_LOOP_ACTION_DEACTIVATE = 0,
+ EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_COLOR_LOOP_START_ENHANCED_HUE = 1,
+ EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_ENHANCED_CURRENT_HUE = 2,
+} EmberAfColorLoopAction;
+
+// Enum for ColorLoopDirection
+typedef enum
+{
+ EMBER_ZCL_COLOR_LOOP_DIRECTION_DECREMENT_HUE = 0,
+ EMBER_ZCL_COLOR_LOOP_DIRECTION_INCREMENT_HUE = 1,
+} EmberAfColorLoopDirection;
+
+// Enum for ColorMode
+typedef enum
+{
+ EMBER_ZCL_COLOR_MODE_CURRENT_HUE_AND_CURRENT_SATURATION = 0,
+ EMBER_ZCL_COLOR_MODE_CURRENT_X_AND_CURRENT_Y = 1,
+ EMBER_ZCL_COLOR_MODE_COLOR_TEMPERATURE = 2,
+} EmberAfColorMode;
+
+// Enum for CommandIdentification
+typedef enum
+{
+ EMBER_ZCL_COMMAND_IDENTIFICATION_START = 1,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_STOP = 2,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_PAUSE = 3,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_START_SUPERFREEZING = 4,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_STOP_SUPERFREEZING = 5,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_START_SUPERCOOLING = 6,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_STOP_SUPERCOOLING = 7,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_DISABLE_GAS = 8,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_ENABLE_GAS = 9,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_ENABLE_ENERGY_CONTROL = 10,
+ EMBER_ZCL_COMMAND_IDENTIFICATION_DISABLE_ENERGY_CONTROL = 11,
+} EmberAfCommandIdentification;
+
+// Enum for CommissioningStartupControl
+typedef enum
+{
+ EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_NO_ACTION = 0,
+ EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_FORM_NETWORK = 1,
+ EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_REJOIN_NETWORK = 2,
+ EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_START_FROM_SCRATCH = 3,
+} EmberAfCommissioningStartupControl;
+
+// Enum for CommodityType
+typedef enum
+{
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING = 0,
+ EMBER_ZCL_COMMODITY_TYPE_GAS_METERING = 1,
+ EMBER_ZCL_COMMODITY_TYPE_WATER_METERING = 2,
+ EMBER_ZCL_COMMODITY_TYPE_THERMAL_METERING = 3,
+ EMBER_ZCL_COMMODITY_TYPE_PRESSURE_METERING = 4,
+ EMBER_ZCL_COMMODITY_TYPE_HEAT_METERING = 5,
+ EMBER_ZCL_COMMODITY_TYPE_COOLING_METERING = 6,
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_VEHICLE_CHARGING_METERING = 7,
+ EMBER_ZCL_COMMODITY_TYPE_PV_GENERATION_METERING = 8,
+ EMBER_ZCL_COMMODITY_TYPE_WIND_TURBINE_GENERATION_METERING = 9,
+ EMBER_ZCL_COMMODITY_TYPE_WATER_TURBINE_GENERATION_METERING = 10,
+ EMBER_ZCL_COMMODITY_TYPE_MICRO_GENERATION_METERING = 11,
+ EMBER_ZCL_COMMODITY_TYPE_SOLAR_HOT_WATER_GENERATION_METERING = 12,
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT1 = 13,
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT2 = 14,
+ EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15,
+} EmberAfCommodityType;
+
+// Enum for CppEventResponseCppAuth
+typedef enum
+{
+ EMBER_ZCL_CPP_EVENT_RESPONSE_CPP_AUTH_ACCEPTED = 1,
+ EMBER_ZCL_CPP_EVENT_RESPONSE_CPP_AUTH_REJECTED = 2,
+} EmberAfCppEventResponseCppAuth;
+
+// Enum for CppPriceTier
+typedef enum
+{
+ EMBER_ZCL_CPP_PRICE_TIER_CPP1 = 0,
+ EMBER_ZCL_CPP_PRICE_TIER_CPP2 = 1,
+} EmberAfCppPriceTier;
+
+// Enum for CreditAdjustmentType
+typedef enum
+{
+ EMBER_ZCL_CREDIT_ADJUSTMENT_TYPE_CREDIT_INCREMENTAL = 0,
+ EMBER_ZCL_CREDIT_ADJUSTMENT_TYPE_CREDIT_ABSOLUTE = 1,
+} EmberAfCreditAdjustmentType;
+
+// Enum for CreditPaymentStatus
+typedef enum
+{
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_PENDING = 0,
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_RECEIVED_PAID = 1,
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_OVERDUE = 2,
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_2_PAYMENTS_OVERDUE = 3,
+ EMBER_ZCL_CREDIT_PAYMENT_STATUS_3_PAYMENTS_OVERDUE = 4,
+} EmberAfCreditPaymentStatus;
+
+// Enum for DataQualityId
+typedef enum
+{
+ EMBER_ZCL_DATA_QUALITY_ID_ALL_DATA_CERTIFIED = 0,
+ EMBER_ZCL_DATA_QUALITY_ID_ONLY_INSTANTANEOUS_POWER_NOT_CERTIFIED = 1,
+ EMBER_ZCL_DATA_QUALITY_ID_ONLY_CUMULATED_CONSUMPTION_NOT_CERTIFIED = 2,
+ EMBER_ZCL_DATA_QUALITY_ID_NOT_CERTIFIED_DATA = 3,
+} EmberAfDataQualityId;
+
+// Enum for DebtAmountType
+typedef enum
+{
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE1_ABSOLUTE = 0,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE1_INCREMENTAL = 1,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE2_ABSOLUTE = 2,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE2_INCREMENTAL = 3,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE3_ABSOLUTE = 4,
+ EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE3_INCREMENTAL = 5,
+} EmberAfDebtAmountType;
+
+// Enum for DebtRecoveryFrequency
+typedef enum
+{
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_HOUR = 0,
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_DAY = 1,
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_WEEK = 2,
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_MONTH = 3,
+ EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_QUARTER = 4,
+} EmberAfDebtRecoveryFrequency;
+
+// Enum for DebtRecoveryMethod
+typedef enum
+{
+ EMBER_ZCL_DEBT_RECOVERY_METHOD_TIME_BASED = 0,
+ EMBER_ZCL_DEBT_RECOVERY_METHOD_PERCENTAGE_BASED = 1,
+ EMBER_ZCL_DEBT_RECOVERY_METHOD_CATCH_UP_BASED = 2,
+} EmberAfDebtRecoveryMethod;
+
+// Enum for DehumidifcationLockout
+typedef enum
+{
+ EMBER_ZCL_DEHUMIDIFCATION_LOCKOUT_NOT_ALLOWED = 0,
+ EMBER_ZCL_DEHUMIDIFCATION_LOCKOUT_ALLOWED = 1,
+} EmberAfDehumidifcationLockout;
+
+// Enum for DeviceInformationRecordSort
+typedef enum
+{
+ EMBER_ZCL_DEVICE_INFORMATION_RECORD_SORT_NOT_SORTED = 0,
+ EMBER_ZCL_DEVICE_INFORMATION_RECORD_SORT_TOP_OF_THE_LIST = 1,
+} EmberAfDeviceInformationRecordSort;
+
+// Enum for DeviceStatus2Structure
+typedef enum
+{
+ EMBER_ZCL_DEVICE_STATUS2_STRUCTURE_IRIS_SYMPTOM_CODE = 32,
+} EmberAfDeviceStatus2Structure;
+
+// Enum for DoorLockEventSource
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_KEYPAD = 0,
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_RF = 1,
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_MANUAL = 2,
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_RFID = 3,
+ EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_INDETERMINATE = 255,
+} EmberAfDoorLockEventSource;
+
+// Enum for DoorLockEventType
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_EVENT_TYPE_OPERATION = 0,
+ EMBER_ZCL_DOOR_LOCK_EVENT_TYPE_PROGRAMMING = 1,
+ EMBER_ZCL_DOOR_LOCK_EVENT_TYPE_ALARM = 2,
+} EmberAfDoorLockEventType;
+
+// Enum for DoorLockOperatingMode
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_NORMAL_MODE = 0,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_VACATION_MODE = 1,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_PRIVACY_MODE = 2,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_NO_RF_LOCK_OR_UNLOCK = 3,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_LOCAL_PROGRAMMING_MODE = 4,
+ EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_PASSAGE_MODE = 5,
+} EmberAfDoorLockOperatingMode;
+
+// Enum for DoorLockOperationEventCode
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNKNOWN_OR_MFG_SPECIFIC = 0,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_LOCK = 1,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK = 2,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_LOCK_INVALID_PIN_OR_ID = 3,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_LOCK_INVALID_SCHEDULE = 4,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK_INVALID_PIN_OR_ID = 5,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK_INVALID_SCHEDULE = 6,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_ONE_TOUCH_LOCK = 7,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_KEY_LOCK = 8,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_KEY_UNLOCK = 9,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_AUTO_LOCK = 10,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_SCHEDULE_LOCK = 11,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_SCHEDULE_UNLOCK = 12,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_MANUAL_LOCK = 13,
+ EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_MANUAL_UNLOCK = 14,
+} EmberAfDoorLockOperationEventCode;
+
+// Enum for DoorLockProgrammingEventCode
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_UNKNOWN_OR_MFG_SPECIFIC = 0,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_MASTER_CODE_CHANGED = 1,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_PIN_ADDED = 2,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_PIN_DELETED = 3,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_PIN_CHANGED = 4,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_ID_ADDED = 5,
+ EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_ID_DELETED = 6,
+} EmberAfDoorLockProgrammingEventCode;
+
+// Enum for DoorLockSecurityLevel
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_SECURITY_LEVEL_NETWORK_SECURITY = 0,
+ EMBER_ZCL_DOOR_LOCK_SECURITY_LEVEL_APS_SECURITY = 1,
+} EmberAfDoorLockSecurityLevel;
+
+// Enum for DoorLockSetPinOrIdStatus
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_SUCCESS = 0,
+ EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_GENERAL_FAILURE = 1,
+ EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_MEMORY_FULL = 2,
+ EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_DUPLICATE_CODE_ERROR = 3,
+} EmberAfDoorLockSetPinOrIdStatus;
+
+// Enum for DoorLockSoundVolume
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_SILENT = 0,
+ EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_LOW = 1,
+ EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_HIGH = 2,
+} EmberAfDoorLockSoundVolume;
+
+// Enum for DoorLockState
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_STATE_NOT_FULLY_LOCKED = 0,
+ EMBER_ZCL_DOOR_LOCK_STATE_LOCKED = 1,
+ EMBER_ZCL_DOOR_LOCK_STATE_UNLOCKED = 2,
+} EmberAfDoorLockState;
+
+// Enum for DoorLockType
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_TYPE_DEAD_BOLT = 0,
+ EMBER_ZCL_DOOR_LOCK_TYPE_MAGNETIC = 1,
+ EMBER_ZCL_DOOR_LOCK_TYPE_MORTISE = 2,
+ EMBER_ZCL_DOOR_LOCK_TYPE_RIM = 3,
+ EMBER_ZCL_DOOR_LOCK_TYPE_LATCH_BOLT = 4,
+ EMBER_ZCL_DOOR_LOCK_TYPE_CYLINDRICAL = 5,
+ EMBER_ZCL_DOOR_LOCK_TYPE_TUBULAR = 6,
+ EMBER_ZCL_DOOR_LOCK_TYPE_INTERCONNECTED = 7,
+ EMBER_ZCL_DOOR_LOCK_TYPE_DEAD_LATCH = 8,
+ EMBER_ZCL_DOOR_LOCK_TYPE_OTHER = 9,
+} EmberAfDoorLockType;
+
+// Enum for DoorLockUserStatus
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_USER_STATUS_AVAILABLE = 0,
+ EMBER_ZCL_DOOR_LOCK_USER_STATUS_OCCUPIED_ENABLED = 1,
+ EMBER_ZCL_DOOR_LOCK_USER_STATUS_OCCUPIED_DISABLED = 3,
+ EMBER_ZCL_DOOR_LOCK_USER_STATUS_NOT_SUPPORTED = 255,
+} EmberAfDoorLockUserStatus;
+
+// Enum for DoorLockUserType
+typedef enum
+{
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_UNRESTRICTED = 0,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_YEAR_DAY_SCHEDULE_USER = 1,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_WEEK_DAY_SCHEDULE_USER = 2,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_MASTER_USER = 3,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_NON_ACCESS_USER = 4,
+ EMBER_ZCL_DOOR_LOCK_USER_TYPE_NOT_SUPPORTED = 255,
+} EmberAfDoorLockUserType;
+
+// Enum for DoorState
+typedef enum
+{
+ EMBER_ZCL_DOOR_STATE_OPEN = 0,
+ EMBER_ZCL_DOOR_STATE_CLOSED = 1,
+ EMBER_ZCL_DOOR_STATE_ERROR_JAMMED = 2,
+ EMBER_ZCL_DOOR_STATE_ERROR_FORCED_OPEN = 3,
+ EMBER_ZCL_DOOR_STATE_ERROR_UNSPECIFIED = 4,
+} EmberAfDoorState;
+
+// Enum for ElectricityAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_LOW_VOLTAGE_L1 = 16,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_HIGH_VOLTAGE_L1 = 17,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_LOW_VOLTAGE_L2 = 18,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_HIGH_VOLTAGE_L2 = 19,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_LOW_VOLTAGE_L3 = 20,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_HIGH_VOLTAGE_L3 = 21,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_CURRENT_L1 = 22,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_CURRENT_L2 = 23,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_CURRENT_L3 = 24,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_LOW_L1 = 25,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_HIGH_L1 = 26,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_LOW_L2 = 27,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_HIGH_L2 = 28,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_LOW_L3 = 29,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_HIGH_L3 = 30,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_GROUND_FAULT = 31,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_ELECTRIC_TAMPER_DETECT = 32,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_INCORRECT_POLARITY = 33,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_CURRENT_NO_VOLTAGE = 34,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_UNDER_VOLTAGE = 35,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_VOLTAGE = 36,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_NORMAL_VOLTAGE = 37,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_PF_BELOW_THRESHOLD = 38,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_PF_ABOVE_THRESHOLD = 39,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_TERMINAL_COVER_REMOVED = 40,
+ EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_TERMINAL_COVER_CLOSED = 41,
+} EmberAfElectricityAlarmGroups;
+
+// Enum for EnhancedColorMode
+typedef enum
+{
+ EMBER_ZCL_ENHANCED_COLOR_MODE_CURRENT_HUE_AND_CURRENT_SATURATION = 0,
+ EMBER_ZCL_ENHANCED_COLOR_MODE_CURRENT_X_AND_CURRENT_Y = 1,
+ EMBER_ZCL_ENHANCED_COLOR_MODE_COLOR_TEMPERATURE = 2,
+ EMBER_ZCL_ENHANCED_COLOR_MODE_ENHANCED_CURRENT_HUE_AND_CURRENT_SATURATION = 3,
+} EmberAfEnhancedColorMode;
+
+// Enum for EventConfigurationControl
+typedef enum
+{
+ EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_LIST = 0,
+ EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_EVENT_GROUP = 1,
+ EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_LOG_TYPE = 2,
+ EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_CONFIGURATION_MATCH = 3,
+} EmberAfEventConfigurationControl;
+
+// Enum for EventConfigurationLogAction
+typedef enum
+{
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_DO_NOT_LOG = 0,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_TAMPER = 1,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_FAULT = 2,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_GENERAL_EVENT = 3,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_SECURITY_EVENT = 4,
+ EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_NETWORK_EVENT = 5,
+} EmberAfEventConfigurationLogAction;
+
+// Enum for EventControl
+typedef enum
+{
+ EMBER_ZCL_EVENT_CONTROL_RETRIEVE_MINIMAL_INFORMATION = 0,
+ EMBER_ZCL_EVENT_CONTROL_RETRIEVE_FULL_INFORMATION = 16,
+} EmberAfEventControl;
+
+// Enum for EventId
+typedef enum
+{
+ EMBER_ZCL_EVENT_ID_METER_COVER_REMOVED = 0,
+ EMBER_ZCL_EVENT_ID_METER_COVER_CLOSED = 1,
+ EMBER_ZCL_EVENT_ID_STRONG_MAGNETIC_FIELD = 2,
+ EMBER_ZCL_EVENT_ID_NO_STRONG_MAGNETIC_FIELD = 3,
+ EMBER_ZCL_EVENT_ID_BATTERY_FAILURE = 4,
+ EMBER_ZCL_EVENT_ID_LOW_BATTERY = 5,
+ EMBER_ZCL_EVENT_ID_PROGRAM_MEMORY_ERROR = 6,
+ EMBER_ZCL_EVENT_ID_RAM_ERROR = 7,
+ EMBER_ZCL_EVENT_ID_NV_MEMORY_ERROR = 8,
+ EMBER_ZCL_EVENT_ID_MEASUREMENT_SYSTEM_ERROR = 9,
+ EMBER_ZCL_EVENT_ID_WATCHDOG_ERROR = 10,
+ EMBER_ZCL_EVENT_ID_SUPPLY_DISCONNECT_FAILURE = 11,
+ EMBER_ZCL_EVENT_ID_SUPPLY_CONNECT_FAILURE = 12,
+ EMBER_ZCL_EVENT_ID_MEASURMENT_SOFTWARE_CHANGED = 13,
+ EMBER_ZCL_EVENT_ID_DST_ENABLED = 14,
+ EMBER_ZCL_EVENT_ID_DST_DISABLED = 15,
+ EMBER_ZCL_EVENT_ID_CLOCK_ADJ_BACKWARD = 16,
+ EMBER_ZCL_EVENT_ID_CLOCK_ADJ_FORWARD = 17,
+ EMBER_ZCL_EVENT_ID_CLOCK_INVALID = 18,
+ EMBER_ZCL_EVENT_ID_COMMS_ERROR_HAN = 19,
+ EMBER_ZCL_EVENT_ID_COMMS_OK_HAN = 20,
+ EMBER_ZCL_EVENT_ID_FRAUD_ATTEMPT = 21,
+ EMBER_ZCL_EVENT_ID_POWER_LOSS = 22,
+ EMBER_ZCL_EVENT_ID_INCORRECT_PROTOCOL = 23,
+ EMBER_ZCL_EVENT_ID_UNUSUAL_HAN_TRAFFIC = 24,
+ EMBER_ZCL_EVENT_ID_UNEXPECTED_CLOCK_CHANGE = 25,
+ EMBER_ZCL_EVENT_ID_COMMS_USING_UNAUTHENTICATED_COMPONENT = 26,
+ EMBER_ZCL_EVENT_ID_ERROR_REG_CLEAR = 27,
+ EMBER_ZCL_EVENT_ID_ALARM_REG_CLEAR = 28,
+ EMBER_ZCL_EVENT_ID_UNEXPECTED_HW_RESET = 29,
+ EMBER_ZCL_EVENT_ID_UNEXPECTED_PROGRAM_EXECUTION = 30,
+ EMBER_ZCL_EVENT_ID_EVENT_LOG_CLEARED = 31,
+ EMBER_ZCL_EVENT_ID_MANUAL_DISCONNECT = 32,
+ EMBER_ZCL_EVENT_ID_MANUAL_CONNECT = 33,
+ EMBER_ZCL_EVENT_ID_REMOTE_DISCONNECTION = 34,
+ EMBER_ZCL_EVENT_ID_LOCAL_DISCONNECTION = 35,
+ EMBER_ZCL_EVENT_ID_LIMIT_THRESHOLD_EXCEEDED = 36,
+ EMBER_ZCL_EVENT_ID_LIMIT_THRESHOLD_OK = 37,
+ EMBER_ZCL_EVENT_ID_LIMIT_THRESHOLD_CHANGED = 38,
+ EMBER_ZCL_EVENT_ID_MAXIMUM_DEMAND_EXCEEDED = 39,
+ EMBER_ZCL_EVENT_ID_PROFILE_CLEARED = 40,
+ EMBER_ZCL_EVENT_ID_FIRMWARE_READY_FOR_ACTIVATION = 41,
+ EMBER_ZCL_EVENT_ID_FIRMWARE_ACTIVATED = 42,
+ EMBER_ZCL_EVENT_ID_PATCH_FAILURE = 43,
+ EMBER_ZCL_EVENT_ID_TOU_TARIFF_ACTIVATION = 44,
+ EMBER_ZCL_EVENT_ID_8X8_TARIFFACTIVATED = 45,
+ EMBER_ZCL_EVENT_ID_SINGLE_TARIFF_RATE_ACTIVATED = 46,
+ EMBER_ZCL_EVENT_ID_ASYNCHRONOUS_BILLING_OCCURRED = 47,
+ EMBER_ZCL_EVENT_ID_SYNCHRONOUS_BILLING_OCCURRED = 48,
+ EMBER_ZCL_EVENT_ID_INCORRECT_POLARITY = 128,
+ EMBER_ZCL_EVENT_ID_CURRENT_NO_VOLTAGE = 129,
+ EMBER_ZCL_EVENT_ID_UNDER_VOLTAGE = 130,
+ EMBER_ZCL_EVENT_ID_OVER_VOLTAGE = 131,
+ EMBER_ZCL_EVENT_ID_NORMAL_VOLTAGE = 132,
+ EMBER_ZCL_EVENT_ID_PF_BELOW_THRESHOLD = 133,
+ EMBER_ZCL_EVENT_ID_PF_ABOVE_THRESHOLD = 134,
+ EMBER_ZCL_EVENT_ID_TERMINAL_COVER_REMOVED = 135,
+ EMBER_ZCL_EVENT_ID_TERMINAL_COVER_CLOSED = 136,
+ EMBER_ZCL_EVENT_ID_REVERSE_FLOW = 160,
+ EMBER_ZCL_EVENT_ID_TILT_TAMPER = 161,
+ EMBER_ZCL_EVENT_ID_BATTERY_COVER_REMOVED = 162,
+ EMBER_ZCL_EVENT_ID_BATTERY_COVER_CLOSED = 163,
+ EMBER_ZCL_EVENT_ID_EXCESS_FLOW = 164,
+ EMBER_ZCL_EVENT_ID_CREDIT_OK = 192,
+ EMBER_ZCL_EVENT_ID_LOW_CREDIT = 193,
+ EMBER_ZCL_EVENT_ID_EMERGENCY_CREDIT_IN_USE = 192,
+ EMBER_ZCL_EVENT_ID_EMERGENCY_CREDIT_EXHAUSTED = 193,
+ EMBER_ZCL_EVENT_ID_ZERO_CREDIT_EC_NOT_SELECTED = 194,
+ EMBER_ZCL_EVENT_ID_SUPPLY_ON = 195,
+ EMBER_ZCL_EVENT_ID_SUPPLY_OFF_AARMED = 196,
+ EMBER_ZCL_EVENT_ID_SUPPLY_OFF = 197,
+ EMBER_ZCL_EVENT_ID_DISCOUNT_APPLIED = 198,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_A = 224,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_B = 225,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_C = 226,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_D = 227,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_E = 228,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_F = 229,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_G = 230,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_H = 231,
+ EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_I = 232,
+} EmberAfEventId;
+
+// Enum for EventIdentification
+typedef enum
+{
+ EMBER_ZCL_EVENT_IDENTIFICATION_END_OF_CYCLE = 1,
+ EMBER_ZCL_EVENT_IDENTIFICATION_TEMPERATURE_REACHED = 4,
+ EMBER_ZCL_EVENT_IDENTIFICATION_END_OF_COOKING = 5,
+ EMBER_ZCL_EVENT_IDENTIFICATION_SWITCHING_OFF = 6,
+ EMBER_ZCL_EVENT_IDENTIFICATION_WRONG_DATA = 7,
+} EmberAfEventIdentification;
+
+// Enum for EventLogId
+typedef enum
+{
+ EMBER_ZCL_EVENT_LOG_ID_ALL_LOGS = 0,
+ EMBER_ZCL_EVENT_LOG_ID_TAMPER_LOG = 1,
+ EMBER_ZCL_EVENT_LOG_ID_FAULT_LOG = 2,
+ EMBER_ZCL_EVENT_LOG_ID_GENERAL_EVENT_LOG = 3,
+ EMBER_ZCL_EVENT_LOG_ID_SECURITY_EVENT_LOG = 4,
+ EMBER_ZCL_EVENT_LOG_ID_NETWORK_EVENT_LOG = 5,
+ EMBER_ZCL_EVENT_LOG_ID_GBCS_GENERAL_EVENT_LOG = 6,
+ EMBER_ZCL_EVENT_LOG_ID_GBCS_SECURITY_EVENT_LOG = 7,
+} EmberAfEventLogId;
+
+// Enum for EventLogPayloadControl
+typedef enum
+{
+ EMBER_ZCL_EVENT_LOG_PAYLOAD_CONTROL_EVENTS_DO_NOT_CROSS_FRAME_BOUNDARY = 0,
+ EMBER_ZCL_EVENT_LOG_PAYLOAD_CONTROL_EVENT_CROSSES_FRAME_BOUNDARY = 1,
+} EmberAfEventLogPayloadControl;
+
+// Enum for ExtendedGenericAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_MEASUREMENT_SYSTEM_ERROR = 112,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_WATCHDOG_ERROR = 113,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_SUPPLY_DISCONNECT_FAILURE = 114,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_SUPPLY_CONNECT_FAILURE = 115,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_MEASURMENT_SOFTWARE_CHANGED = 116,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_DST_ENABLED = 117,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_DST_DISABLED = 118,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_CLOCK_ADJ_BACKWARD = 119,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_CLOCK_ADJ_FORWARD = 120,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_CLOCK_INVALID = 121,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_COMMUNICATION_ERROR_HAN = 122,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_COMMUNICATION_OK_H_AN = 123,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_FRAUD_ATTEMPT = 124,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_POWER_LOSS = 125,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNUSUAL_HAN_TRAFFIC = 126,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNEXPECTED_CLOCK_CHANGE = 127,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_COMMS_USING_UNAUTHENTICATED_COMPONENT = 128,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_ERROR_REG_CLEAR = 129,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_ALARM_REG_CLEAR = 130,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNEXPECTED_HW_RESET = 131,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNEXPECTED_PROGRAM_EXECUTION = 132,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_EVENT_LOG_CLEARED = 133,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_LIMIT_THRESHOLD_EXCEEDED = 134,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_LIMIT_THRESHOLD_OK = 135,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_LIMIT_THRESHOLD_CHANGED = 136,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_MAXIMUM_DEMAND_EXCEEDED = 137,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_PROFILE_CLEARED = 138,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_SAMPLING_BUFFERCLEARED = 139,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_BATTERY_WARNING = 140,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_WRONG_SIGNATURE = 141,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_NO_SIGNATURE = 142,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNAUTHORISED_ACTIONFROM_HAN = 143,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_FAST_POLLING_START = 144,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_FAST_POLLING_END = 145,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_REPORTING_INTERVAL_CHANGED = 146,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_DISCONNECT_DUETO_LOAD_LIMIT = 147,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_SUPPLY_STATUS_REGISTER_CHANGED = 148,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_ALARM_STATUS_REGISTER_CHANGED = 149,
+ EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_EXTENDED_METER_ALARM_STATUS_REGISTER_CHANGED = 150,
+} EmberAfExtendedGenericAlarmGroups;
+
+// Enum for ExtendedNumberOfPriceTiers
+typedef enum
+{
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_REFER_TO_NUMBER_OF_PRICE_TIERS_FIELD = 0,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS16 = 1,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS17 = 2,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS18 = 3,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS19 = 4,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS20 = 5,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS21 = 6,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS22 = 7,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS23 = 8,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS24 = 9,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS25 = 10,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS26 = 11,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS27 = 12,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS28 = 13,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS29 = 14,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS30 = 15,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS31 = 16,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS32 = 17,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS33 = 18,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS34 = 19,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS35 = 20,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS36 = 21,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS37 = 22,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS38 = 23,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS39 = 24,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS40 = 25,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS41 = 26,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS42 = 27,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS43 = 28,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS44 = 29,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS45 = 30,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS46 = 31,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS47 = 32,
+ EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS48 = 33,
+} EmberAfExtendedNumberOfPriceTiers;
+
+// Enum for ExtendedPriceTier
+typedef enum
+{
+ EMBER_ZCL_EXTENDED_PRICE_TIER_REFER_TO_PRICE_TIER_FIELD = 0,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER16_PRICE_LABEL = 1,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER17_PRICE_LABEL = 2,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER18_PRICE_LABEL = 3,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER19_PRICE_LABEL = 4,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER20_PRICE_LABEL = 5,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER21_PRICE_LABEL = 6,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER22_PRICE_LABEL = 7,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER23_PRICE_LABEL = 8,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER24_PRICE_LABEL = 9,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER25_PRICE_LABEL = 10,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER26_PRICE_LABEL = 11,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER27_PRICE_LABEL = 12,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER28_PRICE_LABEL = 13,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER29_PRICE_LABEL = 14,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER30_PRICE_LABEL = 15,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER31_PRICE_LABEL = 16,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER32_PRICE_LABEL = 17,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER33_PRICE_LABEL = 18,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER34_PRICE_LABEL = 19,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER35_PRICE_LABEL = 20,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER36_PRICE_LABEL = 21,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER37_PRICE_LABEL = 22,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER38_PRICE_LABEL = 23,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER39_PRICE_LABEL = 24,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER40_PRICE_LABEL = 25,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER41_PRICE_LABEL = 26,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER42_PRICE_LABEL = 27,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER43_PRICE_LABEL = 28,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER44_PRICE_LABEL = 29,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER45_PRICE_LABEL = 30,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER46_PRICE_LABEL = 31,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER47_PRICE_LABEL = 32,
+ EMBER_ZCL_EXTENDED_PRICE_TIER_TIER48_PRICE_LABEL = 33,
+} EmberAfExtendedPriceTier;
+
+// Enum for ExtendedRegisterTier
+typedef enum
+{
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_REFER_TO_REGISTER_TIER_FIELD = 0,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER16_SUMMATION_DELIVERED_ATTRIBUTE = 1,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER17_SUMMATION_DELIVERED_ATTRIBUTE = 2,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER18_SUMMATION_DELIVERED_ATTRIBUTE = 3,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER19_SUMMATION_DELIVERED_ATTRIBUTE = 4,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER20_SUMMATION_DELIVERED_ATTRIBUTE = 5,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER21_SUMMATION_DELIVERED_ATTRIBUTE = 6,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER22_SUMMATION_DELIVERED_ATTRIBUTE = 7,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER23_SUMMATION_DELIVERED_ATTRIBUTE = 8,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER24_SUMMATION_DELIVERED_ATTRIBUTE = 9,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER25_SUMMATION_DELIVERED_ATTRIBUTE = 10,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER26_SUMMATION_DELIVERED_ATTRIBUTE = 11,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER27_SUMMATION_DELIVERED_ATTRIBUTE = 12,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER28_SUMMATION_DELIVERED_ATTRIBUTE = 13,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER29_SUMMATION_DELIVERED_ATTRIBUTE = 14,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER30_SUMMATION_DELIVERED_ATTRIBUTE = 15,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER31_SUMMATION_DELIVERED_ATTRIBUTE = 16,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER32_SUMMATION_DELIVERED_ATTRIBUTE = 17,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER33_SUMMATION_DELIVERED_ATTRIBUTE = 18,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER34_SUMMATION_DELIVERED_ATTRIBUTE = 19,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER35_SUMMATION_DELIVERED_ATTRIBUTE = 20,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER36_SUMMATION_DELIVERED_ATTRIBUTE = 21,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER37_SUMMATION_DELIVERED_ATTRIBUTE = 22,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER38_SUMMATION_DELIVERED_ATTRIBUTE = 23,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER39_SUMMATION_DELIVERED_ATTRIBUTE = 24,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER40_SUMMATION_DELIVERED_ATTRIBUTE = 25,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER41_SUMMATION_DELIVERED_ATTRIBUTE = 26,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER42_SUMMATION_DELIVERED_ATTRIBUTE = 27,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER43_SUMMATION_DELIVERED_ATTRIBUTE = 28,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER44_SUMMATION_DELIVERED_ATTRIBUTE = 29,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER45_SUMMATION_DELIVERED_ATTRIBUTE = 30,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER46_SUMMATION_DELIVERED_ATTRIBUTE = 31,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER47_SUMMATION_DELIVERED_ATTRIBUTE = 32,
+ EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER48_SUMMATION_DELIVERED_ATTRIBUTE = 33,
+} EmberAfExtendedRegisterTier;
+
+// Enum for EzModeCommissioningClusterType
+typedef enum
+{
+ EMBER_ZCL_EZ_MODE_COMMISSIONING_CLUSTER_TYPE_SERVER = 0,
+ EMBER_ZCL_EZ_MODE_COMMISSIONING_CLUSTER_TYPE_CLIENT = 1,
+} EmberAfEzModeCommissioningClusterType;
+
+// Enum for FanMode
+typedef enum
+{
+ EMBER_ZCL_FAN_MODE_OFF = 0,
+ EMBER_ZCL_FAN_MODE_LOW = 1,
+ EMBER_ZCL_FAN_MODE_MEDIUM = 2,
+ EMBER_ZCL_FAN_MODE_HIGH = 3,
+ EMBER_ZCL_FAN_MODE_ON = 4,
+ EMBER_ZCL_FAN_MODE_AUTO = 5,
+ EMBER_ZCL_FAN_MODE_SMART = 6,
+} EmberAfFanMode;
+
+// Enum for FanModeSequence
+typedef enum
+{
+ EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_MED_HIGH = 0,
+ EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_HIGH = 1,
+ EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_MED_HIGH_AUTO = 2,
+ EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_HIGH_AUTO = 3,
+ EMBER_ZCL_FAN_MODE_SEQUENCE_ON_AUTO = 4,
+} EmberAfFanModeSequence;
+
+// Enum for GasSpecificAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_TILT_TAMPER = 96,
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_BATTERY_COVER_REMOVED = 97,
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_BATTERY_COVER_CLOSED = 98,
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_EXCESS_FLOW = 99,
+ EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_TILT_TAMPER_ENDED = 100,
+} EmberAfGasSpecificAlarmGroups;
+
+// Enum for GenerationTier
+typedef enum
+{
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER1_SUMMATION_RECEIVED_ATTRIBUTE = 1,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER2_SUMMATION_RECEIVED_ATTRIBUTE = 2,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER3_SUMMATION_RECEIVED_ATTRIBUTE = 3,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER4_SUMMATION_RECEIVED_ATTRIBUTE = 4,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER5_SUMMATION_RECEIVED_ATTRIBUTE = 5,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER6_SUMMATION_RECEIVED_ATTRIBUTE = 6,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER7_SUMMATION_RECEIVED_ATTRIBUTE = 7,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER8_SUMMATION_RECEIVED_ATTRIBUTE = 8,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER9_SUMMATION_RECEIVED_ATTRIBUTE = 9,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER10_SUMMATION_RECEIVED_ATTRIBUTE = 10,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER11_SUMMATION_RECEIVED_ATTRIBUTE = 11,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER12_SUMMATION_RECEIVED_ATTRIBUTE = 12,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER13_SUMMATION_RECEIVED_ATTRIBUTE = 13,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER14_SUMMATION_RECEIVED_ATTRIBUTE = 14,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER15_SUMMATION_RECEIVED_ATTRIBUTE = 15,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER16_SUMMATION_RECEIVED_ATTRIBUTE = 16,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER17_SUMMATION_RECEIVED_ATTRIBUTE = 17,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER18_SUMMATION_RECEIVED_ATTRIBUTE = 18,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER19_SUMMATION_RECEIVED_ATTRIBUTE = 19,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER20_SUMMATION_RECEIVED_ATTRIBUTE = 20,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER21_SUMMATION_RECEIVED_ATTRIBUTE = 21,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER22_SUMMATION_RECEIVED_ATTRIBUTE = 22,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER23_SUMMATION_RECEIVED_ATTRIBUTE = 23,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER24_SUMMATION_RECEIVED_ATTRIBUTE = 24,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER25_SUMMATION_RECEIVED_ATTRIBUTE = 25,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER26_SUMMATION_RECEIVED_ATTRIBUTE = 26,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER27_SUMMATION_RECEIVED_ATTRIBUTE = 27,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER28_SUMMATION_RECEIVED_ATTRIBUTE = 28,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER29_SUMMATION_RECEIVED_ATTRIBUTE = 29,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER30_SUMMATION_RECEIVED_ATTRIBUTE = 30,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER31_SUMMATION_RECEIVED_ATTRIBUTE = 31,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER32_SUMMATION_RECEIVED_ATTRIBUTE = 32,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER33_SUMMATION_RECEIVED_ATTRIBUTE = 33,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER34_SUMMATION_RECEIVED_ATTRIBUTE = 34,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER35_SUMMATION_RECEIVED_ATTRIBUTE = 35,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER36_SUMMATION_RECEIVED_ATTRIBUTE = 36,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER37_SUMMATION_RECEIVED_ATTRIBUTE = 37,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER38_SUMMATION_RECEIVED_ATTRIBUTE = 38,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER39_SUMMATION_RECEIVED_ATTRIBUTE = 39,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER40_SUMMATION_RECEIVED_ATTRIBUTE = 40,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER41_SUMMATION_RECEIVED_ATTRIBUTE = 41,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER42_SUMMATION_RECEIVED_ATTRIBUTE = 42,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER43_SUMMATION_RECEIVED_ATTRIBUTE = 43,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER44_SUMMATION_RECEIVED_ATTRIBUTE = 44,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER45_SUMMATION_RECEIVED_ATTRIBUTE = 45,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER46_SUMMATION_RECEIVED_ATTRIBUTE = 46,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER47_SUMMATION_RECEIVED_ATTRIBUTE = 47,
+ EMBER_ZCL_GENERATION_TIER_CURRENT_TIER48_SUMMATION_RECEIVED_ATTRIBUTE = 48,
+} EmberAfGenerationTier;
+
+// Enum for GenericAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_CHECK_METER = 0,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_LOW_BATTERY = 1,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_TAMPER_DETECT = 2,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_LEAK_DETECT = 5,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_SERVICE_DISCONNECT = 6,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_METER_COVER_REMOVED = 8,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_METER_COVER_CLOSED = 9,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_STRONG_MAGNETIC_FIELD = 10,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_NO_STRONG_MAGNETIC_FIELD = 11,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_BATTERY_FAILURE = 12,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_PROGRAM_MEMORY_ERROR = 13,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_RAM_ERROR = 14,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_NV_MEMORY_ERROR = 15,
+} EmberAfGenericAlarmGroups;
+
+// Enum for GenericAlarmGroupsElectricity
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_ELECTRICITY_POWER_FAILURE = 3,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_ELECTRICITY_POWER_QUALITY = 4,
+} EmberAfGenericAlarmGroupsElectricity;
+
+// Enum for GenericAlarmGroupsGas
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_GAS_LOW_PRESSURE = 4,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_GAS_REVERSE_FLOW = 7,
+} EmberAfGenericAlarmGroupsGas;
+
+// Enum for GenericAlarmGroupsHeatCooling
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_HEAT_COOLING_TEMPERATURE_SENSOR = 3,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_HEAT_COOLING_BURST_DETECT = 4,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_HEAT_COOLING_FLOW_SENSOR = 7,
+} EmberAfGenericAlarmGroupsHeatCooling;
+
+// Enum for GenericAlarmGroupsWater
+typedef enum
+{
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_WATER_WATER_PIPE_EMPTY = 3,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_WATER_WATER_LOW_PRESSURE = 4,
+ EMBER_ZCL_GENERIC_ALARM_GROUPS_WATER_WATER_REVERSE_FLOW = 7,
+} EmberAfGenericAlarmGroupsWater;
+
+// Enum for GenericDeviceClass
+typedef enum
+{
+ EMBER_ZCL_GENERIC_DEVICE_CLASS_LIGHTING = 0,
+} EmberAfGenericDeviceClass;
+
+// Enum for GenericDeviceType
+typedef enum
+{
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_INCANDESCENT = 0,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_SPOTLIGHT_HALOGEN = 1,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_HALOGEN_BULB = 2,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_CFL = 3,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_LINEAR_FLOURESCENT = 4,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_LED_BULB = 5,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_SPOTLIGHT_LED = 6,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_LED_STRIP = 7,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_LED_TUBE = 8,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_INDOOR_FIXTURE = 9,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_OUTDOOR_FIXTURE = 10,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_PENDANT_FIXTURE = 11,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_FLOOR_STANDING_FIXTURE = 12,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_CONTROLLER = 224,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_WALL_SWITCH = 225,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_PORTABLE_REMOTE_CONTROLLER = 226,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_MOTION_OR_LIGHT_SENSOR = 227,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_ACTUATOR = 240,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_PLUGIN_UNIT = 241,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_RETROFIT_ACTUATOR = 242,
+ EMBER_ZCL_GENERIC_DEVICE_TYPE_UNSPECIFIED = 255,
+} EmberAfGenericDeviceType;
+
+// Enum for GenericFlowPressureAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_BURST_DETECT = 48,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_PRESSURE_TOO_LOW = 49,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_PRESSURE_TOO_HIGH = 50,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_COMMUNICATION_ERROR = 51,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_MEASUREMENT_FAULT = 52,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_REVERSE_FLOW = 53,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_AIR_DETECT = 54,
+ EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_PIPE_EMPTY = 55,
+} EmberAfGenericFlowPressureAlarmGroups;
+
+// Enum for GpDeviceId
+typedef enum
+{
+ EMBER_ZCL_GP_DEVICE_ID_GP_SIMPLE_GENERIC_ONE_STATE_SWITCH = 0,
+ EMBER_ZCL_GP_DEVICE_ID_GP_SIMPLE_GENERIC_TWO_STATE_SWITCH = 0,
+ EMBER_ZCL_GP_DEVICE_ID_GP_ON_OFF_SWITCH = 8,
+ EMBER_ZCL_GP_DEVICE_ID_GP_LEVEL_CONTROL_SWITCH = 16,
+ EMBER_ZCL_GP_DEVICE_ID_GP_SIMPLE_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_ADVANCED_GENERIC_ONE_STATE_SWITCH = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_ADVANCED_GENERIC_TWO_STATE_SWITCH = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_COLOR_DIMMER_SWITCH = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_LIGHT_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_OCCPANCY_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_DOOR_LOCK_CONTROLLER = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_TEMPERATURE_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_PRESSURE_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_FLOW_SENSOR = 24,
+ EMBER_ZCL_GP_DEVICE_ID_GP_INDOOR_ENVIRONMENT_SNESOR = 24,
+} EmberAfGpDeviceId;
+
+// Enum for GpGpdf
+typedef enum
+{
+ EMBER_ZCL_GP_GPDF_IDENTIFY = 0,
+ EMBER_ZCL_GP_GPDF_MATCH_ONLY_ON_GPD_ADDRESS = 2,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE0 = 16,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE1 = 17,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE2 = 18,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE3 = 19,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE4 = 20,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE5 = 21,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE6 = 22,
+ EMBER_ZCL_GP_GPDF_RECALL_SCENE7 = 23,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE0 = 24,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE1 = 25,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE2 = 26,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE3 = 27,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE4 = 28,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE5 = 29,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE6 = 30,
+ EMBER_ZCL_GP_GPDF_STORE_SCENE7 = 31,
+ EMBER_ZCL_GP_GPDF_OFF = 32,
+ EMBER_ZCL_GP_GPDF_ON = 33,
+ EMBER_ZCL_GP_GPDF_TOGGLE = 34,
+ EMBER_ZCL_GP_GPDF_RELEASE = 35,
+ EMBER_ZCL_GP_GPDF_MOVE_UP = 48,
+ EMBER_ZCL_GP_GPDF_MOVE_DOWN = 49,
+ EMBER_ZCL_GP_GPDF_STEP_UP = 50,
+ EMBER_ZCL_GP_GPDF_STEP_DOWN = 51,
+ EMBER_ZCL_GP_GPDF_LEVEL_CONTROL_STOP = 52,
+ EMBER_ZCL_GP_GPDF_MOVE_UP_WITH_ON_OFF = 53,
+ EMBER_ZCL_GP_GPDF_MOVE_DOWN_WITH_ON_OFF = 54,
+ EMBER_ZCL_GP_GPDF_STEP_UP_WITH_ON_OFF = 55,
+ EMBER_ZCL_GP_GPDF_STEP_DOWN_WITH_ON_OFF = 56,
+ EMBER_ZCL_GP_GPDF_MOVE_HUE_STOP = 64,
+ EMBER_ZCL_GP_GPDF_MOVE_HUE_UP = 65,
+ EMBER_ZCL_GP_GPDF_MOVE_HUE_DOWN = 66,
+ EMBER_ZCL_GP_GPDF_STEP_HUE_UP = 67,
+ EMBER_ZCL_GP_GPDF_STEP_HUE_DOWN = 68,
+ EMBER_ZCL_GP_GPDF_MOVE_SATURATION_STOP = 69,
+ EMBER_ZCL_GP_GPDF_MOVE_SATURATION_UP = 70,
+ EMBER_ZCL_GP_GPDF_MOVE_SATURATION_DOWN = 71,
+ EMBER_ZCL_GP_GPDF_STEP_SATURATION_UP = 72,
+ EMBER_ZCL_GP_GPDF_STEP_SATURATION_DOWN = 73,
+ EMBER_ZCL_GP_GPDF_MOVE_COLOR = 74,
+ EMBER_ZCL_GP_GPDF_STEP_COLOR = 75,
+ EMBER_ZCL_GP_GPDF_LOCK_DOOR = 80,
+ EMBER_ZCL_GP_GPDF_UNLOCK_DOOR = 81,
+ EMBER_ZCL_GP_GPDF_PRESS1_OF1 = 96,
+ EMBER_ZCL_GP_GPDF_RELEASE1_OF1 = 97,
+ EMBER_ZCL_GP_GPDF_PRESS1_OF2 = 98,
+ EMBER_ZCL_GP_GPDF_RELEASE1_OF2 = 99,
+ EMBER_ZCL_GP_GPDF_PRESS2_OF2 = 100,
+ EMBER_ZCL_GP_GPDF_RELEASE2_OF2 = 101,
+ EMBER_ZCL_GP_GPDF_SHORT_PRESS1_OF1 = 102,
+ EMBER_ZCL_GP_GPDF_SHORT_PRESS1_OF2 = 103,
+ EMBER_ZCL_GP_GPDF_SHORT_PRESS2_OF2 = 104,
+ EMBER_ZCL_GP_GPDF_8BITS_VECTOR_PRESS = 105,
+ EMBER_ZCL_GP_GPDF_8BITS_VECTOR_RELEASE = 106,
+ EMBER_ZCL_GP_GPDF_ATTRIBUTE_REPORTING = 160,
+ EMBER_ZCL_GP_GPDF_MFR_SP_ATTR_RPTG = 161,
+ EMBER_ZCL_GP_GPDF_MULTI_CLUSTER_RPTG = 162,
+ EMBER_ZCL_GP_GPDF_MFR_SP_MULTI_CLUSTER_RPTG = 163,
+ EMBER_ZCL_GP_GPDF_REQUEST_ATTRIBUTE = 164,
+ EMBER_ZCL_GP_GPDF_READ_ATTR_RESPONSE = 165,
+ EMBER_ZCL_GP_GPDF_ZCL_TUNNELING_WITH_PAYLOAD = 166,
+ EMBER_ZCL_GP_GPDF_COMPACT_ATTRIBUTE_REPORTING = 168,
+ EMBER_ZCL_GP_GPDF_ANY_GPD_SENSOR_CMD = 175,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD0 = 176,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD1 = 177,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD2 = 178,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD3 = 179,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD4 = 180,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD5 = 181,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD6 = 182,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD7 = 183,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD8 = 184,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD9 = 185,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_A = 186,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_B = 187,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_C = 188,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_D = 189,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_E = 190,
+ EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_F = 191,
+ EMBER_ZCL_GP_GPDF_COMMISSIONING = 224,
+ EMBER_ZCL_GP_GPDF_DECOMMISSIONING = 225,
+ EMBER_ZCL_GP_GPDF_SUCCESS = 226,
+ EMBER_ZCL_GP_GPDF_CHANNEL_REQUEST = 227,
+ EMBER_ZCL_GP_GPDF_APPLICATION_DESCRIPTION = 228,
+ EMBER_ZCL_GP_GPDF_COMMISSIONING_REPLY = 240,
+ EMBER_ZCL_GP_GPDF_WRITE_ATTRIBUTES = 241,
+ EMBER_ZCL_GP_GPDF_READ_ATTRIBUTES = 242,
+ EMBER_ZCL_GP_GPDF_CHANNEL_CONFIGURATION = 243,
+ EMBER_ZCL_GP_GPDF_ZCL_TUNNELING = 246,
+} EmberAfGpGpdf;
+
+// Enum for GpPairingConfigurationAction
+typedef enum
+{
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_NO_ACTION = 0,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_EXTEND_SINK_TABLE_ENTRY = 1,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_REPLACE_SINK_TABLE_ENTRY = 2,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_REMOVE_A_PAIRING = 3,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_REMOVE_GPD = 4,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_APPLICATION_DESCRIPTION = 5,
+} EmberAfGpPairingConfigurationAction;
+
+// Enum for GpPairingConfigurationOptionCommunicationMode
+typedef enum
+{
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_UNICAST_FORWARDING = 0,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_D_GROUP_ID = 8,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_PRE_COMMISSIONED = 16,
+ EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_UNICAST_FORWARDING_LIGHTWEIGHT = 24,
+} EmberAfGpPairingConfigurationOptionCommunicationMode;
+
+// Enum for GpPairingOptionsCommunicationMode
+typedef enum
+{
+ EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_FULL_UNICAST_FORWARDING = 0,
+ EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_D_GROUP_ID = 1,
+ EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_PRE_COMM_UNIT = 16,
+ EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_UNICAST_FORWARDING_BY_PROX_SUPPORT = 17,
+} EmberAfGpPairingOptionsCommunicationMode;
+
+// Enum for GpProxyTableRequestOptionsRequestType
+typedef enum
+{
+ EMBER_ZCL_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_BY_GPD_ID = 0,
+ EMBER_ZCL_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_BY_INDEX = 1,
+} EmberAfGpProxyTableRequestOptionsRequestType;
+
+// Enum for GpProxyTableResponseStatus
+typedef enum
+{
+ EMBER_ZCL_GP_PROXY_TABLE_RESPONSE_STATUS_SUCCESS = 0,
+ EMBER_ZCL_GP_PROXY_TABLE_RESPONSE_STATUS_NOT_FOUND = 139,
+} EmberAfGpProxyTableResponseStatus;
+
+// Enum for GpSecurityKeyType
+typedef enum
+{
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_NONE = 0,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_ZIGBEE_NETWORK_KEY = 1,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_GPD_GROUP_KEY = 2,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_NETWORK_DERIVED_GROUP_KEY = 3,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_INDIVIDIGUAL_GPD_KEY = 4,
+ EMBER_ZCL_GP_SECURITY_KEY_TYPE_DERIVED_INDIVIDUAL_GPD_KEY = 7,
+} EmberAfGpSecurityKeyType;
+
+// Enum for GpSinkTableRequestOptions
+typedef enum
+{
+ EMBER_ZCL_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TABLE_ENTRIES_BY_GPD_ID = 0,
+ EMBER_ZCL_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TABLE_ENTRIES_BY_INDEX = 1,
+} EmberAfGpSinkTableRequestOptions;
+
+// Enum for GpSinkTableResponseStatus
+typedef enum
+{
+ EMBER_ZCL_GP_SINK_TABLE_RESPONSE_STATUS_SUCCESS = 0,
+ EMBER_ZCL_GP_SINK_TABLE_RESPONSE_STATUS_NOT_FOUND = 139,
+} EmberAfGpSinkTableResponseStatus;
+
+// Enum for GpTranslationTableResponseStatus
+typedef enum
+{
+ EMBER_ZCL_GP_TRANSLATION_TABLE_RESPONSE_STATUS_SUCCESS = 0,
+ EMBER_ZCL_GP_TRANSLATION_TABLE_RESPONSE_STATUS_NOT_FOUND = 139,
+} EmberAfGpTranslationTableResponseStatus;
+
+// Enum for GpTranslationTableUpdateAction
+typedef enum
+{
+ EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_ADD_TRANSLATION_TABLE_ENTRY = 0,
+ EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_REPLACE_TRANSLATION_TABLE_ENTRY = 8,
+ EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_REMOVE_TRANSLATION_TABLE_ENTRY = 16,
+ EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_RESERVED = 24,
+} EmberAfGpTranslationTableUpdateAction;
+
+// Enum for HeatAndCoolingSpecificAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_HEAT_AND_COOLING_SPECIFIC_ALARM_GROUPS_INLET_TEMPERATURE_SENSOR_FAULT = 80,
+ EMBER_ZCL_HEAT_AND_COOLING_SPECIFIC_ALARM_GROUPS_OUTLET_TEMPERATURE_SENSOR_FAULT = 81,
+} EmberAfHeatAndCoolingSpecificAlarmGroups;
+
+// Enum for HueDirection
+typedef enum
+{
+ EMBER_ZCL_HUE_DIRECTION_SHORTEST_DISTANCE = 0,
+ EMBER_ZCL_HUE_DIRECTION_LONGEST_DISTANCE = 1,
+ EMBER_ZCL_HUE_DIRECTION_UP = 2,
+ EMBER_ZCL_HUE_DIRECTION_DOWN = 3,
+} EmberAfHueDirection;
+
+// Enum for HueMoveMode
+typedef enum
+{
+ EMBER_ZCL_HUE_MOVE_MODE_STOP = 0,
+ EMBER_ZCL_HUE_MOVE_MODE_UP = 1,
+ EMBER_ZCL_HUE_MOVE_MODE_DOWN = 3,
+} EmberAfHueMoveMode;
+
+// Enum for HueStepMode
+typedef enum
+{
+ EMBER_ZCL_HUE_STEP_MODE_UP = 1,
+ EMBER_ZCL_HUE_STEP_MODE_DOWN = 3,
+} EmberAfHueStepMode;
+
+// Enum for IasAceAlarmStatus
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_NO_ALARM = 0,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_BURGLAR = 1,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_FIRE = 2,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_EMERGENCY = 3,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_POLICE_PANIC = 4,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_FIRE_PANIC = 5,
+ EMBER_ZCL_IAS_ACE_ALARM_STATUS_EMERGENCY_PANIC = 6,
+} EmberAfIasAceAlarmStatus;
+
+// Enum for IasAceArmMode
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_ARM_MODE_DISARM = 0,
+ EMBER_ZCL_IAS_ACE_ARM_MODE_ARM_DAY_HOME_ZONES_ONLY = 1,
+ EMBER_ZCL_IAS_ACE_ARM_MODE_ARM_NIGHT_SLEEP_ZONES_ONLY = 2,
+ EMBER_ZCL_IAS_ACE_ARM_MODE_ARM_ALL_ZONES = 3,
+} EmberAfIasAceArmMode;
+
+// Enum for IasAceArmNotification
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ALL_ZONES_DISARMED = 0,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ONLY_DAY_HOME_ZONES_ARMED = 1,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ONLY_NIGHT_SLEEP_ZONES_ARMED = 2,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ALL_ZONES_ARMED = 3,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_INVALID_ARM_DISARM_CODE = 4,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_NOT_READY_TO_ARM = 5,
+ EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ALREADY_DISARMED = 6,
+} EmberAfIasAceArmNotification;
+
+// Enum for IasAceAudibleNotification
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_AUDIBLE_NOTIFICATION_MUTE = 0,
+ EMBER_ZCL_IAS_ACE_AUDIBLE_NOTIFICATION_DEFAULT_SOUND = 1,
+} EmberAfIasAceAudibleNotification;
+
+// Enum for IasAceBypassResult
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_ZONE_BYPASSED = 0,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_ZONE_NOT_BYPASSED = 1,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_NOT_ALLOWED = 2,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_INVALID_ZONE_ID = 3,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_UNKNOWN_ZONE_ID = 4,
+ EMBER_ZCL_IAS_ACE_BYPASS_RESULT_INVALID_ARM_DISARM_CODE = 5,
+} EmberAfIasAceBypassResult;
+
+// Enum for IasAcePanelStatus
+typedef enum
+{
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_PANEL_DISARMED = 0,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMED_STAY = 1,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMED_NIGHT = 2,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMED_AWAY = 3,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_EXIT_DELAY = 4,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ENTRY_DELAY = 5,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_NOT_READY_TO_ARM = 6,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_IN_ALARM = 7,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMING_STAY = 8,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMING_NIGHT = 9,
+ EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMING_AWAY = 10,
+} EmberAfIasAcePanelStatus;
+
+// Enum for IasEnrollResponseCode
+typedef enum
+{
+ EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_SUCCESS = 0,
+ EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_NOT_SUPPORTED = 1,
+ EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_NO_ENROLL_PERMIT = 2,
+ EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_TOO_MANY_ZONES = 3,
+} EmberAfIasEnrollResponseCode;
+
+// Enum for IasZoneState
+typedef enum
+{
+ EMBER_ZCL_IAS_ZONE_STATE_NOT_ENROLLED = 0,
+ EMBER_ZCL_IAS_ZONE_STATE_ENROLLED = 1,
+} EmberAfIasZoneState;
+
+// Enum for IasZoneType
+typedef enum
+{
+ EMBER_ZCL_IAS_ZONE_TYPE_STANDARD_CIE = 0,
+ EMBER_ZCL_IAS_ZONE_TYPE_MOTION_SENSOR = 13,
+ EMBER_ZCL_IAS_ZONE_TYPE_CONTACT_SWITCH = 21,
+ EMBER_ZCL_IAS_ZONE_TYPE_FIRE_SENSOR = 40,
+ EMBER_ZCL_IAS_ZONE_TYPE_WATER_SENSOR = 42,
+ EMBER_ZCL_IAS_ZONE_TYPE_GAS_SENSOR = 43,
+ EMBER_ZCL_IAS_ZONE_TYPE_PERSONAL_EMERGENCY_DEVICE = 44,
+ EMBER_ZCL_IAS_ZONE_TYPE_VIBRATION_MOVEMENT_SENSOR = 45,
+ EMBER_ZCL_IAS_ZONE_TYPE_REMOTE_CONTROL = 271,
+ EMBER_ZCL_IAS_ZONE_TYPE_KEY_FOB = 277,
+ EMBER_ZCL_IAS_ZONE_TYPE_KEYPAD = 541,
+ EMBER_ZCL_IAS_ZONE_TYPE_STANDARD_WARNING_DEVICE = 549,
+ EMBER_ZCL_IAS_ZONE_TYPE_GLASS_BREAK_SENSOR = 550,
+ EMBER_ZCL_IAS_ZONE_TYPE_CARBON_MONOXIDE_SENSOR = 551,
+ EMBER_ZCL_IAS_ZONE_TYPE_SECURITY_REPEATER = 553,
+ EMBER_ZCL_IAS_ZONE_TYPE_INVALID_ZONE_TYPE = 65535,
+} EmberAfIasZoneType;
+
+// Enum for IdentifyEffectIdentifier
+typedef enum
+{
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BLINK = 0,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BREATHE = 1,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_OKAY = 2,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_CHANNEL_CHANGE = 11,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_FINISH_EFFECT = 254,
+ EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_STOP_EFFECT = 255,
+} EmberAfIdentifyEffectIdentifier;
+
+// Enum for IdentifyEffectVariant
+typedef enum
+{
+ EMBER_ZCL_IDENTIFY_EFFECT_VARIANT_DEFAULT = 0,
+} EmberAfIdentifyEffectVariant;
+
+// Enum for KeyIndex
+typedef enum
+{
+ EMBER_ZCL_KEY_INDEX_DEVELOPMENT = 0,
+ EMBER_ZCL_KEY_INDEX_MASTER = 4,
+ EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15,
+} EmberAfKeyIndex;
+
+// Enum for KeypadLockout
+typedef enum
+{
+ EMBER_ZCL_KEYPAD_LOCKOUT_NO_LOCKOUT = 0,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_ONE_LOCKOUT = 1,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_TWO_LOCKOUT = 2,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_THREE_LOCKOUT = 3,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_FOUR_LOCKOUT = 4,
+ EMBER_ZCL_KEYPAD_LOCKOUT_LEVELFIVE_LOCKOUT = 5,
+} EmberAfKeypadLockout;
+
+// Enum for LevelControlOptions
+typedef enum
+{
+ EMBER_ZCL_LEVEL_CONTROL_OPTIONS_EXECUTE_IF_OFF = 1,
+ EMBER_ZCL_LEVEL_CONTROL_OPTIONS_COUPLE_COLOR_TEMP_TO_LEVEL = 2,
+} EmberAfLevelControlOptions;
+
+// Enum for LevelStatus
+typedef enum
+{
+ EMBER_ZCL_LEVEL_STATUS_ON_TARGET = 0,
+ EMBER_ZCL_LEVEL_STATUS_BELOW_TARGET = 1,
+ EMBER_ZCL_LEVEL_STATUS_ABOVE_TARGET = 2,
+} EmberAfLevelStatus;
+
+// Enum for LocationMethod
+typedef enum
+{
+ EMBER_ZCL_LOCATION_METHOD_LATERATION = 0,
+ EMBER_ZCL_LOCATION_METHOD_SIGNPOSTING = 1,
+ EMBER_ZCL_LOCATION_METHOD_RF_FINGERPRINTING = 2,
+ EMBER_ZCL_LOCATION_METHOD_OUT_OF_BAND = 3,
+} EmberAfLocationMethod;
+
+// Enum for ManufacturerSpecificAlarmGroups
+typedef enum
+{
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_A = 176,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_B = 177,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_C = 178,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_D = 179,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_E = 180,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_F = 181,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_G = 182,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_H = 183,
+ EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_I = 184,
+} EmberAfManufacturerSpecificAlarmGroups;
+
+// Enum for MeasurementLightSensorType
+typedef enum
+{
+ EMBER_ZCL_MEASUREMENT_LIGHT_SENSOR_TYPE_PHOTODIODE = 0,
+ EMBER_ZCL_MEASUREMENT_LIGHT_SENSOR_TYPE_CMOS = 1,
+} EmberAfMeasurementLightSensorType;
+
+// Enum for MessagingControlConfirmation
+typedef enum
+{
+ EMBER_ZCL_MESSAGING_CONTROL_CONFIRMATION_NOT_REQUIRED = 0,
+ EMBER_ZCL_MESSAGING_CONTROL_CONFIRMATION_REQUIRED = 128,
+} EmberAfMessagingControlConfirmation;
+
+// Enum for MessagingControlEnhancedConfirmation
+typedef enum
+{
+ EMBER_ZCL_MESSAGING_CONTROL_ENHANCED_CONFIRMATION_NOT_REQUIRED = 0,
+ EMBER_ZCL_MESSAGING_CONTROL_ENHANCED_CONFIRMATION_REQUIRED = 32,
+} EmberAfMessagingControlEnhancedConfirmation;
+
+// Enum for MessagingControlImportance
+typedef enum
+{
+ EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_LOW = 0,
+ EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_MEDIUM = 4,
+ EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_HIGH = 8,
+ EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_CRITICAL = 12,
+} EmberAfMessagingControlImportance;
+
+// Enum for MessagingControlTransmission
+typedef enum
+{
+ EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_NORMAL = 0,
+ EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_NORMAL_AND_ANONYMOUS = 1,
+ EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_ANONYMOUS = 2,
+ EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_RESERVED = 3,
+} EmberAfMessagingControlTransmission;
+
+// Enum for MeterDeviceType
+typedef enum
+{
+ EMBER_ZCL_METER_DEVICE_TYPE_ELECTRIC_METER = 0,
+ EMBER_ZCL_METER_DEVICE_TYPE_GAS_METER = 1,
+ EMBER_ZCL_METER_DEVICE_TYPE_WATER_METER = 2,
+ EMBER_ZCL_METER_DEVICE_TYPE_THERMAL_METER = 3,
+ EMBER_ZCL_METER_DEVICE_TYPE_PRESSURE_METER = 4,
+ EMBER_ZCL_METER_DEVICE_TYPE_HEAT_METER = 5,
+ EMBER_ZCL_METER_DEVICE_TYPE_COOLING_METER = 6,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_GAS_METER = 128,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_WATER_METER = 129,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_THERMAL_METER = 130,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_PRESSURE_METER = 131,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_HEAT_METER = 132,
+ EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_COOLING_METER = 133,
+ EMBER_ZCL_METER_DEVICE_TYPE_UNDEFINED_MIRROR_METER = 254,
+} EmberAfMeterDeviceType;
+
+// Enum for MeterTypeId
+typedef enum
+{
+ EMBER_ZCL_METER_TYPE_ID_UTILITY_PRIMARY_METER = 0,
+ EMBER_ZCL_METER_TYPE_ID_UTILITY_PRODUCTION_METER = 1,
+ EMBER_ZCL_METER_TYPE_ID_UTILITY_SECONDARY_METER = 2,
+ EMBER_ZCL_METER_TYPE_ID_PRIVATE_PRIMARY_METER = 256,
+ EMBER_ZCL_METER_TYPE_ID_PRIVATE_PRODUCTION_METER = 257,
+ EMBER_ZCL_METER_TYPE_ID_PRIVATE_SECONDARY_METERS = 258,
+ EMBER_ZCL_METER_TYPE_ID_GENERIC_METER = 272,
+} EmberAfMeterTypeId;
+
+// Enum for MeteringAlarmCode
+typedef enum
+{
+ EMBER_ZCL_METERING_ALARM_CODE_CHECK_METER = 0,
+ EMBER_ZCL_METERING_ALARM_CODE_LOW_BATTERY = 1,
+ EMBER_ZCL_METERING_ALARM_CODE_TAMPER_DETECT = 2,
+ EMBER_ZCL_METERING_ALARM_CODE_POWER_FAILURE_PIPE_EMPTY_TEMPERATURE_SENSOR = 3,
+ EMBER_ZCL_METERING_ALARM_CODE_POWER_QUALITY_LOW_PRESSURE_BURST_DETECT = 4,
+ EMBER_ZCL_METERING_ALARM_CODE_LEAK_DETECT = 5,
+ EMBER_ZCL_METERING_ALARM_CODE_SERVICE_DISCONNECT = 6,
+ EMBER_ZCL_METERING_ALARM_CODE_REVERSE_FLOW_FLOW_SENSOR = 7,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_COVER_REMOVED = 8,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_COVER_CLOSED = 9,
+ EMBER_ZCL_METERING_ALARM_CODE_STRONG_MAGNETIC_FIELD = 10,
+ EMBER_ZCL_METERING_ALARM_CODE_NO_STRONG_MAGNETIC_FIELD = 11,
+ EMBER_ZCL_METERING_ALARM_CODE_BATTERY_FAILURE = 12,
+ EMBER_ZCL_METERING_ALARM_CODE_PROGRAM_MEMORY_ERROR = 13,
+ EMBER_ZCL_METERING_ALARM_CODE_RAM_ERROR = 14,
+ EMBER_ZCL_METERING_ALARM_CODE_NV_MEMORY_ERROR = 15,
+ EMBER_ZCL_METERING_ALARM_CODE_LOW_VOLTAGE_L1 = 16,
+ EMBER_ZCL_METERING_ALARM_CODE_HIGH_VOLTAGE_L1 = 17,
+ EMBER_ZCL_METERING_ALARM_CODE_LOW_VOLTAGE_L2 = 18,
+ EMBER_ZCL_METERING_ALARM_CODE_HIGH_VOLTAGE_L2 = 19,
+ EMBER_ZCL_METERING_ALARM_CODE_LOW_VOLTAGE_L3 = 20,
+ EMBER_ZCL_METERING_ALARM_CODE_HIGH_VOLTAGE_L3 = 21,
+ EMBER_ZCL_METERING_ALARM_CODE_OVER_CURRENT_L1 = 22,
+ EMBER_ZCL_METERING_ALARM_CODE_OVER_CURRENT_L2 = 23,
+ EMBER_ZCL_METERING_ALARM_CODE_OVER_CURRENT_L3 = 24,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_LOW_L1 = 25,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_HIGH_L1 = 26,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_LOW_L2 = 27,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_HIGH_L2 = 28,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_LOW_L3 = 29,
+ EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_HIGH_L3 = 30,
+ EMBER_ZCL_METERING_ALARM_CODE_GROUND_FAULT = 31,
+ EMBER_ZCL_METERING_ALARM_CODE_ELECTRIC_TAMPER_DETECT = 32,
+ EMBER_ZCL_METERING_ALARM_CODE_INCORRECT_POLARITY = 33,
+ EMBER_ZCL_METERING_ALARM_CODE_CURRENT_NO_VOLTAGE = 34,
+ EMBER_ZCL_METERING_ALARM_CODE_UNDER_VOLTAGE = 35,
+ EMBER_ZCL_METERING_ALARM_CODE_OVER_VOLTAGE = 36,
+ EMBER_ZCL_METERING_ALARM_CODE_NORMAL_VOLTAGE = 37,
+ EMBER_ZCL_METERING_ALARM_CODE_PF_BELOW_THRESHOLD = 38,
+ EMBER_ZCL_METERING_ALARM_CODE_PF_ABOVE_THRESHOLD = 39,
+ EMBER_ZCL_METERING_ALARM_CODE_TERMINAL_COVER_REMOVED = 40,
+ EMBER_ZCL_METERING_ALARM_CODE_TERMINAL_COVER_CLOSED = 41,
+ EMBER_ZCL_METERING_ALARM_CODE_BURST_DETECT = 48,
+ EMBER_ZCL_METERING_ALARM_CODE_PRESSURE_TOO_LOW = 49,
+ EMBER_ZCL_METERING_ALARM_CODE_PRESSURE_TOO_HIGH = 50,
+ EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_COMMUNICATION_ERROR = 51,
+ EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_MEASUREMENT_FAULT = 52,
+ EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_REVERSE_FLOW = 53,
+ EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_AIR_DETECT = 54,
+ EMBER_ZCL_METERING_ALARM_CODE_PIPE_EMPTY = 55,
+ EMBER_ZCL_METERING_ALARM_CODE_INLET_TEMPERATURE_SENSOR_FAULT = 80,
+ EMBER_ZCL_METERING_ALARM_CODE_OUTLET_TEMPERATURE_SENSOR_FAULT = 81,
+ EMBER_ZCL_METERING_ALARM_CODE_TILT_TAMPER = 96,
+ EMBER_ZCL_METERING_ALARM_CODE_BATTERY_COVER_REMOVED = 97,
+ EMBER_ZCL_METERING_ALARM_CODE_BATTERY_COVER_CLOSED = 98,
+ EMBER_ZCL_METERING_ALARM_CODE_EXCESS_FLOW = 99,
+ EMBER_ZCL_METERING_ALARM_CODE_TILT_TAMPER_ENDED = 100,
+ EMBER_ZCL_METERING_ALARM_CODE_MEASUREMENT_SYSTEM_ERROR = 112,
+ EMBER_ZCL_METERING_ALARM_CODE_WATCHDOG_ERROR = 113,
+ EMBER_ZCL_METERING_ALARM_CODE_SUPPLY_DISCONNECT_FAILURE = 114,
+ EMBER_ZCL_METERING_ALARM_CODE_SUPPLY_CONNECT_FAILURE = 115,
+ EMBER_ZCL_METERING_ALARM_CODE_MEASURMENT_SOFTWARE_CHANGED = 116,
+ EMBER_ZCL_METERING_ALARM_CODE_DST_ENABLED = 117,
+ EMBER_ZCL_METERING_ALARM_CODE_DST_DISABLED = 118,
+ EMBER_ZCL_METERING_ALARM_CODE_CLOCK_ADJ_BACKWARD = 119,
+ EMBER_ZCL_METERING_ALARM_CODE_CLOCK_ADJ_FORWARD = 120,
+ EMBER_ZCL_METERING_ALARM_CODE_CLOCK_INVALID = 121,
+ EMBER_ZCL_METERING_ALARM_CODE_COMMUNICATION_ERROR_HAN = 122,
+ EMBER_ZCL_METERING_ALARM_CODE_COMMUNICATION_OK_H_AN = 123,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_FRAUD_ATTEMPT = 124,
+ EMBER_ZCL_METERING_ALARM_CODE_POWER_LOSS = 125,
+ EMBER_ZCL_METERING_ALARM_CODE_UNUSUAL_HAN_TRAFFIC = 126,
+ EMBER_ZCL_METERING_ALARM_CODE_UNEXPECTED_CLOCK_CHANGE = 127,
+ EMBER_ZCL_METERING_ALARM_CODE_COMMS_USING_UNAUTHENTICATED_COMPONENT = 128,
+ EMBER_ZCL_METERING_ALARM_CODE_ERROR_REG_CLEAR = 129,
+ EMBER_ZCL_METERING_ALARM_CODE_ALARM_REG_CLEAR = 130,
+ EMBER_ZCL_METERING_ALARM_CODE_UNEXPECTED_HW_RESET = 131,
+ EMBER_ZCL_METERING_ALARM_CODE_UNEXPECTED_PROGRAM_EXECUTION = 132,
+ EMBER_ZCL_METERING_ALARM_CODE_EVENT_LOG_CLEARED = 133,
+ EMBER_ZCL_METERING_ALARM_CODE_LIMIT_THRESHOLD_EXCEEDED = 134,
+ EMBER_ZCL_METERING_ALARM_CODE_LIMIT_THRESHOLD_OK = 135,
+ EMBER_ZCL_METERING_ALARM_CODE_LIMIT_THRESHOLD_CHANGED = 136,
+ EMBER_ZCL_METERING_ALARM_CODE_MAXIMUM_DEMAND_EXCEEDED = 137,
+ EMBER_ZCL_METERING_ALARM_CODE_PROFILE_CLEARED = 138,
+ EMBER_ZCL_METERING_ALARM_CODE_SAMPLING_BUFFERCLEARED = 139,
+ EMBER_ZCL_METERING_ALARM_CODE_BATTERY_WARNING = 140,
+ EMBER_ZCL_METERING_ALARM_CODE_WRONG_SIGNATURE = 141,
+ EMBER_ZCL_METERING_ALARM_CODE_NO_SIGNATURE = 142,
+ EMBER_ZCL_METERING_ALARM_CODE_UNAUTHORISED_ACTIONFROM_HAN = 143,
+ EMBER_ZCL_METERING_ALARM_CODE_FAST_POLLING_START = 144,
+ EMBER_ZCL_METERING_ALARM_CODE_FAST_POLLING_END = 145,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_REPORTING_INTERVAL_CHANGED = 146,
+ EMBER_ZCL_METERING_ALARM_CODE_DISCONNECT_DUETO_LOAD_LIMIT = 147,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_SUPPLY_STATUS_REGISTER_CHANGED = 148,
+ EMBER_ZCL_METERING_ALARM_CODE_METER_ALARM_STATUS_REGISTER_CHANGED = 149,
+ EMBER_ZCL_METERING_ALARM_CODE_EXTENDED_METER_ALARM_STATUS_REGISTER_CHANGED = 150,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_A = 176,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_B = 177,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_C = 178,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_D = 179,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_E = 180,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_F = 181,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_G = 182,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_H = 183,
+ EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_I = 184,
+} EmberAfMeteringAlarmCode;
+
+// Enum for MeteringBlockEnumerations
+typedef enum
+{
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_NO_BLOCKS_IN_USE = 0,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK1 = 1,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK2 = 2,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK3 = 3,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK4 = 4,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK5 = 5,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK6 = 6,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK7 = 7,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK8 = 8,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK9 = 9,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK10 = 10,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK11 = 11,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK12 = 12,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK13 = 13,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK14 = 14,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK15 = 15,
+ EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK16 = 16,
+} EmberAfMeteringBlockEnumerations;
+
+// Enum for MeteringConsumptionStatus
+typedef enum
+{
+ EMBER_ZCL_METERING_CONSUMPTION_STATUS_LOW_ENERGY_USAGE = 0,
+ EMBER_ZCL_METERING_CONSUMPTION_STATUS_MEDIUM_ENERGY_USAGE = 1,
+ EMBER_ZCL_METERING_CONSUMPTION_STATUS_HIGH_ENERGY_USAGE = 2,
+} EmberAfMeteringConsumptionStatus;
+
+// Enum for MeteringDeviceType
+typedef enum
+{
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING = 0,
+ EMBER_ZCL_METERING_DEVICE_TYPE_GAS_METERING = 1,
+ EMBER_ZCL_METERING_DEVICE_TYPE_WATER_METERING = 2,
+ EMBER_ZCL_METERING_DEVICE_TYPE_THERMAL_METERING = 3,
+ EMBER_ZCL_METERING_DEVICE_TYPE_PRESSURE_METERING = 4,
+ EMBER_ZCL_METERING_DEVICE_TYPE_HEAT_METERING = 5,
+ EMBER_ZCL_METERING_DEVICE_TYPE_COOLING_METERING = 6,
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_VEHICLE_CHARGING_METERING = 7,
+ EMBER_ZCL_METERING_DEVICE_TYPE_PV_GENERATION_METERING = 8,
+ EMBER_ZCL_METERING_DEVICE_TYPE_WIND_TURBINE_GENERATION_METERING = 9,
+ EMBER_ZCL_METERING_DEVICE_TYPE_WATER_TURBINE_GENERATION_METERING = 10,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MICRO_GENERATION_METERING = 11,
+ EMBER_ZCL_METERING_DEVICE_TYPE_SOLAR_HOT_WATER_GENERATION_METERING = 12,
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING_ELEMENT1 = 13,
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING_ELEMENT2 = 14,
+ EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING_ELEMENT3 = 15,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING = 127,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_GAS_METERING = 128,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_WATER_METERING = 129,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_THERMAL_METERING = 130,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_PRESSURE_METERING = 131,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_HEAT_METERING = 132,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_COOLING_METERING = 133,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_VEHICLE_CHARGING_METERING = 134,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_PV_GENERATION_METERING = 135,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_WIND_TURBINE_GENERATION_METERING = 136,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_WATER_TURBINE_GENERATION_METERING = 137,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_MICRO_GENERATION_METERING = 138,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_SOLAR_HOT_WATER_GENERATION_METERING = 139,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING_ELEMENT1 = 140,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING_ELEMENT2 = 141,
+ EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING_ELEMENT3 = 142,
+ EMBER_ZCL_METERING_DEVICE_TYPE_UNDEFINED_MIRROR_METER = 254,
+} EmberAfMeteringDeviceType;
+
+// Enum for MeteringSupplyStatus
+typedef enum
+{
+ EMBER_ZCL_METERING_SUPPLY_STATUS_SUPPLY_OFF = 0,
+ EMBER_ZCL_METERING_SUPPLY_STATUS_SUPPLY_OFF_ARMED = 1,
+ EMBER_ZCL_METERING_SUPPLY_STATUS_SUPPLY_ON = 2,
+} EmberAfMeteringSupplyStatus;
+
+// Enum for MeteringTemperatureUnitOfMeasure
+typedef enum
+{
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_KELVIN = 0,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_CELSIUS = 1,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_FAHRENHEIT = 2,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_KELVIN_BCD = 128,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_CELSIUS_BCD = 129,
+ EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_FAHRENHEIT_BCD = 130,
+} EmberAfMeteringTemperatureUnitOfMeasure;
+
+// Enum for MoveMode
+typedef enum
+{
+ EMBER_ZCL_MOVE_MODE_UP = 0,
+ EMBER_ZCL_MOVE_MODE_DOWN = 1,
+} EmberAfMoveMode;
+
+// Enum for NotificationScheme
+typedef enum
+{
+ EMBER_ZCL_NOTIFICATION_SCHEME_NO_NOTIFICATION_SCHEME_DEFINED = 0,
+ EMBER_ZCL_NOTIFICATION_SCHEME_PREDEFINED_NOTIFICATION_SCHEME_A = 1,
+ EMBER_ZCL_NOTIFICATION_SCHEME_PREDEFINED_NOTIFICATION_SCHEME_B = 2,
+} EmberAfNotificationScheme;
+
+// Enum for OccupancySensorType
+typedef enum
+{
+ EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_PIR = 0,
+ EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_ULTRASONIC = 1,
+ EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_PIR_AND_ULTRASONIC = 2,
+ EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_PHYSICAL_CONTACT = 3,
+} EmberAfOccupancySensorType;
+
+// Enum for OnOffDelayedAllOffEffectVariant
+typedef enum
+{
+ EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS = 0,
+ EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_NO_FADE = 1,
+ EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_50_PERCENT_DIM_DOWN_IN_0P8_SECONDS_THEN_FADE_TO_OFF_IN_12_SECONDS = 2,
+} EmberAfOnOffDelayedAllOffEffectVariant;
+
+// Enum for OnOffDyingLightEffectVariant
+typedef enum
+{
+ EMBER_ZCL_ON_OFF_DYING_LIGHT_EFFECT_VARIANT_20_PERCENTER_DIM_UP_IN_0P5_SECONDS_THEN_FADE_TO_OFF_IN_1_SECOND = 0,
+} EmberAfOnOffDyingLightEffectVariant;
+
+// Enum for OnOffEffectIdentifier
+typedef enum
+{
+ EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF = 0,
+ EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DYING_LIGHT = 1,
+} EmberAfOnOffEffectIdentifier;
+
+// Enum for OperatingMode
+typedef enum
+{
+ EMBER_ZCL_OPERATING_MODE_NORMAL = 0,
+ EMBER_ZCL_OPERATING_MODE_CONFIGURE = 1,
+} EmberAfOperatingMode;
+
+// Enum for OriginatingDevice
+typedef enum
+{
+ EMBER_ZCL_ORIGINATING_DEVICE_ENERGY_SERVICE_INTERFACE = 0,
+ EMBER_ZCL_ORIGINATING_DEVICE_METER = 1,
+ EMBER_ZCL_ORIGINATING_DEVICE_IN_HOME_DISPLAY_DEVICE = 2,
+} EmberAfOriginatingDevice;
+
+// Enum for PasswordType
+typedef enum
+{
+ EMBER_ZCL_PASSWORD_TYPE_PASSWORD1_SERVICE_MENU_ACCESS = 1,
+ EMBER_ZCL_PASSWORD_TYPE_PASSWORD2_CONSUMER_MENU_ACCESS = 2,
+ EMBER_ZCL_PASSWORD_TYPE_PASSWORD3 = 3,
+ EMBER_ZCL_PASSWORD_TYPE_PASSWORD4 = 4,
+} EmberAfPasswordType;
+
+// Enum for PaymentDiscountDuration
+typedef enum
+{
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_CURRENT_BILLING_PERIOD = 0,
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_CURRENT_CONSOLIDATED_BILL = 1,
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_ONE_MONTH = 2,
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_ONE_QUARTER = 3,
+ EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_ONE_YEAR = 4,
+} EmberAfPaymentDiscountDuration;
+
+// Enum for PhysicalEnvironment
+typedef enum
+{
+ EMBER_ZCL_PHYSICAL_ENVIRONMENT_UNSPECIFIED = 0,
+ EMBER_ZCL_PHYSICAL_ENVIRONMENT_FIRST_PROFILE_SPECIFIED_VALUE = 1,
+ EMBER_ZCL_PHYSICAL_ENVIRONMENT_LAST_PROFILE_SPECIFIED_VALUE = 127,
+ EMBER_ZCL_PHYSICAL_ENVIRONMENT_UNKNOWN = 255,
+} EmberAfPhysicalEnvironment;
+
+// Enum for PowerProfileState
+typedef enum
+{
+ EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_WAITING_TO_START = 1,
+ EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_STARTED = 2,
+ EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_RUNNING = 3,
+ EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_ENDED = 4,
+ EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_WAITING_TO_START = 5,
+ EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_STARTED = 6,
+ EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_ENDED = 7,
+ EMBER_ZCL_POWER_PROFILE_STATE_PROFILE_READY_FOR_SCHEDULING = 8,
+ EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_SCHEDULED = 9,
+} EmberAfPowerProfileState;
+
+// Enum for PowerSource
+typedef enum
+{
+ EMBER_ZCL_POWER_SOURCE_UNKNOWN = 0,
+ EMBER_ZCL_POWER_SOURCE_SINGLE_PHASE_MAINS = 1,
+ EMBER_ZCL_POWER_SOURCE_THREE_PHASE_MAINS = 2,
+ EMBER_ZCL_POWER_SOURCE_BATTERY = 3,
+ EMBER_ZCL_POWER_SOURCE_DC_SOURCE = 4,
+ EMBER_ZCL_POWER_SOURCE_EMERGENCY_MAINS_CONSTANT_POWER = 5,
+ EMBER_ZCL_POWER_SOURCE_EMERGENCY_MAINS_TRANSFER_SWITCH = 6,
+ EMBER_ZCL_POWER_SOURCE_BATTERY_BACKUP = 128,
+} EmberAfPowerSource;
+
+// Enum for PrePayGenericAlarmGroup
+typedef enum
+{
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_LOW_CREDIT = 0,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_NO_CREDIT = 1,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_CREDIT_EXHAUSTED = 2,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_EMERGENCY_CREDIT_ENABLED = 3,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_EMERGENCY_CREDIT_EXHAUSTED = 4,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_IHD_LOW_CREDIT_WARNING = 5,
+ EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_EVENT_LOG_CLEARED = 6,
+} EmberAfPrePayGenericAlarmGroup;
+
+// Enum for PrepayEventAlarmGroup
+typedef enum
+{
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_PHYSICAL_ATTACK_ON_THE_PREPAY_METER = 32,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_ELECTRONIC_ATTACK_ON_THE_PREPAY_METER = 33,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_DISCOUNT_APPLIED = 34,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_CREDIT_ADJUSTMENT = 35,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_CREDIT_ADJUSTMENT_FAIL = 36,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_DEBT_ADJUSTMENT = 37,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_DEBT_ADJUSTMENT_FAIL = 38,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_CHANGE = 39,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_TOPUP_CODE_ERROR = 40,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_TOPUP_ALREADY_USED = 41,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_TOPUP_CODE_INVALID = 42,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_FRIENDLY_CREDIT_IN_USE = 43,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_FRIENDLY_CREDIT_PERIOD_END_WARNING = 44,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_FRIENDLY_CREDIT_PERIOD_END = 45,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_ERROR_REG_CLEAR = 48,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_ALARM_REG_CLEAR = 49,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_PREPAY_CLUSTER_NOT_FOUND = 50,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_CREDIT2_PREPAY = 65,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_PREPAY2_CREDIT = 66,
+ EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_DEFAULT = 67,
+} EmberAfPrepayEventAlarmGroup;
+
+// Enum for PrepaySnapshotPayloadType
+typedef enum
+{
+ EMBER_ZCL_PREPAY_SNAPSHOT_PAYLOAD_TYPE_DEBT_CREDIT_STATUS = 0,
+ EMBER_ZCL_PREPAY_SNAPSHOT_PAYLOAD_TYPE_NOT_USED = 255,
+} EmberAfPrepaySnapshotPayloadType;
+
+// Enum for PrepaySwitchAlarmGroup
+typedef enum
+{
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_SUPPLY_ON = 16,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_SUPPLY_ARM = 17,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_SUPPLY_OFF = 18,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_DISCONNECTION_FAILURE = 19,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_DISCONNECTED_DUE_TO_TAMPER_DETECTED = 20,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_DISCONNECTED_DUE_TO_CUT_OFF_VALUE = 21,
+ EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_REMOTE_DISCONNECTED = 22,
+} EmberAfPrepaySwitchAlarmGroup;
+
+// Enum for PriceControlAcknowledgement
+typedef enum
+{
+ EMBER_ZCL_PRICE_CONTROL_ACKNOWLEDGEMENT_NOT_REQUIRED = 0,
+ EMBER_ZCL_PRICE_CONTROL_ACKNOWLEDGEMENT_REQUIRED = 1,
+} EmberAfPriceControlAcknowledgement;
+
+// Enum for PriceTier
+typedef enum
+{
+ EMBER_ZCL_PRICE_TIER_NO_TIER_RELATED = 0,
+ EMBER_ZCL_PRICE_TIER_TIER1_PRICE_LABEL = 1,
+ EMBER_ZCL_PRICE_TIER_TIER2_PRICE_LABEL = 2,
+ EMBER_ZCL_PRICE_TIER_TIER3_PRICE_LABEL = 3,
+ EMBER_ZCL_PRICE_TIER_TIER4_PRICE_LABEL = 4,
+ EMBER_ZCL_PRICE_TIER_TIER5_PRICE_LABEL = 5,
+ EMBER_ZCL_PRICE_TIER_TIER6_PRICE_LABEL = 6,
+ EMBER_ZCL_PRICE_TIER_TIER7_PRICE_LABEL = 7,
+ EMBER_ZCL_PRICE_TIER_TIER8_PRICE_LABEL = 8,
+ EMBER_ZCL_PRICE_TIER_TIER9_PRICE_LABEL = 9,
+ EMBER_ZCL_PRICE_TIER_TIER10_PRICE_LABEL = 10,
+ EMBER_ZCL_PRICE_TIER_TIER11_PRICE_LABEL = 11,
+ EMBER_ZCL_PRICE_TIER_TIER12_PRICE_LABEL = 12,
+ EMBER_ZCL_PRICE_TIER_TIER13_PRICE_LABEL = 13,
+ EMBER_ZCL_PRICE_TIER_TIER14_PRICE_LABEL = 14,
+ EMBER_ZCL_PRICE_TIER_REFER_TO_EXTENDED_PRICE_TIER_FIELD = 15,
+ EMBER_ZCL_PRICE_TIER_TIER15_PRICE_LABEL = 15,
+} EmberAfPriceTier;
+
+// Enum for ProductCode
+typedef enum
+{
+ EMBER_ZCL_PRODUCT_CODE_MANUFACTURER_DEFINED = 0,
+ EMBER_ZCL_PRODUCT_CODE_ITERNATIONAL_ARTICLE_NUMBER = 1,
+ EMBER_ZCL_PRODUCT_CODE_GLOBAL_TRADE_ITEM_NUMBER = 2,
+ EMBER_ZCL_PRODUCT_CODE_UNIVERSAL_PRODUCT_CODE = 3,
+ EMBER_ZCL_PRODUCT_CODE_STOCK_KEEPING_UNIT = 4,
+} EmberAfProductCode;
+
+// Enum for ProductTypeId
+typedef enum
+{
+ EMBER_ZCL_PRODUCT_TYPE_ID_WHITE_GOODS = 0,
+ EMBER_ZCL_PRODUCT_TYPE_ID_DISHWASHER = 22017,
+ EMBER_ZCL_PRODUCT_TYPE_ID_TUMBLE_DRYER = 22018,
+ EMBER_ZCL_PRODUCT_TYPE_ID_WASHER_DRYER = 22019,
+ EMBER_ZCL_PRODUCT_TYPE_ID_WASHING_MACHINE = 22020,
+ EMBER_ZCL_PRODUCT_TYPE_ID_HOBS = 24067,
+ EMBER_ZCL_PRODUCT_TYPE_ID_INDUCTION_HOBS = 24073,
+ EMBER_ZCL_PRODUCT_TYPE_ID_OVEN = 24065,
+ EMBER_ZCL_PRODUCT_TYPE_ID_ELECTRICAL_OVEN = 24070,
+ EMBER_ZCL_PRODUCT_TYPE_ID_REFRIGERATOR_FREEZER = 26113,
+} EmberAfProductTypeId;
+
+// Enum for ProposedSupplyStatus
+typedef enum
+{
+ EMBER_ZCL_PROPOSED_SUPPLY_STATUS_RESERVED = 0,
+ EMBER_ZCL_PROPOSED_SUPPLY_STATUS_SUPPLY_OFF_ARMED = 1,
+ EMBER_ZCL_PROPOSED_SUPPLY_STATUS_SUPPLY_ON = 2,
+} EmberAfProposedSupplyStatus;
+
+// Enum for PublishCppEventCppAuth
+typedef enum
+{
+ EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_PENDING = 0,
+ EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_ACCEPTED = 1,
+ EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_REJECTED = 2,
+ EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_FORCED = 3,
+} EmberAfPublishCppEventCppAuth;
+
+// Enum for PumpControlMode
+typedef enum
+{
+ EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_SPEED = 0,
+ EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_PRESSURE = 1,
+ EMBER_ZCL_PUMP_CONTROL_MODE_PROPORTIONAL_PRESSURE = 2,
+ EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_FLOW = 3,
+ EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_TEMPERATURE = 5,
+ EMBER_ZCL_PUMP_CONTROL_MODE_AUTOMATIC = 7,
+} EmberAfPumpControlMode;
+
+// Enum for PumpOperationMode
+typedef enum
+{
+ EMBER_ZCL_PUMP_OPERATION_MODE_NORMAL = 0,
+ EMBER_ZCL_PUMP_OPERATION_MODE_MINIMUM = 1,
+ EMBER_ZCL_PUMP_OPERATION_MODE_MAXIMUM = 2,
+ EMBER_ZCL_PUMP_OPERATION_MODE_LOCAL = 3,
+} EmberAfPumpOperationMode;
+
+// Enum for PushHistoricalMeteringData
+typedef enum
+{
+ EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_DAY = 64,
+ EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_WEEK = 128,
+ EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_MONTH = 384,
+ EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_YEAR = 448,
+} EmberAfPushHistoricalMeteringData;
+
+// Enum for PushHistoricalPaymentData
+typedef enum
+{
+ EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_DAY = 512,
+ EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_WEEK = 1024,
+ EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_MONTH = 3072,
+ EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_YEAR = 3584,
+} EmberAfPushHistoricalPaymentData;
+
+// Enum for RegisterTier
+typedef enum
+{
+ EMBER_ZCL_REGISTER_TIER_NO_TIER_RELATED = 0,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER1_SUMMATION_DELIVERED_ATTRIBUTE = 1,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER2_SUMMATION_DELIVERED_ATTRIBUTE = 2,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER3_SUMMATION_DELIVERED_ATTRIBUTE = 3,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER4_SUMMATION_DELIVERED_ATTRIBUTE = 4,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER5_SUMMATION_DELIVERED_ATTRIBUTE = 5,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER6_SUMMATION_DELIVERED_ATTRIBUTE = 6,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER7_SUMMATION_DELIVERED_ATTRIBUTE = 7,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER8_SUMMATION_DELIVERED_ATTRIBUTE = 8,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER9_SUMMATION_DELIVERED_ATTRIBUTE = 9,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER10_SUMMATION_DELIVERED_ATTRIBUTE = 10,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER11_SUMMATION_DELIVERED_ATTRIBUTE = 11,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER12_SUMMATION_DELIVERED_ATTRIBUTE = 12,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER13_SUMMATION_DELIVERED_ATTRIBUTE = 13,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER14_SUMMATION_DELIVERED_ATTRIBUTE = 14,
+ EMBER_ZCL_REGISTER_TIER_REFER_TO_EXTENDED_REGISTER_TIER_FIELD = 15,
+ EMBER_ZCL_REGISTER_TIER_CURRENT_TIER15_SUMMATION_DELIVERED_ATTRIBUTE = 15,
+} EmberAfRegisterTier;
+
+// Enum for RelativeHumidityDisplay
+typedef enum
+{
+ EMBER_ZCL_RELATIVE_HUMIDITY_DISPLAY_NOT_DISPLAYED = 0,
+ EMBER_ZCL_RELATIVE_HUMIDITY_DISPLAY_DISPLAYED = 1,
+} EmberAfRelativeHumidityDisplay;
+
+// Enum for RelativeHumidityMode
+typedef enum
+{
+ EMBER_ZCL_RELATIVE_HUMIDITY_MODE_MEASURE_LOCALLY = 0,
+ EMBER_ZCL_RELATIVE_HUMIDITY_MODE_UPDATED_OVER_THE_NETWORK = 1,
+} EmberAfRelativeHumidityMode;
+
+// Enum for RemoteEnableFlags
+typedef enum
+{
+ EMBER_ZCL_REMOTE_ENABLE_FLAGS_DISABLED = 0,
+ EMBER_ZCL_REMOTE_ENABLE_FLAGS_TEMPORARILY_LOCKED_DISABLED = 7,
+ EMBER_ZCL_REMOTE_ENABLE_FLAGS_ENABLED_REMOTE_CONTROL = 15,
+ EMBER_ZCL_REMOTE_ENABLE_FLAGS_ENABLED_REMOTE_AND_ENERGY_CONTROL = 1,
+} EmberAfRemoteEnableFlags;
+
+// Enum for RepaymentDebtType
+typedef enum
+{
+ EMBER_ZCL_REPAYMENT_DEBT_TYPE_DEBT1 = 0,
+ EMBER_ZCL_REPAYMENT_DEBT_TYPE_DEBT2 = 1,
+ EMBER_ZCL_REPAYMENT_DEBT_TYPE_DEBT3 = 2,
+ EMBER_ZCL_REPAYMENT_DEBT_TYPE_ALL_DEBTS = 255,
+} EmberAfRepaymentDebtType;
+
+// Enum for ResultType
+typedef enum
+{
+ EMBER_ZCL_RESULT_TYPE_ACCEPTED = 0,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_INVALID_TOP_UP = 1,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_DUPLICATE_TOP_UP = 2,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_ERROR = 3,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_MAX_CREDIT_REACHED = 4,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_KEYPAD_LOCK = 5,
+ EMBER_ZCL_RESULT_TYPE_REJECTED_TOP_UP_VALUE_TOO_LARGE = 6,
+ EMBER_ZCL_RESULT_TYPE_ACCEPTED_SUPPLY_ENABLED = 16,
+ EMBER_ZCL_RESULT_TYPE_ACCEPTED_SUPPLY_DISABLED = 17,
+ EMBER_ZCL_RESULT_TYPE_ACCEPTED_SUPPLY_ARMED = 18,
+} EmberAfResultType;
+
+// Enum for SampleType
+typedef enum
+{
+ EMBER_ZCL_SAMPLE_TYPE_CONSUMPTION_DELIVERED = 0,
+} EmberAfSampleType;
+
+// Enum for SaturationMoveMode
+typedef enum
+{
+ EMBER_ZCL_SATURATION_MOVE_MODE_STOP = 0,
+ EMBER_ZCL_SATURATION_MOVE_MODE_UP = 1,
+ EMBER_ZCL_SATURATION_MOVE_MODE_DOWN = 3,
+} EmberAfSaturationMoveMode;
+
+// Enum for SaturationStepMode
+typedef enum
+{
+ EMBER_ZCL_SATURATION_STEP_MODE_UP = 1,
+ EMBER_ZCL_SATURATION_STEP_MODE_DOWN = 3,
+} EmberAfSaturationStepMode;
+
+// Enum for SensingLightSensorType
+typedef enum
+{
+ EMBER_ZCL_SENSING_LIGHT_SENSOR_TYPE_PHOTODIODE = 0,
+ EMBER_ZCL_SENSING_LIGHT_SENSOR_TYPE_CMOS = 1,
+} EmberAfSensingLightSensorType;
+
+// Enum for SetpointAdjustMode
+typedef enum
+{
+ EMBER_ZCL_SETPOINT_ADJUST_MODE_HEAT_SETPOINT = 0,
+ EMBER_ZCL_SETPOINT_ADJUST_MODE_COOL_SETPOINT = 1,
+ EMBER_ZCL_SETPOINT_ADJUST_MODE_HEAT_AND_COOL_SETPOINTS = 2,
+} EmberAfSetpointAdjustMode;
+
+// Enum for SignatureType
+typedef enum
+{
+ EMBER_ZCL_SIGNATURE_TYPE_RESERVED = 0,
+ EMBER_ZCL_SIGNATURE_TYPE_ECDSA = 1,
+} EmberAfSignatureType;
+
+// Enum for SnapshotConfirmation
+typedef enum
+{
+ EMBER_ZCL_SNAPSHOT_CONFIRMATION_ACCEPTED = 0,
+ EMBER_ZCL_SNAPSHOT_CONFIRMATION_SNAPSHOT_CAUSE_NOT_SUPPORTED = 1,
+} EmberAfSnapshotConfirmation;
+
+// Enum for SnapshotPayloadType
+typedef enum
+{
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_DELIVERED_REGISTERS = 0,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_RECEIVED_REGISTERS = 1,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_DELIVERED = 2,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_RECEIVED = 3,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_DELIVERED_REGISTERS_NO_BILLING = 4,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_RECEIVED_REGISTER_NO_BILLINGS = 5,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_DELIVERED_NO_BILLING = 6,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_RECEIVED_NO_BILLING = 7,
+ EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_DATA_UNAVAILABLE = 128,
+} EmberAfSnapshotPayloadType;
+
+// Enum for SnapshotScheduleConfirmation
+typedef enum
+{
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ACCEPTED = 0,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_TYPE_NOT_SUPPORTED = 1,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_CAUSE_NOT_SUPPORTED = 2,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_SCHEDULE_NOT_CURRENTLY_AVAILABLE = 3,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_SCHEDULES_NOT_SUPPORTED_BY_DEVICE = 4,
+ EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_INSUFFICIENT_SPACE_FOR_SNAPSHOT_SCHEDULE = 5,
+} EmberAfSnapshotScheduleConfirmation;
+
+// Enum for SquawkLevel
+typedef enum
+{
+ EMBER_ZCL_SQUAWK_LEVEL_LOW_LEVEL = 0,
+ EMBER_ZCL_SQUAWK_LEVEL_MEDIUM_LEVEL = 1,
+ EMBER_ZCL_SQUAWK_LEVEL_HIGH_LEVEL = 2,
+ EMBER_ZCL_SQUAWK_LEVEL_VERY_HIGH_LEVEL = 2,
+} EmberAfSquawkLevel;
+
+// Enum for SquawkMode
+typedef enum
+{
+ EMBER_ZCL_SQUAWK_MODE_SYSTEM_IS_ARMED = 0,
+ EMBER_ZCL_SQUAWK_MODE_SYSTEM_IS_DISARMED = 1,
+} EmberAfSquawkMode;
+
+// Enum for SquawkStobe
+typedef enum
+{
+ EMBER_ZCL_SQUAWK_STOBE_NO_STROBE = 0,
+ EMBER_ZCL_SQUAWK_STOBE_USE_STROBE = 1,
+} EmberAfSquawkStobe;
+
+// Enum for StartOfWeek
+typedef enum
+{
+ EMBER_ZCL_START_OF_WEEK_SUNDAY = 0,
+ EMBER_ZCL_START_OF_WEEK_MONDAY = 1,
+ EMBER_ZCL_START_OF_WEEK_TUESDAY = 2,
+ EMBER_ZCL_START_OF_WEEK_WEDNESDAY = 3,
+ EMBER_ZCL_START_OF_WEEK_THURSDAY = 4,
+ EMBER_ZCL_START_OF_WEEK_FRIDAY = 5,
+ EMBER_ZCL_START_OF_WEEK_SATURDAY = 6,
+} EmberAfStartOfWeek;
+
+// Enum for StartUpOnOffValue
+typedef enum
+{
+ EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_OFF = 0,
+ EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_ON = 1,
+ EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_TOGGLE = 2,
+ EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_PREVIOUS = 255,
+} EmberAfStartUpOnOffValue;
+
+// Enum for StepMode
+typedef enum
+{
+ EMBER_ZCL_STEP_MODE_UP = 0,
+ EMBER_ZCL_STEP_MODE_DOWN = 1,
+} EmberAfStepMode;
+
+// Enum for SupplyStatus
+typedef enum
+{
+ EMBER_ZCL_SUPPLY_STATUS_SUPPLY_OFF = 0,
+ EMBER_ZCL_SUPPLY_STATUS_SUPPLY_OFF_ARMED = 1,
+ EMBER_ZCL_SUPPLY_STATUS_SUPPLY_ON = 2,
+ EMBER_ZCL_SUPPLY_STATUS_SUPPLY_UNCHANGED = 3,
+} EmberAfSupplyStatus;
+
+// Enum for SwitchActions
+typedef enum
+{
+ EMBER_ZCL_SWITCH_ACTIONS_ON = 0,
+ EMBER_ZCL_SWITCH_ACTIONS_OFF = 1,
+ EMBER_ZCL_SWITCH_ACTIONS_TOGGLE = 2,
+} EmberAfSwitchActions;
+
+// Enum for SwitchType
+typedef enum
+{
+ EMBER_ZCL_SWITCH_TYPE_TOGGLE = 0,
+ EMBER_ZCL_SWITCH_TYPE_MOMENTARY = 1,
+ EMBER_ZCL_SWITCH_TYPE_MULTI_FUNCTION = 2,
+} EmberAfSwitchType;
+
+// Enum for TariffChargingScheme
+typedef enum
+{
+ EMBER_ZCL_TARIFF_CHARGING_SCHEME_TOU_TARIFF = 0,
+ EMBER_ZCL_TARIFF_CHARGING_SCHEME_BLOCK_TARIFF = 16,
+ EMBER_ZCL_TARIFF_CHARGING_SCHEME_BLOCK_TOU_TARIFF_WITH_COMMON_THRESHOLDS = 32,
+ EMBER_ZCL_TARIFF_CHARGING_SCHEME_BLOCK_TOU_TARIFF_WITH_INDIVIDUAL_THRESHOLDS_PER_TIER = 48,
+} EmberAfTariffChargingScheme;
+
+// Enum for TariffResolutionPeriod
+typedef enum
+{
+ EMBER_ZCL_TARIFF_RESOLUTION_PERIOD_NOT_DEFINED = 0,
+ EMBER_ZCL_TARIFF_RESOLUTION_PERIOD_BLOCK_PERIOD = 1,
+ EMBER_ZCL_TARIFF_RESOLUTION_PERIOD_ONE_DAY = 2,
+} EmberAfTariffResolutionPeriod;
+
+// Enum for TariffType
+typedef enum
+{
+ EMBER_ZCL_TARIFF_TYPE_DELIVERED_TARIFF = 0,
+ EMBER_ZCL_TARIFF_TYPE_RECEIVED_TARIFF = 1,
+ EMBER_ZCL_TARIFF_TYPE_DELIVERED_AND_RECEIVED_TARIFF = 2,
+} EmberAfTariffType;
+
+// Enum for TemperatureDisplayMode
+typedef enum
+{
+ EMBER_ZCL_TEMPERATURE_DISPLAY_MODE_CELSIUS = 0,
+ EMBER_ZCL_TEMPERATURE_DISPLAY_MODE_FAHRENHEIT = 1,
+} EmberAfTemperatureDisplayMode;
+
+// Enum for TemperatureSetpointHold
+typedef enum
+{
+ EMBER_ZCL_TEMPERATURE_SETPOINT_HOLD_SETPOINT_HOLD_OFF = 0,
+ EMBER_ZCL_TEMPERATURE_SETPOINT_HOLD_SETPOINT_HOLD_ON = 1,
+} EmberAfTemperatureSetpointHold;
+
+// Enum for ThermostatControlSequence
+typedef enum
+{
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_ONLY = 0,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_WITH_REHEAT = 1,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_HEATING_ONLY = 2,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_HEATING_WITH_REHEAT = 3,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_AND_HEATING = 4,
+ EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_AND_HEATING_WITH_REHEAT = 5,
+} EmberAfThermostatControlSequence;
+
+// Enum for ThermostatRunningMode
+typedef enum
+{
+ EMBER_ZCL_THERMOSTAT_RUNNING_MODE_OFF = 0,
+ EMBER_ZCL_THERMOSTAT_RUNNING_MODE_COOL = 3,
+ EMBER_ZCL_THERMOSTAT_RUNNING_MODE_HEAT = 4,
+} EmberAfThermostatRunningMode;
+
+// Enum for ThermostatSystemMode
+typedef enum
+{
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_OFF = 0,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_AUTO = 1,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_COOL = 3,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_HEAT = 4,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_EMERGENCY_HEATING = 5,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_PRECOOLING = 6,
+ EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_FAN_ONLY = 7,
+} EmberAfThermostatSystemMode;
+
+// Enum for TierBlockMode
+typedef enum
+{
+ EMBER_ZCL_TIER_BLOCK_MODE_ACTIVE_BLOCK = 0,
+ EMBER_ZCL_TIER_BLOCK_MODE_ACTIVE_BLOCK_PRICE_TIER = 1,
+ EMBER_ZCL_TIER_BLOCK_MODE_ACTIVE_BLOCK_PRICE_TIER_THRESHOLD = 2,
+ EMBER_ZCL_TIER_BLOCK_MODE_NOT_USED = 255,
+} EmberAfTierBlockMode;
+
+// Enum for TimeEncoding
+typedef enum
+{
+ EMBER_ZCL_TIME_ENCODING_RELATIVE = 0,
+ EMBER_ZCL_TIME_ENCODING_ABSOLUTE = 64,
+} EmberAfTimeEncoding;
+
+// Enum for TunnelingProtocolId
+typedef enum
+{
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_DLMS_COSEM = 0,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_IEC_61107 = 1,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_ANSI_C12 = 2,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_M_BUS = 3,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_SML = 4,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_CLIMATE_TALK = 5,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_GB_HRGP = 6,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_IP_V4 = 7,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_IP_V6 = 8,
+ EMBER_ZCL_TUNNELING_PROTOCOL_ID_TEST = 199,
+} EmberAfTunnelingProtocolId;
+
+// Enum for TunnelingTransferDataStatus
+typedef enum
+{
+ EMBER_ZCL_TUNNELING_TRANSFER_DATA_STATUS_NO_SUCH_TUNNEL = 0,
+ EMBER_ZCL_TUNNELING_TRANSFER_DATA_STATUS_WRONG_DEVICE = 1,
+ EMBER_ZCL_TUNNELING_TRANSFER_DATA_STATUS_DATA_OVERFLOW = 2,
+} EmberAfTunnelingTransferDataStatus;
+
+// Enum for TunnelingTunnelStatus
+typedef enum
+{
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_SUCCESS = 0,
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_BUSY = 1,
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_NO_MORE_TUNNEL_IDS = 2,
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_PROTOCOL_NOT_SUPPORTED = 3,
+ EMBER_ZCL_TUNNELING_TUNNEL_STATUS_FLOW_CONTROL_NOT_SUPPORTED = 4,
+} EmberAfTunnelingTunnelStatus;
+
+// Enum for WanStatus
+typedef enum
+{
+ EMBER_ZCL_WAN_STATUS_CONNECTION_TO_WAN_IS_NOT_AVAILABLE = 0,
+ EMBER_ZCL_WAN_STATUS_CONNECTION_TO_WAN_IS_AVAILABLE = 1,
+} EmberAfWanStatus;
+
+// Enum for WarningEvent
+typedef enum
+{
+ EMBER_ZCL_WARNING_EVENT_WARNING1_OVERALL_POWER_ABOVE_AVAILABLE_POWER_LEVEL = 0,
+ EMBER_ZCL_WARNING_EVENT_WARNING2_OVERALL_POWER_ABOVE_POWER_THRESHOLD_LEVEL = 1,
+ EMBER_ZCL_WARNING_EVENT_WARNING3_OVERALL_POWER_BACK_BELOW_THE_AVAILABLE_POWER_LEVEL = 2,
+ EMBER_ZCL_WARNING_EVENT_WARNING4_OVERALL_POWER_BACK_BELOW_THE_POWER_THRESHOLD_LEVEL = 3,
+ EMBER_ZCL_WARNING_EVENT_WARNING5_OVERALL_POWER_WILL_BE_POTENTIALLY_ABOVE_AVAILABLE_POWER_LEVEL_IF_THE_APPLIANCE_STARTS = 4,
+} EmberAfWarningEvent;
+
+// Enum for WarningMode
+typedef enum
+{
+ EMBER_ZCL_WARNING_MODE_STOP = 0,
+ EMBER_ZCL_WARNING_MODE_BURGLAR = 1,
+ EMBER_ZCL_WARNING_MODE_FIRE = 2,
+ EMBER_ZCL_WARNING_MODE_EMERGENCY = 3,
+ EMBER_ZCL_WARNING_MODE_POLICE_PANIC = 4,
+ EMBER_ZCL_WARNING_MODE_FIRE_PANIC = 5,
+ EMBER_ZCL_WARNING_MODE_EMERGENCY_PANIC = 6,
+} EmberAfWarningMode;
+
+// Enum for WarningStobe
+typedef enum
+{
+ EMBER_ZCL_WARNING_STOBE_NO_STROBE = 0,
+ EMBER_ZCL_WARNING_STOBE_USE_STROBE = 1,
+} EmberAfWarningStobe;
+
+// Enum for WwahIasZoneEnrollmentMode
+typedef enum
+{
+ EMBER_ZCL_WWAH_IAS_ZONE_ENROLLMENT_MODE_TRIP_TO_PAIR = 0,
+ EMBER_ZCL_WWAH_IAS_ZONE_ENROLLMENT_MODE_AUTO_ENROLLMENT_RESPONSE = 1,
+ EMBER_ZCL_WWAH_IAS_ZONE_ENROLLMENT_MODE_REQUEST = 2,
+} EmberAfWwahIasZoneEnrollmentMode;
+
+// Enum for WwahPowerNotificationReason
+typedef enum
+{
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_UNKNOWN = 0,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_BATTERY = 1,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_BROWNOUT = 2,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_WATCHDOG = 3,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_RESET_PIN = 4,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_MEMORY_HARDWARE_FAULT = 5,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_SOFWARE_EXCEPTION = 6,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_OTA_BOOTLOAD_SUCCESS = 7,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_SOFTWARE_RESET = 8,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_POWER_BUTTON = 9,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_TEMPERATURE = 10,
+ EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_BOOTLOAD_FAILURE = 11,
+} EmberAfWwahPowerNotificationReason;
+
+// Enum for ZigbeeInformationLogicalType
+typedef enum
+{
+ EMBER_ZCL_ZIGBEE_INFORMATION_LOGICAL_TYPE_COORDINATOR = 0,
+ EMBER_ZCL_ZIGBEE_INFORMATION_LOGICAL_TYPE_ROUTER = 1,
+ EMBER_ZCL_ZIGBEE_INFORMATION_LOGICAL_TYPE_END_DEVICE = 2,
+} EmberAfZigbeeInformationLogicalType;
+
+// Enum for ZllStatus
+typedef enum
+{
+ EMBER_ZCL_ZLL_STATUS_SUCCESS = 0,
+ EMBER_ZCL_ZLL_STATUS_FAILURE = 1,
+} EmberAfZllStatus;
+
+#define EMBER_AF_ALARM_MASK_GENERAL_HW_FAULT (1)
+#define EMBER_AF_ALARM_MASK_GENERAL_HW_FAULT_OFFSET (0)
+#define EMBER_AF_ALARM_MASK_GENERAL_SW_FAULT (2)
+#define EMBER_AF_ALARM_MASK_GENERAL_SW_FAULT_OFFSET (1)
+#define EMBER_AF_ALERT_COUNT_NUMBER_OF_ALERTS (15)
+#define EMBER_AF_ALERT_COUNT_NUMBER_OF_ALERTS_OFFSET (0)
+#define EMBER_AF_ALERT_COUNT_TYPE_OF_ALERT (240)
+#define EMBER_AF_ALERT_COUNT_TYPE_OF_ALERT_OFFSET (4)
+#define EMBER_AF_ALERT_STRUCTURE_ALERT_ID (255)
+#define EMBER_AF_ALERT_STRUCTURE_ALERT_ID_OFFSET (0)
+#define EMBER_AF_ALERT_STRUCTURE_CATEGORY (3840)
+#define EMBER_AF_ALERT_STRUCTURE_CATEGORY_OFFSET (8)
+#define EMBER_AF_ALERT_STRUCTURE_PRESENCE_RECOVERY (12288)
+#define EMBER_AF_ALERT_STRUCTURE_PRESENCE_RECOVERY_OFFSET (12)
+#define EMBER_AF_ALTERNATE_COST_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_ALTERNATE_COST_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_AMI_CANCEL_CONTROL_TERMINATE_WITH_RANDOMIZATION (1)
+#define EMBER_AF_AMI_CANCEL_CONTROL_TERMINATE_WITH_RANDOMIZATION_OFFSET (0)
+#define EMBER_AF_AMI_COMMAND_OPTIONS_REQUEST_RX_ON_WHEN_IDLE (1)
+#define EMBER_AF_AMI_COMMAND_OPTIONS_REQUEST_RX_ON_WHEN_IDLE_OFFSET (0)
+#define EMBER_AF_AMI_DEVICE_CLASS_HVAC_COMPRESSOR_OR_FURNACE (1)
+#define EMBER_AF_AMI_DEVICE_CLASS_HVAC_COMPRESSOR_OR_FURNACE_OFFSET (0)
+#define EMBER_AF_AMI_DEVICE_CLASS_STRIP_HEAT_BASEBOARD_HEAT (2)
+#define EMBER_AF_AMI_DEVICE_CLASS_STRIP_HEAT_BASEBOARD_HEAT_OFFSET (1)
+#define EMBER_AF_AMI_DEVICE_CLASS_WATER_HEATER (4)
+#define EMBER_AF_AMI_DEVICE_CLASS_WATER_HEATER_OFFSET (2)
+#define EMBER_AF_AMI_DEVICE_CLASS_POOL_PUMP_SPA_JACUZZI (8)
+#define EMBER_AF_AMI_DEVICE_CLASS_POOL_PUMP_SPA_JACUZZI_OFFSET (3)
+#define EMBER_AF_AMI_DEVICE_CLASS_SMART_APPLIANCES (16)
+#define EMBER_AF_AMI_DEVICE_CLASS_SMART_APPLIANCES_OFFSET (4)
+#define EMBER_AF_AMI_DEVICE_CLASS_IRRIGATION_PUMP (32)
+#define EMBER_AF_AMI_DEVICE_CLASS_IRRIGATION_PUMP_OFFSET (5)
+#define EMBER_AF_AMI_DEVICE_CLASS_MANAGED_C_AND_I_LOADS (64)
+#define EMBER_AF_AMI_DEVICE_CLASS_MANAGED_C_AND_I_LOADS_OFFSET (6)
+#define EMBER_AF_AMI_DEVICE_CLASS_SIMPLE_MISC_LOADS (128)
+#define EMBER_AF_AMI_DEVICE_CLASS_SIMPLE_MISC_LOADS_OFFSET (7)
+#define EMBER_AF_AMI_DEVICE_CLASS_EXTERIOR_LIGHTING (256)
+#define EMBER_AF_AMI_DEVICE_CLASS_EXTERIOR_LIGHTING_OFFSET (8)
+#define EMBER_AF_AMI_DEVICE_CLASS_INTERIOR_LIGHTING (512)
+#define EMBER_AF_AMI_DEVICE_CLASS_INTERIOR_LIGHTING_OFFSET (9)
+#define EMBER_AF_AMI_DEVICE_CLASS_ELECTRIC_VEHICLE (1024)
+#define EMBER_AF_AMI_DEVICE_CLASS_ELECTRIC_VEHICLE_OFFSET (10)
+#define EMBER_AF_AMI_DEVICE_CLASS_GENERATION_SYSTEMS (2048)
+#define EMBER_AF_AMI_DEVICE_CLASS_GENERATION_SYSTEMS_OFFSET (11)
+#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_START_TIME (1)
+#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_START_TIME_OFFSET (0)
+#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_END_TIME (2)
+#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_END_TIME_OFFSET (1)
+#define EMBER_AF_AMI_METER_STATUS_CHECK_METER (1)
+#define EMBER_AF_AMI_METER_STATUS_CHECK_METER_OFFSET (0)
+#define EMBER_AF_AMI_METER_STATUS_LOW_BATTERY (2)
+#define EMBER_AF_AMI_METER_STATUS_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_AMI_METER_STATUS_TAMPER_DETECT (4)
+#define EMBER_AF_AMI_METER_STATUS_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_AMI_METER_STATUS_POWER_FAILURE (8)
+#define EMBER_AF_AMI_METER_STATUS_POWER_FAILURE_OFFSET (3)
+#define EMBER_AF_AMI_METER_STATUS_POWER_QUALITY (16)
+#define EMBER_AF_AMI_METER_STATUS_POWER_QUALITY_OFFSET (4)
+#define EMBER_AF_AMI_METER_STATUS_LEAK_DETECT (32)
+#define EMBER_AF_AMI_METER_STATUS_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_AMI_METER_STATUS_SERVICE_DISCONNECT_OPEN (64)
+#define EMBER_AF_AMI_METER_STATUS_SERVICE_DISCONNECT_OPEN_OFFSET (6)
+#define EMBER_AF_AMI_METER_STATUS_RESERVED (128)
+#define EMBER_AF_AMI_METER_STATUS_RESERVED_OFFSET (7)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH1 (1)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH1_OFFSET (0)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH2 (2)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH2_OFFSET (1)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH3 (4)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH3_OFFSET (2)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH4 (8)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH4_OFFSET (3)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH5 (16)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH5_OFFSET (4)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH6 (32)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH6_OFFSET (5)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH7 (64)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH7_OFFSET (6)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH8 (128)
+#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH8_OFFSET (7)
+#define EMBER_AF_BALLAST_STATUS_NON_OPERATIONAL (1)
+#define EMBER_AF_BALLAST_STATUS_NON_OPERATIONAL_OFFSET (0)
+#define EMBER_AF_BALLAST_STATUS_LAMP_NOT_IN_SOCKET (2)
+#define EMBER_AF_BALLAST_STATUS_LAMP_NOT_IN_SOCKET_OFFSET (1)
+#define EMBER_AF_BARRIER_CONTROL_CAPABILITIES_PARTIAL_BARRIER (1)
+#define EMBER_AF_BARRIER_CONTROL_CAPABILITIES_PARTIAL_BARRIER_OFFSET (0)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_REMOTE_LOCKOUT (1)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_REMOTE_LOCKOUT_OFFSET (0)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_TEMPER_DETECTED (2)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_TEMPER_DETECTED_OFFSET (1)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_FAILED_COMMUNICATION (4)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_FAILED_COMMUNICATION_OFFSET (2)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_POSITION_FAILURE (8)
+#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_POSITION_FAILURE_OFFSET (3)
+#define EMBER_AF_BATTERY_ALARM_MASK_VOLTAGE_TOO_LOW (1)
+#define EMBER_AF_BATTERY_ALARM_MASK_VOLTAGE_TOO_LOW_OFFSET (0)
+#define EMBER_AF_BILL_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_BILL_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_BILLING_PERIOD_DURATION_DURATION (4194303)
+#define EMBER_AF_BILLING_PERIOD_DURATION_DURATION_OFFSET (0)
+#define EMBER_AF_BILLING_PERIOD_DURATION_UNITS (12582912)
+#define EMBER_AF_BILLING_PERIOD_DURATION_UNITS_OFFSET (22)
+#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_TIMEBASE (15)
+#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_TIMEBASE_OFFSET (0)
+#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_CONTROL (240)
+#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_CONTROL_OFFSET (4)
+#define EMBER_AF_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT_REQUIREMENT (1)
+#define EMBER_AF_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT_REQUIREMENT_OFFSET (0)
+#define EMBER_AF_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK (2)
+#define EMBER_AF_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK_OFFSET (1)
+#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE (15)
+#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_OFFSET (0)
+#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_CONTROL (240)
+#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_CONTROL_OFFSET (4)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER1 (2)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER1_OFFSET (1)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER2 (4)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER2_OFFSET (2)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER3 (8)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER3_OFFSET (3)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER4 (16)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER4_OFFSET (4)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER5 (32)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER5_OFFSET (5)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER6 (64)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER6_OFFSET (6)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER7 (128)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER7_OFFSET (7)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER8 (256)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER8_OFFSET (8)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER9 (512)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER9_OFFSET (9)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER10 (1024)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER10_OFFSET (10)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER11 (2048)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER11_OFFSET (11)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER12 (4096)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER12_OFFSET (12)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER13 (8192)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER13_OFFSET (13)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER14 (16384)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER14_OFFSET (14)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER15 (32768)
+#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER15_OFFSET (15)
+#define EMBER_AF_BLOCK_THRESHOLD_SUB_PAYLOAD_CONTROL_APPLY_TO_ALL_TOU_TIERS_OR_WHEN_BLOCK_ONLY_CHARGING (1)
+#define EMBER_AF_BLOCK_THRESHOLD_SUB_PAYLOAD_CONTROL_APPLY_TO_ALL_TOU_TIERS_OR_WHEN_BLOCK_ONLY_CHARGING_OFFSET (0)
+#define EMBER_AF_CO2_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_CO2_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_CALORIFIC_VALUE_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_CALORIFIC_VALUE_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL0 (1)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL0_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL0 (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL0_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL27 (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL27_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL35 (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL35_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL0 (1)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL0_OFFSET (0)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL1 (2)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL1_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL1 (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL1_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL28 (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL28_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_853_CHANNEL36 (2)
+#define EMBER_AF_CHANNEL_MASK_853_CHANNEL36_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL1 (2)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL1_OFFSET (1)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL2 (4)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL2_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL2 (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL2_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL29 (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL29_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL37 (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL37_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL2 (4)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL2_OFFSET (2)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL3 (8)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL3_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL3 (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL3_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL30 (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL30_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL38 (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL38_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL3 (8)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL3_OFFSET (3)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL4 (16)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL4_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL4 (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL4_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL31 (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL31_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL39 (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL39_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL4 (16)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL4_OFFSET (4)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL5 (32)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL5_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL5 (32)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL5_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL32 (32)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL32_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL40 (32)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL40_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL5 (32)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL5_OFFSET (5)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL6 (64)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL6_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL6 (64)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL6_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL33 (64)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL33_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL41 (64)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL41_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL6 (64)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL6_OFFSET (6)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL7 (128)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL7_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL7 (128)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL7_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL34 (128)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL34_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL42 (128)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL42_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL7 (128)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL7_OFFSET (7)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL8 (256)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL8_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL8 (256)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL8_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL62 (256)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL62_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL43 (256)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL43_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL8 (256)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL8_OFFSET (8)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL9 (512)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL9_OFFSET (9)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL9 (512)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL9_OFFSET (9)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL44 (512)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL44_OFFSET (9)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL9 (512)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL9_OFFSET (9)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL10 (1024)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL10_OFFSET (10)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL10 (1024)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL10_OFFSET (10)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL45 (1024)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL45_OFFSET (10)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL10 (1024)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL10_OFFSET (10)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL11 (2048)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL11_OFFSET (11)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL11 (2048)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL11_OFFSET (11)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL46 (2048)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL46_OFFSET (11)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL11 (2048)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL11_OFFSET (11)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL12 (4096)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL12_OFFSET (12)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL12 (4096)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL12_OFFSET (12)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL47 (4096)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL47_OFFSET (12)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL12 (4096)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL12_OFFSET (12)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL13 (8192)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL13_OFFSET (13)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL13 (8192)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL13_OFFSET (13)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL48 (8192)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL48_OFFSET (13)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL13 (8192)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL13_OFFSET (13)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL14 (16384)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL14_OFFSET (14)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL14 (16384)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL14_OFFSET (14)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL49 (16384)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL49_OFFSET (14)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL14 (16384)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL14_OFFSET (14)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL15 (32768)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL15_OFFSET (15)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL15 (32768)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL15_OFFSET (15)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL50 (32768)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL50_OFFSET (15)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL15 (32768)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL15_OFFSET (15)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL16 (65536)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL16_OFFSET (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL16 (65536)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL16_OFFSET (16)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL51 (65536)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL51_OFFSET (16)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL16 (65536)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL16_OFFSET (16)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL17 (131072)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL17_OFFSET (17)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL17 (131072)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL17_OFFSET (17)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL52 (131072)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL52_OFFSET (17)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL17 (131072)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL17_OFFSET (17)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL18 (262144)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL18_OFFSET (18)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL18 (262144)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL18_OFFSET (18)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL53 (262144)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL53_OFFSET (18)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL18 (262144)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL18_OFFSET (18)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL19 (524288)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL19_OFFSET (19)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL19 (524288)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL19_OFFSET (19)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL54 (524288)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL54_OFFSET (19)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL19 (524288)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL19_OFFSET (19)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL20 (1048576)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL20_OFFSET (20)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL20 (1048576)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL20_OFFSET (20)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL55 (1048576)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL55_OFFSET (20)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL20 (1048576)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL20_OFFSET (20)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL21 (2097152)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL21_OFFSET (21)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL21 (2097152)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL21_OFFSET (21)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL56 (2097152)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL56_OFFSET (21)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL21 (2097152)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL21_OFFSET (21)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL22 (4194304)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL22_OFFSET (22)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL22 (4194304)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL22_OFFSET (22)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL57 (4194304)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL57_OFFSET (22)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL22 (4194304)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL22_OFFSET (22)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL23 (8388608)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL23_OFFSET (23)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL23 (8388608)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL23_OFFSET (23)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL58 (8388608)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL58_OFFSET (23)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL23 (8388608)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL23_OFFSET (23)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL24 (16777216)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL24_OFFSET (24)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL24 (16777216)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL24_OFFSET (24)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL59 (16777216)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL59_OFFSET (24)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL24 (16777216)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL24_OFFSET (24)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL25 (33554432)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL25_OFFSET (25)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL25 (33554432)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL25_OFFSET (25)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL60 (33554432)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL60_OFFSET (25)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL25 (33554432)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL25_OFFSET (25)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL26 (67108864)
+#define EMBER_AF_CHANNEL_MASK_CHANNEL26_OFFSET (26)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL26 (67108864)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL26_OFFSET (26)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL61 (67108864)
+#define EMBER_AF_CHANNEL_MASK_863_CHANNEL61_OFFSET (26)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL26 (67108864)
+#define EMBER_AF_CHANNEL_MASK_915_CHANNEL26_OFFSET (26)
+#define EMBER_AF_CHANNEL_MASK_PAGE (4160749568)
+#define EMBER_AF_CHANNEL_MASK_PAGE_OFFSET (27)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_ALL_LOGS_CLEARED (1)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_ALL_LOGS_CLEARED_OFFSET (0)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_TAMPER_LOG_CLEARED (2)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_TAMPER_LOG_CLEARED_OFFSET (1)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_FAULT_LOG_CLEARED (4)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_FAULT_LOG_CLEARED_OFFSET (2)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_GENERAL_EVENT_LOG_CLEARED (8)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_GENERAL_EVENT_LOG_CLEARED_OFFSET (3)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_SECURITY_EVENT_LOG_CLEARED (16)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_SECURITY_EVENT_LOG_CLEARED_OFFSET (4)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_NETWORK_EVENT_LOG_CLEARED (32)
+#define EMBER_AF_CLEARED_EVENTS_LOGS_NETWORK_EVENT_LOG_CLEARED_OFFSET (5)
+#define EMBER_AF_COLOR_CAPABILITIES_HUE_SATURATION_SUPPORTED (1)
+#define EMBER_AF_COLOR_CAPABILITIES_HUE_SATURATION_SUPPORTED_OFFSET (0)
+#define EMBER_AF_COLOR_CAPABILITIES_ENHANCED_HUE_SUPPORTED (2)
+#define EMBER_AF_COLOR_CAPABILITIES_ENHANCED_HUE_SUPPORTED_OFFSET (1)
+#define EMBER_AF_COLOR_CAPABILITIES_COLOR_LOOP_SUPPORTED (4)
+#define EMBER_AF_COLOR_CAPABILITIES_COLOR_LOOP_SUPPORTED_OFFSET (2)
+#define EMBER_AF_COLOR_CAPABILITIES_XY_ATTRIBUTES_SUPPORTED (8)
+#define EMBER_AF_COLOR_CAPABILITIES_XY_ATTRIBUTES_SUPPORTED_OFFSET (3)
+#define EMBER_AF_COLOR_CAPABILITIES_COLOR_TEMPERATURE_SUPPORTED (16)
+#define EMBER_AF_COLOR_CAPABILITIES_COLOR_TEMPERATURE_SUPPORTED_OFFSET (4)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION (1)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION_OFFSET (0)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_DIRECTION (2)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_DIRECTION_OFFSET (1)
+#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_TIME (4)
+#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_CONVERSION_FACTOR_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_CONVERSION_FACTOR_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_CREDIT_STATUS_CREDIT_OK (1)
+#define EMBER_AF_CREDIT_STATUS_CREDIT_OK_OFFSET (0)
+#define EMBER_AF_CREDIT_STATUS_LOW_CREDIT (2)
+#define EMBER_AF_CREDIT_STATUS_LOW_CREDIT_OFFSET (1)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_ENABLED (4)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_ENABLED_OFFSET (2)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_AVAILABLE (8)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_AVAILABLE_OFFSET (3)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_SELECTED (16)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_SELECTED_OFFSET (4)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_IN_USE (32)
+#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_IN_USE_OFFSET (5)
+#define EMBER_AF_CREDIT_STATUS_CREDIT_EXHAUSTED (64)
+#define EMBER_AF_CREDIT_STATUS_CREDIT_EXHAUSTED_OFFSET (6)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_BILLING_INFO (1)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_BILLING_INFO_OFFSET (0)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_BILLING_INFO_USING_NEW_CURRENCY (2)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_BILLING_INFO_USING_NEW_CURRENCY_OFFSET (1)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_OLD_CONSUMPTION_DATA (4)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_OLD_CONSUMPTION_DATA_OFFSET (2)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_OLD_CONSUMPTION_DATA_USING_NEW_CURRENCY (8)
+#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_OLD_CONSUMPTION_DATA_USING_NEW_CURRENCY_OFFSET (3)
+#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_START_TIME (1)
+#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_START_TIME_OFFSET (0)
+#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_DURATION (2)
+#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_DURATION_OFFSET (1)
+#define EMBER_AF_CURRENT_EVENT_STATUS_EXTENDED_BITS_PRESENT (4)
+#define EMBER_AF_CURRENT_EVENT_STATUS_EXTENDED_BITS_PRESENT_OFFSET (2)
+#define EMBER_AF_CURRENT_EVENT_STATUS_EVENT_ACTIVE (8)
+#define EMBER_AF_CURRENT_EVENT_STATUS_EVENT_ACTIVE_OFFSET (3)
+#define EMBER_AF_CURRENT_EVENT_STATUS_DEVICE_PARTICIPATING_IN_EVENT (16)
+#define EMBER_AF_CURRENT_EVENT_STATUS_DEVICE_PARTICIPATING_IN_EVENT_OFFSET (4)
+#define EMBER_AF_CURRENT_EVENT_STATUS_REDUCING_LOAD (32)
+#define EMBER_AF_CURRENT_EVENT_STATUS_REDUCING_LOAD_OFFSET (5)
+#define EMBER_AF_CURRENT_EVENT_STATUS_ON_AT_END_OF_EVENT (64)
+#define EMBER_AF_CURRENT_EVENT_STATUS_ON_AT_END_OF_EVENT_OFFSET (6)
+#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)
+#define EMBER_AF_DAY_OF_WEEK_MONDAY_OFFSET (1)
+#define EMBER_AF_DAY_OF_WEEK_TUESDAY (4)
+#define EMBER_AF_DAY_OF_WEEK_TUESDAY_OFFSET (2)
+#define EMBER_AF_DAY_OF_WEEK_WEDNESDAY (8)
+#define EMBER_AF_DAY_OF_WEEK_WEDNESDAY_OFFSET (3)
+#define EMBER_AF_DAY_OF_WEEK_THURSDAY (16)
+#define EMBER_AF_DAY_OF_WEEK_THURSDAY_OFFSET (4)
+#define EMBER_AF_DAY_OF_WEEK_FRIDAY (32)
+#define EMBER_AF_DAY_OF_WEEK_FRIDAY_OFFSET (5)
+#define EMBER_AF_DAY_OF_WEEK_SATURDAY (64)
+#define EMBER_AF_DAY_OF_WEEK_SATURDAY_OFFSET (6)
+#define EMBER_AF_DAY_OF_WEEK_AWAY_OR_VACATION (128)
+#define EMBER_AF_DAY_OF_WEEK_AWAY_OR_VACATION_OFFSET (7)
+#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_LOW (1)
+#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_LOW_OFFSET (0)
+#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_HIGH (2)
+#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_HIGH_OFFSET (1)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SUNDAY (1)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SUNDAY_OFFSET (0)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_MONDAY (2)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_MONDAY_OFFSET (1)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_TUESDAY (4)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_TUESDAY_OFFSET (2)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_WEDNESDAY (8)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_WEDNESDAY_OFFSET (3)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_THURSDAY (16)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_THURSDAY_OFFSET (4)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_FRIDAY (32)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_FRIDAY_OFFSET (5)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SATURDAY (64)
+#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SATURDAY_OFFSET (6)
+#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_RIGHT_OF_THE_DECIMAL_POINT (7)
+#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_RIGHT_OF_THE_DECIMAL_POINT_OFFSET (0)
+#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_LEFT_OF_THE_DECIMAL_POINT (120)
+#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_LEFT_OF_THE_DECIMAL_POINT_OFFSET (3)
+#define EMBER_AF_ENERGY_FORMATTING_SUPPRESS_LEADING_ZEROS (128)
+#define EMBER_AF_ENERGY_FORMATTING_SUPPRESS_LEADING_ZEROS_OFFSET (7)
+#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_HAN_DEVICES (1)
+#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_HAN_DEVICES_OFFSET (0)
+#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_WAN (2)
+#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_WAN_OFFSET (1)
+#define EMBER_AF_EVENT_CONFIGURATION_LOG_ACTION (7)
+#define EMBER_AF_EVENT_CONFIGURATION_LOG_ACTION_OFFSET (0)
+#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_WAN (8)
+#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_WAN_OFFSET (3)
+#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_HAN (16)
+#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_HAN_OFFSET (4)
+#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_ZIG_BEE (32)
+#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_ZIG_BEE_OFFSET (5)
+#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_PHYSICAL (64)
+#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_PHYSICAL_OFFSET (6)
+#define EMBER_AF_EVENT_CONTROL_LOG_ID_LOG_ID (15)
+#define EMBER_AF_EVENT_CONTROL_LOG_ID_LOG_ID_OFFSET (0)
+#define EMBER_AF_EVENT_CONTROL_LOG_ID_EVENT_CONTROL (240)
+#define EMBER_AF_EVENT_CONTROL_LOG_ID_EVENT_CONTROL_OFFSET (4)
+#define EMBER_AF_FRIENDLY_CREDIT_FRIENDLY_CREDIT_ENABLED (1)
+#define EMBER_AF_FRIENDLY_CREDIT_FRIENDLY_CREDIT_ENABLED_OFFSET (0)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_OTA_FIRMWARE (1)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_OTA_FIRMWARE_OFFSET (0)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CBKE_UPDATE_REQUEST (2)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CBKE_UPDATE_REQUEST_OFFSET (1)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TIME_SYNC (4)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TIME_SYNC_OFFSET (2)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_HAN (16)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_HAN_OFFSET (4)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_WAN (32)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_WAN_OFFSET (5)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET (448)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET_OFFSET (6)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET (3584)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET_OFFSET (9)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER (4096)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER_OFFSET (12)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_METERING_CLUSTER (8192)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_METERING_CLUSTER_OFFSET (13)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER (16384)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER_OFFSET (14)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NETWORK_KEY_ACTIVE (32768)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NETWORK_KEY_ACTIVE_OFFSET (15)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_DISPLAY_MESSAGE (65536)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_DISPLAY_MESSAGE_OFFSET (16)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CANCEL_ALL_MESSAGES (131072)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CANCEL_ALL_MESSAGES_OFFSET (17)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANGE_SUPPLY (262144)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANGE_SUPPLY_OFFSET (18)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_LOCAL_CHANGE_SUPPLY (524288)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_LOCAL_CHANGE_SUPPLY_OFFSET (19)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_SET_UNCONTROLLED_FLOW_THRESHOLD (1048576)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_SET_UNCONTROLLED_FLOW_THRESHOLD_OFFSET (20)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TUNNEL_MESSAGE_PENDING (2097152)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TUNNEL_MESSAGE_PENDING_OFFSET (21)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SNAPSHOT (4194304)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SNAPSHOT_OFFSET (22)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SAMPLED_DATA (8388608)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SAMPLED_DATA_OFFSET (23)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE (16777216)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE_OFFSET (24)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_ENERGY_SCAN_PENDING (33554432)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_ENERGY_SCAN_PENDING_OFFSET (25)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANNEL_CHANGE_PENDING (67108864)
+#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANNEL_CHANGE_PENDING_OFFSET (26)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_ABSOLUTE_ONLY (1)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_ABSOLUTE_ONLY_OFFSET (0)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_RECALCULATE (2)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_RECALCULATE_OFFSET (1)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST (4)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST_OFFSET (2)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST_RESPONSE (8)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST_RESPONSE_OFFSET (3)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_COMPACT_RESPONSE (16)
+#define EMBER_AF_GET_LOCATION_DATA_FLAGS_COMPACT_RESPONSE_OFFSET (4)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_MANUFACTURE_ID_PRESENT (1)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_MANUFACTURE_ID_PRESENT_OFFSET (0)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_MODEL_ID_PRESENT (2)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_MODEL_ID_PRESENT_OFFSET (1)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_GPD_COMMANDS_PRESENT (4)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_GPD_COMMANDS_PRESENT_OFFSET (2)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_CLUSTER_LIST_PRESENT (8)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_CLUSTER_LIST_PRESENT_OFFSET (3)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_SWITCH_INFORMATION_PRESENT (16)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_SWITCH_INFORMATION_PRESENT_OFFSET (4)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_APPLICATION_DESCRIPTION_PRESENT (32)
+#define EMBER_AF_GP_APPLICATION_INFORMATION_APPLICATION_DESCRIPTION_PRESENT_OFFSET (5)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RX_AFTER_TX (8)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RX_AFTER_TX_OFFSET (3)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_LEVEL (48)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_LEVEL_OFFSET (4)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_KEY_TYPE (448)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_KEY_TYPE_OFFSET (6)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_PROCESSING_FAILED (512)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_PROCESSING_FAILED_OFFSET (9)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY (1024)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY_OFFSET (10)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_PROXY_INFO_PRESENT (2048)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_PROXY_INFO_PRESENT_OFFSET (11)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RESERVED (61440)
+#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RESERVED_OFFSET (12)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_MASK (31)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_MASK_OFFSET (0)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_OPERATIONAL_CHANNEL (15)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_OPERATIONAL_CHANNEL_OFFSET (0)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_BASIC (16)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_BASIC_OFFSET (4)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_RESERVED (224)
+#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_NEXT_ATTEMPT (15)
+#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_NEXT_ATTEMPT_OFFSET (0)
+#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_SECOND_NEXT_ATTEMPT (240)
+#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_SECOND_NEXT_ATTEMPT_OFFSET (4)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_SECURITY_LEVEL_CAPABILITIES (3)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_SECURITY_LEVEL_CAPABILITIES_OFFSET (0)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_KEY_TYPE (28)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_KEY_TYPE_OFFSET (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_PRESENT (32)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_PRESENT_OFFSET (5)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_ENCRYPTION (64)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_ENCRYPTION_OFFSET (6)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_OUTGOING_COUNTER_PRESENT (128)
+#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_OUTGOING_COUNTER_PRESENT_OFFSET (7)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_MAC_SEQ_NUM_CAP (1)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_MAC_SEQ_NUM_CAP_OFFSET (0)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RX_ON_CAP (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RX_ON_CAP_OFFSET (1)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_APPLICATION_INFORMATION_PRESENT (4)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_APPLICATION_INFORMATION_PRESENT_OFFSET (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RESERVED (8)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RESERVED_OFFSET (3)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_PAN_ID_REQUEST (16)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_PAN_ID_REQUEST_OFFSET (4)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_GP_SECURITY_KEY_REQUEST (32)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_GP_SECURITY_KEY_REQUEST_OFFSET (5)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_FIXED_LOCATION (64)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_FIXED_LOCATION_OFFSET (6)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_EXTENDED_OPTIONS_FIELD (128)
+#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_EXTENDED_OPTIONS_FIELD_OFFSET (7)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_PAN_ID_PRESENT (1)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_PAN_ID_PRESENT_OFFSET (0)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPD_SECURITY_KEY_PRESENT (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPD_SECURITY_KEY_PRESENT_OFFSET (1)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPDKEY_ENCRYPTION (4)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPDKEY_ENCRYPTION_OFFSET (2)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_SECURITY_LEVEL (24)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_SECURITY_LEVEL_OFFSET (3)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_KEY_TYPE (224)
+#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_KEY_TYPE_OFFSET (5)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GP_FEATURE (1)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GP_FEATURE_OFFSET (0)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_DIRECT_COMMUNICATION (2)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_DIRECT_COMMUNICATION_OFFSET (1)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_DERIVED_GROUPCAST_COMMUNICATION (4)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_DERIVED_GROUPCAST_COMMUNICATION_OFFSET (2)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PRE_COMMISSIONED_GROUPCAST_COMMUNICATION (8)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PRE_COMMISSIONED_GROUPCAST_COMMUNICATION_OFFSET (3)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_FULL_UNICAST_COMMUNICATION (16)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_FULL_UNICAST_COMMUNICATION_OFFSET (4)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_LIGHTWEIGHT_UNICAST_COMMUNICATION (32)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_LIGHTWEIGHT_UNICAST_COMMUNICATION_OFFSET (5)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_BIDIRECTIONAL_COMMUNICATION (64)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_BIDIRECTIONAL_COMMUNICATION_OFFSET (6)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_BIDIRECTIONAL_COMMUNICATION (128)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_BIDIRECTIONAL_COMMUNICATION_OFFSET (7)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXY_TABLE_MAINTAINANCE (256)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXY_TABLE_MAINTAINANCE_OFFSET (8)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_COMMUNICATION (512)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_COMMUNICATION_OFFSET (9)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_COMMUNICATION (1024)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_COMMUNICATION_OFFSET (10)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_CT_BASED_COMMISSIONING (2048)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_CT_BASED_COMMISSIONING_OFFSET (11)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MAINTAINANCE_GPDF (4096)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_MAINTAINANCE_GPDF_OFFSET (12)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL0_IN_OPERATION (8192)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL0_IN_OPERATION_OFFSET (13)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL1_IN_OPERATION (16384)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL1_IN_OPERATION_OFFSET (14)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL2_IN_OPERATION (32768)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL2_IN_OPERATION_OFFSET (15)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL3_IN_OPERATION (65536)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL3_IN_OPERATION_OFFSET (16)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_SINK_TABLE_BASED_GROUPCAST_FORWARDING (131072)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_SINK_TABLE_BASED_GROUPCAST_FORWARDING_OFFSET (17)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_TRANSLATION_TABLE (262144)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_TRANSLATION_TABLE_OFFSET (18)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_IEEE_ADDRESS (524288)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_IEEE_ADDRESS_OFFSET (19)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_COMPACT_ATTRIBUTE_REPORTING (1048576)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_COMPACT_ATTRIBUTE_REPORTING_OFFSET (20)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_RESERVED (14680064)
+#define EMBER_AF_GP_GPS_FUNCTIONALITY_RESERVED_OFFSET (21)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_UNICAST (8)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_UNICAST_OFFSET (3)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_DERIVED_GROUP (16)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_DERIVED_GROUP_OFFSET (4)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_COMMISSIONED_GROUP (32)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_COMMISSIONED_GROUP_OFFSET (5)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_LEVEL (192)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_LEVEL_OFFSET (6)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_KEY_TYPE (1792)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_KEY_TYPE_OFFSET (8)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_RX_AFTER_TX (2048)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_RX_AFTER_TX_OFFSET (11)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_GP_TX_QUEUE_FULL (4096)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_GP_TX_QUEUE_FULL_OFFSET (12)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY (8192)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY_OFFSET (13)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_PROXY_INFO_PRESENT (16384)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_PROXY_INFO_PRESENT_OFFSET (14)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_RESERVED (32768)
+#define EMBER_AF_GP_NOTIFICATION_OPTION_RESERVED_OFFSET (15)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_FIRST_TO_FORWARD (8)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_FIRST_TO_FORWARD_OFFSET (3)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_NO_PAIRING (16)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_NO_PAIRING_OFFSET (4)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_RESERVED (224)
+#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_ACTION (7)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_ACTION_OFFSET (0)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_SEND_GP_PAIRING (8)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_SEND_GP_PAIRING_OFFSET (3)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_RESERVED (240)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE (24)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_OFFSET (3)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SEQUENCE_NUMBER_CAPABILITIES (32)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SEQUENCE_NUMBER_CAPABILITIES_OFFSET (5)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RX_ON_CAPABILITY (64)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RX_ON_CAPABILITY_OFFSET (6)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_FIXED_LOCATION (128)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_FIXED_LOCATION_OFFSET (7)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_ASSIGNED_ALIAS (256)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_ASSIGNED_ALIAS_OFFSET (8)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SECURITY_USE (512)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SECURITY_USE_OFFSET (9)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_INFORMATION_PRESENT (1024)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_INFORMATION_PRESENT_OFFSET (10)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RESERVED (63488)
+#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RESERVED_OFFSET (11)
+#define EMBER_AF_GP_PAIRING_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_PAIRING_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PAIRING_OPTION_ADD_SINK (8)
+#define EMBER_AF_GP_PAIRING_OPTION_ADD_SINK_OFFSET (3)
+#define EMBER_AF_GP_PAIRING_OPTION_REMOVE_GPD (16)
+#define EMBER_AF_GP_PAIRING_OPTION_REMOVE_GPD_OFFSET (4)
+#define EMBER_AF_GP_PAIRING_OPTION_COMMUNICATION_MODE (96)
+#define EMBER_AF_GP_PAIRING_OPTION_COMMUNICATION_MODE_OFFSET (5)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_FIXED (128)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_FIXED_OFFSET (7)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_MAC_SEQUENCE_NUMBER_CAPABILITIES (256)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_MAC_SEQUENCE_NUMBER_CAPABILITIES_OFFSET (8)
+#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_LEVEL (1536)
+#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_LEVEL_OFFSET (9)
+#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_KEY_TYPE (14336)
+#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_KEY_TYPE_OFFSET (11)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_FRAME_COUNTER_PRESENT (16384)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_FRAME_COUNTER_PRESENT_OFFSET (14)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_KEY_PRESENT (32768)
+#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_KEY_PRESENT_OFFSET (15)
+#define EMBER_AF_GP_PAIRING_OPTION_ASSIGNED_ALIAS_PRESENT (65536)
+#define EMBER_AF_GP_PAIRING_OPTION_ASSIGNED_ALIAS_PRESENT_OFFSET (16)
+#define EMBER_AF_GP_PAIRING_OPTION_GROUPCAST_RADIUS_PRESENT (131072)
+#define EMBER_AF_GP_PAIRING_OPTION_GROUPCAST_RADIUS_PRESENT_OFFSET (17)
+#define EMBER_AF_GP_PAIRING_OPTION_RESERVED (16515072)
+#define EMBER_AF_GP_PAIRING_OPTION_RESERVED_OFFSET (18)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_UNICAST_SINKS (8)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_UNICAST_SINKS_OFFSET (3)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_DERIVED_GROUPCAST_SINKS (16)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_DERIVED_GROUPCAST_SINKS_OFFSET (4)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_COMMISSIONED_GROUPCAST_SINKS (32)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_COMMISSIONED_GROUPCAST_SINKS_OFFSET (5)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_FRAME_COUNTER (64)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_FRAME_COUNTER_OFFSET (6)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_KEY (128)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_KEY_OFFSET (7)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_RESERVED (65280)
+#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_RESERVED_OFFSET (8)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION (2)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION_OFFSET (1)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS (4)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS_OFFSET (2)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT (8)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT_OFFSET (3)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_ACTION (1)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_ACTION_OFFSET (0)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_COMMISSIONING_WINDOW_PRESENT (2)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_COMMISSIONING_WINDOW_PRESENT_OFFSET (1)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_EXIT_MODE (12)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_EXIT_MODE_OFFSET (2)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_CHANNEL_PRESENT (16)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_CHANNEL_PRESENT_OFFSET (4)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_UNICAST_COMMUNICATION (32)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_UNICAST_COMMUNICATION_OFFSET (5)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_RESERVED (192)
+#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_RESERVED_OFFSET (6)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_APPLICATION_ID (7)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_ACTIVE (8)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_ACTIVE_OFFSET (3)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_VALID (16)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_VALID_OFFSET (4)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SEQUENCE_NUMBER_CAP (32)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SEQUENCE_NUMBER_CAP_OFFSET (5)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_LIGHTWEIGHT_UNICAST_GPS (64)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_LIGHTWEIGHT_UNICAST_GPS_OFFSET (6)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_DERIVED_GROUP_GPS (128)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_DERIVED_GROUP_GPS_OFFSET (7)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_COMMISIONED_GROUP_GPS (256)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_COMMISIONED_GROUP_GPS_OFFSET (8)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FIRST_TO_FORWARD (512)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FIRST_TO_FORWARD_OFFSET (9)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_IN_RANGE (1024)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_IN_RANGE_OFFSET (10)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_GPD_FIXED (2048)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_GPD_FIXED_OFFSET (11)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_HAS_ALL_UNICAST_ROUTES (4096)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_HAS_ALL_UNICAST_ROUTES_OFFSET (12)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS (8192)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS_OFFSET (13)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SECURITY_USE (16384)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SECURITY_USE_OFFSET (14)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_EXTENSION (32768)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_EXTENSION_OFFSET (15)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FULL_UNICAST_GPS (65536)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FULL_UNICAST_GPS_OFFSET (16)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL (3)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL_OFFSET (0)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE (28)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE_OFFSET (2)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED (224)
+#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_APPLICATION_ID (7)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE (24)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_OFFSET (3)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_RESERVED (224)
+#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_RESPONSE_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_RESPONSE_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_RESPONSE_OPTION_TRANSMIT_ON_END_POINT_MATCH (8)
+#define EMBER_AF_GP_RESPONSE_OPTION_TRANSMIT_ON_END_POINT_MATCH_OFFSET (3)
+#define EMBER_AF_GP_RESPONSE_OPTION_RESERVED (240)
+#define EMBER_AF_GP_RESPONSE_OPTION_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_TRANSMIT_CHANNEL (15)
+#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_TRANSMIT_CHANNEL_OFFSET (0)
+#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_RESERVED (240)
+#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION (1)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION_OFFSET (0)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS (2)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS_OFFSET (1)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT (4)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT_OFFSET (2)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_RESERVED (248)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_RESERVED_OFFSET (3)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_ACTION (1)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_ACTION_OFFSET (0)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_SECURITY (2)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_SECURITY_OFFSET (1)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_PAIRING (4)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_PAIRING_OFFSET (2)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_PROXIES (8)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_PROXIES_OFFSET (3)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_RESERVED (240)
+#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_APPLICATION_ID (7)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_COMMUNICATION_MODE (24)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_COMMUNICATION_MODE_OFFSET (3)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SEQUENCE_NUM_CAPABILITIES (32)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SEQUENCE_NUM_CAPABILITIES_OFFSET (5)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RX_ON_CAPABILITY (64)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RX_ON_CAPABILITY_OFFSET (6)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_FIXED_LOCATION (128)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_FIXED_LOCATION_OFFSET (7)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS (256)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS_OFFSET (8)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SECURITY_USE (512)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SECURITY_USE_OFFSET (9)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RESERVED (64512)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RESERVED_OFFSET (10)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL (3)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL_OFFSET (0)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE (28)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE_OFFSET (2)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED (224)
+#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_APPLICATION_ID (7)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TYPE (24)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_OFFSET (3)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_RESERVED (224)
+#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_RESERVED_OFFSET (5)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT (8)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT_OFFSET (3)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_RESERVED (240)
+#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_RESERVED_OFFSET (4)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_GPD_ID (1)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_GPD_ID_OFFSET (0)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_CMD_ID (2)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_CMD_ID_OFFSET (1)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_PAYLOAD (4)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_PAYLOAD_OFFSET (2)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ZB_ENDPOINT (8)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ZB_ENDPOINT_OFFSET (3)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ADDITIONAL_INFO_BLOCK (16)
+#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ADDITIONAL_INFO_BLOCK_OFFSET (4)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ACTION (24)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ACTION_OFFSET (3)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_NUMBER_OF_TRANSLATIONS (224)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_NUMBER_OF_TRANSLATIONS_OFFSET (5)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT (256)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT_OFFSET (8)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_RESERVED (65024)
+#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_RESERVED_OFFSET (9)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_APPLICATION_ID (7)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_APPLICATION_ID_OFFSET (0)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_DERIVED_GROUP (8)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_DERIVED_GROUP_OFFSET (3)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_COMMISSIONED_GROUP (16)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_COMMISSIONED_GROUP_OFFSET (4)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_RESERVED (224)
+#define EMBER_AF_GP_TUNNELING_STOP_OPTION_RESERVED_OFFSET (5)
+#define EMBER_AF_IAS_ZONE_STATUS_ALARM1 (1)
+#define EMBER_AF_IAS_ZONE_STATUS_ALARM1_OFFSET (0)
+#define EMBER_AF_IAS_ZONE_STATUS_ALARM2 (2)
+#define EMBER_AF_IAS_ZONE_STATUS_ALARM2_OFFSET (1)
+#define EMBER_AF_IAS_ZONE_STATUS_TAMPER (4)
+#define EMBER_AF_IAS_ZONE_STATUS_TAMPER_OFFSET (2)
+#define EMBER_AF_IAS_ZONE_STATUS_BATTERY (8)
+#define EMBER_AF_IAS_ZONE_STATUS_BATTERY_OFFSET (3)
+#define EMBER_AF_IAS_ZONE_STATUS_SUPERVISION_REPORTS (16)
+#define EMBER_AF_IAS_ZONE_STATUS_SUPERVISION_REPORTS_OFFSET (4)
+#define EMBER_AF_IAS_ZONE_STATUS_RESTORE_REPORTS (32)
+#define EMBER_AF_IAS_ZONE_STATUS_RESTORE_REPORTS_OFFSET (5)
+#define EMBER_AF_IAS_ZONE_STATUS_TROUBLE (64)
+#define EMBER_AF_IAS_ZONE_STATUS_TROUBLE_OFFSET (6)
+#define EMBER_AF_IAS_ZONE_STATUS_AC (128)
+#define EMBER_AF_IAS_ZONE_STATUS_AC_OFFSET (7)
+#define EMBER_AF_IAS_ZONE_STATUS_TEST (256)
+#define EMBER_AF_IAS_ZONE_STATUS_TEST_OFFSET (8)
+#define EMBER_AF_IAS_ZONE_STATUS_BATTERY_DEFECT (512)
+#define EMBER_AF_IAS_ZONE_STATUS_BATTERY_DEFECT_OFFSET (9)
+#define EMBER_AF_KEY_BITMASK_DEVELOPMENT (1)
+#define EMBER_AF_KEY_BITMASK_DEVELOPMENT_OFFSET (0)
+#define EMBER_AF_KEY_BITMASK_MASTER (16)
+#define EMBER_AF_KEY_BITMASK_MASTER_OFFSET (4)
+#define EMBER_AF_KEY_BITMASK_CERTIFICATION (32768)
+#define EMBER_AF_KEY_BITMASK_CERTIFICATION_OFFSET (15)
+#define EMBER_AF_LAMP_ALARM_MODE_LAMP_BURN_HOURS (1)
+#define EMBER_AF_LAMP_ALARM_MODE_LAMP_BURN_HOURS_OFFSET (0)
+#define EMBER_AF_LOAD_CONTROL_STATE_RELAY_OPEN_OR_CONSUMPTION_INTERUPTED (1)
+#define EMBER_AF_LOAD_CONTROL_STATE_RELAY_OPEN_OR_CONSUMPTION_INTERUPTED_OFFSET (0)
+#define EMBER_AF_LOAD_CONTROL_STATE_EVENT_IN_PROGRESS (2)
+#define EMBER_AF_LOAD_CONTROL_STATE_EVENT_IN_PROGRESS_OFFSET (1)
+#define EMBER_AF_LOAD_CONTROL_STATE_POWER_STABILIZING (4)
+#define EMBER_AF_LOAD_CONTROL_STATE_POWER_STABILIZING_OFFSET (2)
+#define EMBER_AF_LOAD_CONTROL_STATE_OTHER_LOAD_REDUCTION (8)
+#define EMBER_AF_LOAD_CONTROL_STATE_OTHER_LOAD_REDUCTION_OFFSET (3)
+#define EMBER_AF_LOAD_CONTROL_STATE_CURRENT_FLOW_OR_CONSUMING_COMMODITY (16)
+#define EMBER_AF_LOAD_CONTROL_STATE_CURRENT_FLOW_OR_CONSUMING_COMMODITY_OFFSET (4)
+#define EMBER_AF_LOAD_CONTROL_STATE_LOAD_CALL (32)
+#define EMBER_AF_LOAD_CONTROL_STATE_LOAD_CALL_OFFSET (5)
+#define EMBER_AF_LOCATION_TYPE_ABSOLUTE (1)
+#define EMBER_AF_LOCATION_TYPE_ABSOLUTE_OFFSET (0)
+#define EMBER_AF_LOCATION_TYPE_2_D (2)
+#define EMBER_AF_LOCATION_TYPE_2_D_OFFSET (1)
+#define EMBER_AF_LOCATION_TYPE_COORDINATE_SYSTEM (12)
+#define EMBER_AF_LOCATION_TYPE_COORDINATE_SYSTEM_OFFSET (2)
+#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_LOW (1)
+#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_LOW_OFFSET (0)
+#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_HIGH (2)
+#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_HIGH_OFFSET (1)
+#define EMBER_AF_MAINS_ALARM_MASK_MAINS_POWER_SUPPLY_LOST (4)
+#define EMBER_AF_MAINS_ALARM_MASK_MAINS_POWER_SUPPLY_LOST_OFFSET (2)
+#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_NO_RETURNED (1)
+#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_NO_RETURNED_OFFSET (0)
+#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_YES_RETURNED (2)
+#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_YES_RETURNED_OFFSET (1)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_TRANS_MECHANISM (3)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_TRANS_MECHANISM_OFFSET (0)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_URGENCY (12)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_URGENCY_OFFSET (2)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_ENHANCED_CONFIRMATION_REQUEST (32)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_ENHANCED_CONFIRMATION_REQUEST_OFFSET (5)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_CONFIRMATION (128)
+#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_CONFIRMATION_OFFSET (7)
+#define EMBER_AF_MESSAGING_EXTENDED_CONTROL_MASK_MESSAGE_CONFIRMATION_STATUS (1)
+#define EMBER_AF_MESSAGING_EXTENDED_CONTROL_MASK_MESSAGE_CONFIRMATION_STATUS_OFFSET (0)
+#define EMBER_AF_METERING_EXTENDED_STATUS_METER_COVER_REMOVED (1)
+#define EMBER_AF_METERING_EXTENDED_STATUS_METER_COVER_REMOVED_OFFSET (0)
+#define EMBER_AF_METERING_EXTENDED_STATUS_STRONG_MAGNETIC_FIELD_DETECTED (2)
+#define EMBER_AF_METERING_EXTENDED_STATUS_STRONG_MAGNETIC_FIELD_DETECTED_OFFSET (1)
+#define EMBER_AF_METERING_EXTENDED_STATUS_BATTERY_FAILURE (4)
+#define EMBER_AF_METERING_EXTENDED_STATUS_BATTERY_FAILURE_OFFSET (2)
+#define EMBER_AF_METERING_EXTENDED_STATUS_PROGRAM_MEMORY_ERROR (8)
+#define EMBER_AF_METERING_EXTENDED_STATUS_PROGRAM_MEMORY_ERROR_OFFSET (3)
+#define EMBER_AF_METERING_EXTENDED_STATUS_RAM_ERROR (16)
+#define EMBER_AF_METERING_EXTENDED_STATUS_RAM_ERROR_OFFSET (4)
+#define EMBER_AF_METERING_EXTENDED_STATUS_NV_MEMORY_ERROR (32)
+#define EMBER_AF_METERING_EXTENDED_STATUS_NV_MEMORY_ERROR_OFFSET (5)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SYSTEM_ERROR (64)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SYSTEM_ERROR_OFFSET (6)
+#define EMBER_AF_METERING_EXTENDED_STATUS_WATCHDOG_ERROR (128)
+#define EMBER_AF_METERING_EXTENDED_STATUS_WATCHDOG_ERROR_OFFSET (7)
+#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_DISCONNECT_FAILURE (256)
+#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_DISCONNECT_FAILURE_OFFSET (8)
+#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_CONNECT_FAILURE (512)
+#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_CONNECT_FAILURE_OFFSET (9)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SW_CHANGED_TAMPERED (1024)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SW_CHANGED_TAMPERED_OFFSET (10)
+#define EMBER_AF_METERING_EXTENDED_STATUS_CLOCK_INVALID (2048)
+#define EMBER_AF_METERING_EXTENDED_STATUS_CLOCK_INVALID_OFFSET (11)
+#define EMBER_AF_METERING_EXTENDED_STATUS_TEMPERATURE_EXCEEDED (4096)
+#define EMBER_AF_METERING_EXTENDED_STATUS_TEMPERATURE_EXCEEDED_OFFSET (12)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MOISTURE_DETECTED (8192)
+#define EMBER_AF_METERING_EXTENDED_STATUS_MOISTURE_DETECTED_OFFSET (13)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_TERMINAL_COVER_REMOVED (16777216)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_TERMINAL_COVER_REMOVED_OFFSET (24)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_INCORRECT_POLARITY (33554432)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_INCORRECT_POLARITY_OFFSET (25)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_CURRENT_WITH_NO_VOLTAGE (67108864)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_CURRENT_WITH_NO_VOLTAGE_OFFSET (26)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_LIMIT_THRESHOLD_EXCEEDED (134217728)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_LIMIT_THRESHOLD_EXCEEDED_OFFSET (27)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_UNDER_VOLTAGE (268435456)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_UNDER_VOLTAGE_OFFSET (28)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_OVER_VOLTAGE (536870912)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_OVER_VOLTAGE_OFFSET (29)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_BATTERY_COVER_REMOVED (16777216)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_BATTERY_COVER_REMOVED_OFFSET (24)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_TILT_TAMPER (33554432)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_TILT_TAMPER_OFFSET (25)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_EXCESS_FLOW (67108864)
+#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_EXCESS_FLOW_OFFSET (26)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_POWER (1073741824)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_POWER_OFFSET (30)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_VOLTAGE (2147483648)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_VOLTAGE_OFFSET (31)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_REMOTE_LOAD_CONTROL (3221225472)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_REMOTE_LOAD_CONTROL_OFFSET (30)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_BY_OTHER_REMOTE_COMMAND (4294967296)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_BY_OTHER_REMOTE_COMMAND_OFFSET (32)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_SHORT_CIRCUIT \
+ (5368709120)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_SHORT_CIRCUIT_OFFSET \
+ (30)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_OTHER (6442450944)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_OTHER_OFFSET (31)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_BI_DIRECTIONAL_OPERATION (17179869184)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_BI_DIRECTIONAL_OPERATION_OFFSET (34)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_ACTIVE_POWER_RECEIVED (34359738368)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_ACTIVE_POWER_RECEIVED_OFFSET (35)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_MODE_OF_OPERATION (68719476736)
+#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_MODE_OF_OPERATION_OFFSET (36)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_CHECK_METER (1)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_CHECK_METER_OFFSET (0)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_LOW_BATTERY (2)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_TAMPER_DETECT (4)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_FAILURE (8)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_FAILURE_OFFSET (3)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_QUALITY (16)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_QUALITY_OFFSET (4)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_LEAK_DETECT (32)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_SERVICE_DISCONNECT_OPEN (64)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_SERVICE_DISCONNECT_OPEN_OFFSET (6)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_RESERVED (128)
+#define EMBER_AF_METERING_STATUS_ELECTRICITY_RESERVED_OFFSET (7)
+#define EMBER_AF_METERING_STATUS_GAS_CHECK_METER (1)
+#define EMBER_AF_METERING_STATUS_GAS_CHECK_METER_OFFSET (0)
+#define EMBER_AF_METERING_STATUS_GAS_LOW_BATTERY (2)
+#define EMBER_AF_METERING_STATUS_GAS_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_METERING_STATUS_GAS_TAMPER_DETECT (4)
+#define EMBER_AF_METERING_STATUS_GAS_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_METERING_STATUS_GAS_NOT_DEFINED (8)
+#define EMBER_AF_METERING_STATUS_GAS_NOT_DEFINED_OFFSET (3)
+#define EMBER_AF_METERING_STATUS_GAS_LOW_PRESSURE (16)
+#define EMBER_AF_METERING_STATUS_GAS_LOW_PRESSURE_OFFSET (4)
+#define EMBER_AF_METERING_STATUS_GAS_LEAK_DETECT (32)
+#define EMBER_AF_METERING_STATUS_GAS_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_METERING_STATUS_GAS_SERVICE_DISCONNECT (64)
+#define EMBER_AF_METERING_STATUS_GAS_SERVICE_DISCONNECT_OFFSET (6)
+#define EMBER_AF_METERING_STATUS_GAS_REVERSE_FLOW (128)
+#define EMBER_AF_METERING_STATUS_GAS_REVERSE_FLOW_OFFSET (7)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_CHECK_METER (1)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_CHECK_METER_OFFSET (0)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LOW_BATTERY (2)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TAMPER_DETECT (4)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TEMPERATURE_SENSOR (8)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TEMPERATURE_SENSOR_OFFSET (3)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_BURST_DETECT (16)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_BURST_DETECT_OFFSET (4)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LEAK_DETECT (32)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_SERVICE_DISCONNECT (64)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_SERVICE_DISCONNECT_OFFSET (6)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_FLOW_SENSOR (128)
+#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_FLOW_SENSOR_OFFSET (7)
+#define EMBER_AF_METERING_STATUS_WATER_CHECK_METER (1)
+#define EMBER_AF_METERING_STATUS_WATER_CHECK_METER_OFFSET (0)
+#define EMBER_AF_METERING_STATUS_WATER_LOW_BATTERY (2)
+#define EMBER_AF_METERING_STATUS_WATER_LOW_BATTERY_OFFSET (1)
+#define EMBER_AF_METERING_STATUS_WATER_TAMPER_DETECT (4)
+#define EMBER_AF_METERING_STATUS_WATER_TAMPER_DETECT_OFFSET (2)
+#define EMBER_AF_METERING_STATUS_WATER_PIPE_EMPTY (8)
+#define EMBER_AF_METERING_STATUS_WATER_PIPE_EMPTY_OFFSET (3)
+#define EMBER_AF_METERING_STATUS_WATER_LOW_PRESSURE (16)
+#define EMBER_AF_METERING_STATUS_WATER_LOW_PRESSURE_OFFSET (4)
+#define EMBER_AF_METERING_STATUS_WATER_LEAK_DETECT (32)
+#define EMBER_AF_METERING_STATUS_WATER_LEAK_DETECT_OFFSET (5)
+#define EMBER_AF_METERING_STATUS_WATER_SERVICE_DISCONNECT (64)
+#define EMBER_AF_METERING_STATUS_WATER_SERVICE_DISCONNECT_OFFSET (6)
+#define EMBER_AF_METERING_STATUS_WATER_REVERSE_FLOW (128)
+#define EMBER_AF_METERING_STATUS_WATER_REVERSE_FLOW_OFFSET (7)
+#define EMBER_AF_MODE_FOR_SEQUENCE_HEAT_SETPOINT_FIELD_PRESENT (1)
+#define EMBER_AF_MODE_FOR_SEQUENCE_HEAT_SETPOINT_FIELD_PRESENT_OFFSET (0)
+#define EMBER_AF_MODE_FOR_SEQUENCE_COOL_SETPOINT_FIELD_PRESENT (2)
+#define EMBER_AF_MODE_FOR_SEQUENCE_COOL_SETPOINT_FIELD_PRESENT_OFFSET (1)
+#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_LOG_PAYLOAD_CONTROL (15)
+#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_LOG_PAYLOAD_CONTROL_OFFSET (0)
+#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_NUMBER_OF_EVENTS (240)
+#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_NUMBER_OF_EVENTS_OFFSET (4)
+#define EMBER_AF_OCCUPANCY_OCCUPIED (1)
+#define EMBER_AF_OCCUPANCY_OCCUPIED_OFFSET (0)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PIR (1)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PIR_OFFSET (0)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_ULTRASONIC (2)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_ULTRASONIC_OFFSET (1)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PHYSICAL_CONTACT (4)
+#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PHYSICAL_CONTACT_OFFSET (2)
+#define EMBER_AF_ON_OFF_CONTROL_ACCEPT_ONLY_WHEN_ON (1)
+#define EMBER_AF_ON_OFF_CONTROL_ACCEPT_ONLY_WHEN_ON_OFFSET (0)
+#define EMBER_AF_ORIGINATOR_ID_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED (1)
+#define EMBER_AF_ORIGINATOR_ID_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED_OFFSET (0)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DISCONNECTION_ENABLED (1)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DISCONNECTION_ENABLED_OFFSET (0)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_PREPAYMENT_ENABLED (2)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_PREPAYMENT_ENABLED_OFFSET (1)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_MANAGEMENT_ENABLED (4)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_MANAGEMENT_ENABLED_OFFSET (2)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_DISPLAY_ENABLED (16)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_DISPLAY_ENABLED_OFFSET (4)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_ACCOUNT_BASE (64)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_ACCOUNT_BASE_OFFSET (6)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CONTACTOR_FITTED (128)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CONTACTOR_FITTED_OFFSET (7)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_STANDING_CHARGE_CONFIGURATION (256)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_STANDING_CHARGE_CONFIGURATION_OFFSET (8)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_STANDING_CHARGE_CONFIGURATION (512)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_STANDING_CHARGE_CONFIGURATION_OFFSET (9)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DEBT_CONFIGURATION (1024)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DEBT_CONFIGURATION_OFFSET (10)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_DEBT_CONFIGURATION (2048)
+#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_DEBT_CONFIGURATION_OFFSET (11)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_GENERAL (1)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_GENERAL_OFFSET (0)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TARIFF_INFORMATION (8)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TARIFF_INFORMATION_OFFSET (3)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_PRICE_MATRIX (16)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_PRICE_MATRIX_OFFSET (4)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT (1024)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT_OFFSET (10)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TENANCY (4096)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TENANCY_OFFSET (12)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_SUPPLIER (8192)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_SUPPLIER_OFFSET (13)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_METER_MODE (16384)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_METER_MODE_OFFSET (14)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_TOP_UP_ADDITION (262144)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_TOP_UP_ADDITION_OFFSET (18)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_DEBT_CREDIT_ADDITION (524288)
+#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_DEBT_CREDIT_ADDITION_OFFSET (19)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_LOW_CREDIT_WARNING (1)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_LOW_CREDIT_WARNING_OFFSET (0)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ERROR (2)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ERROR_OFFSET (1)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ALREADY_USED (4)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ALREADY_USED_OFFSET (2)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_INVALID (8)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_INVALID_OFFSET (3)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_IN_USE (16)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_IN_USE_OFFSET (4)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_PERIOD_END_WARNING (32)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_PERIOD_END_WARNING_OFFSET (5)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_EC_AVAILABLE (64)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_EC_AVAILABLE_OFFSET (6)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_UNAUTHORISED_ENERGY_USE (128)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_UNAUTHORISED_ENERGY_USE_OFFSET (7)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_CREDIT (256)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_CREDIT_OFFSET (8)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_TAMPER (512)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_TAMPER_OFFSET (9)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_HES (1024)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_HES_OFFSET (10)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_PHYSICAL_ATTACK (2048)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_PHYSICAL_ATTACK_OFFSET (11)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_ELECTRONIC_ATTACK (4096)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_ELECTRONIC_ATTACK_OFFSET (12)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_A (8192)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_A_OFFSET (13)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_B (16384)
+#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_B_OFFSET (14)
+#define EMBER_AF_PRICE_CONTROL_MASK_PRICE_ACKNOWLEDGEMENT_REQUIRED (1)
+#define EMBER_AF_PRICE_CONTROL_MASK_PRICE_ACKNOWLEDGEMENT_REQUIRED_OFFSET (0)
+#define EMBER_AF_PRICE_CONTROL_MASK_TOTAL_TIERS_EXCEEDS15 (2)
+#define EMBER_AF_PRICE_CONTROL_MASK_TOTAL_TIERS_EXCEEDS15_OFFSET (1)
+#define EMBER_AF_PRICE_MATRIX_SUB_PAYLOAD_CONTROL_TOU_BASED (1)
+#define EMBER_AF_PRICE_MATRIX_SUB_PAYLOAD_CONTROL_TOU_BASED_OFFSET (0)
+#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_REGISTER_TIER (15)
+#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_REGISTER_TIER_OFFSET (0)
+#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_NUMBER_OF_PRICE_TIERS (240)
+#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_NUMBER_OF_PRICE_TIERS_OFFSET (4)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_TRAILING_DIGIT (240)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_PRICE_TIER (15)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_PRICE_TIER_OFFSET (0)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_TRAILING_DIGIT (240)
+#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_TRAILING_DIGIT_OFFSET (4)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_PRE_SNAPSHOTS (1)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_PRE_SNAPSHOTS_OFFSET (0)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_POST_SNAPSHOTS (2)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_POST_SNAPSHOTS_OFFSET (1)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_CREDIT_REGISTER (4)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_CREDIT_REGISTER_OFFSET (2)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_DEBIT_REGISTER (8)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_DEBIT_REGISTER_OFFSET (3)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_BILLING_PERIOD (16)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_BILLING_PERIOD_OFFSET (4)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TARIFF_PLAN (32)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TARIFF_PLAN_OFFSET (5)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_STANDING_CHARGE (64)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_STANDING_CHARGE_OFFSET (6)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_BLOCK_HISTORICAL_LOAD_PROFILE_INFORMATION (128)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_BLOCK_HISTORICAL_LOAD_PROFILE_INFORMATION_OFFSET (7)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_HISTORICAL_LOAD_PROFILE_INFORMATION (256)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_HISTORICAL_LOAD_PROFILE_INFORMATION_OFFSET (8)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_CONSUMER (512)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_CONSUMER_OFFSET (9)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_SUPPLIER (1024)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_SUPPLIER_OFFSET (10)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_METER_CONNECTOR_STATE_ON_OFF_ARMED (6144)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_METER_CONNECTOR_STATE_ON_OFF_ARMED_OFFSET (11)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TRANSACTION_LOG (8192)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TRANSACTION_LOG_OFFSET (13)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_PREPAYMENT_LOG (16384)
+#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_PREPAYMENT_LOG_OFFSET (14)
+#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_LOW (1)
+#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_LOW_OFFSET (0)
+#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_HIGH (2)
+#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_HIGH_OFFSET (1)
+#define EMBER_AF_PUMP_ALARM_MASK_POWER_MISSING_PHASE (4)
+#define EMBER_AF_PUMP_ALARM_MASK_POWER_MISSING_PHASE_OFFSET (2)
+#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_LOW (8)
+#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_LOW_OFFSET (3)
+#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_HIGH (16)
+#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_HIGH_OFFSET (4)
+#define EMBER_AF_PUMP_ALARM_MASK_DRY_RUNNING (32)
+#define EMBER_AF_PUMP_ALARM_MASK_DRY_RUNNING_OFFSET (5)
+#define EMBER_AF_PUMP_ALARM_MASK_MOTOR_TEMPERATURE_TOO_HIGH (64)
+#define EMBER_AF_PUMP_ALARM_MASK_MOTOR_TEMPERATURE_TOO_HIGH_OFFSET (6)
+#define EMBER_AF_PUMP_ALARM_MASK_PUMP_MOTOR_HAS_FATAL_FAILURE (128)
+#define EMBER_AF_PUMP_ALARM_MASK_PUMP_MOTOR_HAS_FATAL_FAILURE_OFFSET (7)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_TEMPERATURE_TOO_HIGH (256)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_TEMPERATURE_TOO_HIGH_OFFSET (8)
+#define EMBER_AF_PUMP_ALARM_MASK_PUMP_BLOCKED (512)
+#define EMBER_AF_PUMP_ALARM_MASK_PUMP_BLOCKED_OFFSET (9)
+#define EMBER_AF_PUMP_ALARM_MASK_SENSOR_FAILURE (1024)
+#define EMBER_AF_PUMP_ALARM_MASK_SENSOR_FAILURE_OFFSET (10)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_NON_FATAL_FAILURE (2048)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_NON_FATAL_FAILURE_OFFSET (11)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_FATAL_FAILURE (4096)
+#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_FATAL_FAILURE_OFFSET (12)
+#define EMBER_AF_PUMP_ALARM_MASK_GENERAL_FAULT (8192)
+#define EMBER_AF_PUMP_ALARM_MASK_GENERAL_FAULT_OFFSET (13)
+#define EMBER_AF_PUMP_STATUS_DEVICE_FAULT (1)
+#define EMBER_AF_PUMP_STATUS_DEVICE_FAULT_OFFSET (0)
+#define EMBER_AF_PUMP_STATUS_SUPPLYFAULT (2)
+#define EMBER_AF_PUMP_STATUS_SUPPLYFAULT_OFFSET (1)
+#define EMBER_AF_PUMP_STATUS_SPEED_LOW (4)
+#define EMBER_AF_PUMP_STATUS_SPEED_LOW_OFFSET (2)
+#define EMBER_AF_PUMP_STATUS_SPEED_HIGH (8)
+#define EMBER_AF_PUMP_STATUS_SPEED_HIGH_OFFSET (3)
+#define EMBER_AF_PUMP_STATUS_LOCAL_OVERRIDE (16)
+#define EMBER_AF_PUMP_STATUS_LOCAL_OVERRIDE_OFFSET (4)
+#define EMBER_AF_PUMP_STATUS_RUNNING (32)
+#define EMBER_AF_PUMP_STATUS_RUNNING_OFFSET (5)
+#define EMBER_AF_PUMP_STATUS_REMOTE_PRESSURE (64)
+#define EMBER_AF_PUMP_STATUS_REMOTE_PRESSURE_OFFSET (6)
+#define EMBER_AF_PUMP_STATUS_REMOTE_FLOW (128)
+#define EMBER_AF_PUMP_STATUS_REMOTE_FLOW_OFFSET (7)
+#define EMBER_AF_PUMP_STATUS_REMOTE_TEMPERATURE (256)
+#define EMBER_AF_PUMP_STATUS_REMOTE_TEMPERATURE_OFFSET (8)
+#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_REMOTE_ENABLE_FLAGS (15)
+#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_REMOTE_ENABLE_FLAGS_OFFSET (0)
+#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_DEVICE_STATUS2_STRUCTURE (240)
+#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_DEVICE_STATUS2_STRUCTURE_OFFSET (4)
+#define EMBER_AF_RESET_OPTIONS_RESET_CURRENT (1)
+#define EMBER_AF_RESET_OPTIONS_RESET_CURRENT_OFFSET (0)
+#define EMBER_AF_RESET_OPTIONS_RESET_ALL (2)
+#define EMBER_AF_RESET_OPTIONS_RESET_ALL_OFFSET (1)
+#define EMBER_AF_RESET_OPTIONS_ERASE_INDEX (4)
+#define EMBER_AF_RESET_OPTIONS_ERASE_INDEX_OFFSET (2)
+#define EMBER_AF_RESTART_OPTIONS_START_MODE1 (1)
+#define EMBER_AF_RESTART_OPTIONS_START_MODE1_OFFSET (0)
+#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE2 (2)
+#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE2_OFFSET (1)
+#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE3 (4)
+#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE3_OFFSET (2)
+#define EMBER_AF_RESTART_OPTIONS_IMMEDIATE (8)
+#define EMBER_AF_RESTART_OPTIONS_IMMEDIATE_OFFSET (3)
+#define EMBER_AF_SCENES_COPY_MODE_COPY_ALL_SCENES (1)
+#define EMBER_AF_SCENES_COPY_MODE_COPY_ALL_SCENES_OFFSET (0)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_OPERATIONAL (1)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_OPERATIONAL_OFFSET (0)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_ADJUSTING (2)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_ADJUSTING_OFFSET (1)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_OPENING (4)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_OPENING_OFFSET (2)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_MOTOR_OPENING (8)
+#define EMBER_AF_SHADE_CLOSURE_STATUS_MOTOR_OPENING_OFFSET (3)
+#define EMBER_AF_SNAPSHOT_CAUSE_GENERAL (1)
+#define EMBER_AF_SNAPSHOT_CAUSE_GENERAL_OFFSET (0)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BILLING_PERIOD (2)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BILLING_PERIOD_OFFSET (1)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BLOCK_PERIOD (4)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BLOCK_PERIOD_OFFSET (2)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TARIFF_INFORMATION (8)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TARIFF_INFORMATION_OFFSET (3)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_PRICE_MATRIX (16)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_PRICE_MATRIX_OFFSET (4)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_BLOCK_THRESHOLDS (32)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_BLOCK_THRESHOLDS_OFFSET (5)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CV (64)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CV_OFFSET (6)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CF (128)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CF_OFFSET (7)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CALENDAR (256)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CALENDAR_OFFSET (8)
+#define EMBER_AF_SNAPSHOT_CAUSE_CRITICAL_PEAK_PRICING (512)
+#define EMBER_AF_SNAPSHOT_CAUSE_CRITICAL_PEAK_PRICING_OFFSET (9)
+#define EMBER_AF_SNAPSHOT_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT (1024)
+#define EMBER_AF_SNAPSHOT_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT_OFFSET (10)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_RESOLVE_PERIOD (2048)
+#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_RESOLVE_PERIOD_OFFSET (11)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TENANCY (4096)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TENANCY_OFFSET (12)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_SUPPLIER (8192)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_SUPPLIER_OFFSET (13)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_MODE (16384)
+#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_MODE_OFFSET (14)
+#define EMBER_AF_SNAPSHOT_CAUSE_DEBT_PAYMENT (32768)
+#define EMBER_AF_SNAPSHOT_CAUSE_DEBT_PAYMENT_OFFSET (15)
+#define EMBER_AF_SNAPSHOT_CAUSE_SCHEDULED_SNAPSHOT (65536)
+#define EMBER_AF_SNAPSHOT_CAUSE_SCHEDULED_SNAPSHOT_OFFSET (16)
+#define EMBER_AF_SNAPSHOT_CAUSE_OTA_FIRMWARE_DOWNLOAD (131072)
+#define EMBER_AF_SNAPSHOT_CAUSE_OTA_FIRMWARE_DOWNLOAD_OFFSET (17)
+#define EMBER_AF_SQUAWK_INFO_MODE (240)
+#define EMBER_AF_SQUAWK_INFO_MODE_OFFSET (4)
+#define EMBER_AF_SQUAWK_INFO_STROBE (8)
+#define EMBER_AF_SQUAWK_INFO_STROBE_OFFSET (3)
+#define EMBER_AF_SQUAWK_INFO_LEVEL (3)
+#define EMBER_AF_SQUAWK_INFO_LEVEL_OFFSET (0)
+#define EMBER_AF_START_TIME_MINUTES (63)
+#define EMBER_AF_START_TIME_MINUTES_OFFSET (0)
+#define EMBER_AF_START_TIME_TIME_ENCODING (192)
+#define EMBER_AF_START_TIME_TIME_ENCODING_OFFSET (6)
+#define EMBER_AF_START_TIME_HOURS (65280)
+#define EMBER_AF_START_TIME_HOURS_OFFSET (8)
+#define EMBER_AF_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED (1)
+#define EMBER_AF_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED_OFFSET (0)
+#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_TYPE (15)
+#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_TYPE_OFFSET (0)
+#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_CHARGING_SCHEME (240)
+#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_CHARGING_SCHEME_OFFSET (4)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_INITIALIZATION_FAILURE (1)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_INITIALIZATION_FAILURE_OFFSET (0)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_HARDWARE_FAILURE (2)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_HARDWARE_FAILURE_OFFSET (1)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_SELFCALIBRATION_FAILURE (4)
+#define EMBER_AF_THERMOSTAT_ALARM_MASK_SELFCALIBRATION_FAILURE_OFFSET (2)
+#define EMBER_AF_THERMOSTAT_OCCUPANCY_OCCUPIED (1)
+#define EMBER_AF_THERMOSTAT_OCCUPANCY_OCCUPIED_OFFSET (0)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_STATE_ON (1)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_STATE_ON_OFFSET (0)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_STATE_ON (2)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_STATE_ON_OFFSET (1)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_STATE_ON (4)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_STATE_ON_OFFSET (2)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_SECOND_STAGE_STATE_ON (8)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_SECOND_STAGE_STATE_ON_OFFSET (3)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_SECOND_STAGE_STATE_ON (16)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_SECOND_STAGE_STATE_ON_OFFSET (4)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_SECOND_STAGE_STATE_ON (32)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_SECOND_STAGE_STATE_ON_OFFSET (5)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_THIRD_STAGE_STATE_ON (64)
+#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_THIRD_STAGE_STATE_ON_OFFSET (6)
+#define EMBER_AF_THERMOSTAT_SENSING_LOCAL_TEMP_SENSED_REMOTELY (1)
+#define EMBER_AF_THERMOSTAT_SENSING_LOCAL_TEMP_SENSED_REMOTELY_OFFSET (0)
+#define EMBER_AF_THERMOSTAT_SENSING_OUTDOOR_TEMP_SENSED_REMOTELY (2)
+#define EMBER_AF_THERMOSTAT_SENSING_OUTDOOR_TEMP_SENSED_REMOTELY_OFFSET (1)
+#define EMBER_AF_THERMOSTAT_SENSING_OCCUPANCY_SENSED_REMOTELY (4)
+#define EMBER_AF_THERMOSTAT_SENSING_OCCUPANCY_SENSED_REMOTELY_OFFSET (2)
+#define EMBER_AF_TIME_STATUS_MASK_MASTER_CLOCK (1)
+#define EMBER_AF_TIME_STATUS_MASK_MASTER_CLOCK_OFFSET (0)
+#define EMBER_AF_TIME_STATUS_MASK_SYNCHRONIZED (2)
+#define EMBER_AF_TIME_STATUS_MASK_SYNCHRONIZED_OFFSET (1)
+#define EMBER_AF_TIME_STATUS_MASK_MASTER_ZONE_DST (4)
+#define EMBER_AF_TIME_STATUS_MASK_MASTER_ZONE_DST_OFFSET (2)
+#define EMBER_AF_TIME_STATUS_MASK_SUPERSEDING (8)
+#define EMBER_AF_TIME_STATUS_MASK_SUPERSEDING_OFFSET (3)
+#define EMBER_AF_WARNING_INFO_MODE (240)
+#define EMBER_AF_WARNING_INFO_MODE_OFFSET (4)
+#define EMBER_AF_WARNING_INFO_STROBE (12)
+#define EMBER_AF_WARNING_INFO_STROBE_OFFSET (2)
+#define EMBER_AF_WARNING_INFO_SIREN_LEVEL (3)
+#define EMBER_AF_WARNING_INFO_SIREN_LEVEL_OFFSET (0)
+#define EMBER_AF_ZIGBEE_INFORMATION_LOGICAL_TYPE (3)
+#define EMBER_AF_ZIGBEE_INFORMATION_LOGICAL_TYPE_OFFSET (0)
+#define EMBER_AF_ZIGBEE_INFORMATION_RX_ON_WHEN_IDLE (4)
+#define EMBER_AF_ZIGBEE_INFORMATION_RX_ON_WHEN_IDLE_OFFSET (2)
+#define EMBER_AF_ZLL_INFORMATION_FACTORY_NEW (1)
+#define EMBER_AF_ZLL_INFORMATION_FACTORY_NEW_OFFSET (0)
+#define EMBER_AF_ZLL_INFORMATION_ADDRESS_ASSIGNMENT (2)
+#define EMBER_AF_ZLL_INFORMATION_ADDRESS_ASSIGNMENT_OFFSET (1)
+#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_INITIATOR (16)
+#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_INITIATOR_OFFSET (4)
+#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_PRIORITY_REQUEST (32)
+#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_PRIORITY_REQUEST_OFFSET (5)
+#define EMBER_AF_ZLL_INFORMATION_PROFILE_INTEROP (128)
+#define EMBER_AF_ZLL_INFORMATION_PROFILE_INTEROP_OFFSET (7)
diff --git a/src/darwin/Framework/CHIP/gen/gen_config.h b/src/darwin/Framework/CHIP/gen/gen_config.h
new file mode 100644
index 0000000..7c77a36
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/gen_config.h
@@ -0,0 +1,88 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// User options for plugin Binding Table Library
+#define EMBER_BINDING_TABLE_SIZE 10
+
+/**** Network Section ****/
+#define EMBER_SUPPORTED_NETWORKS (1)
+
+#define EMBER_APS_UNICAST_MESSAGE_COUNT 10
+
+/**** Cluster endpoint counts ****/
+#define EMBER_AF_BARRIER_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_COLOR_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_DOOR_LOCK_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_GROUPS_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_LEVEL_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_ON_OFF_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_SCENES_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+
+/**** Cluster Plugins ****/
+
+// Use this macro to check if the client side of the Barrier Control cluster is included
+#define ZCL_USING_BARRIER_CONTROL_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_BARRIER_CONTROL_CLIENT
+
+// Use this macro to check if the client side of the Basic cluster is included
+#define ZCL_USING_BASIC_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_BASIC_CLIENT
+
+// Use this macro to check if the client side of the Binding cluster is included
+#define ZCL_USING_BINDING_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_BINDING_CLIENT
+
+// Use this macro to check if the client side of the Color Control cluster is included
+#define ZCL_USING_COLOR_CONTROL_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_COLOR_CONTROL_CLIENT
+
+// Use this macro to check if the client side of the Door Lock cluster is included
+#define ZCL_USING_DOOR_LOCK_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_DOOR_LOCK_CLIENT
+
+// Use this macro to check if the client side of the Groups cluster is included
+#define ZCL_USING_GROUPS_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_GROUPS_CLIENT
+
+// Use this macro to check if the client side of the Identify cluster is included
+#define ZCL_USING_IDENTIFY_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_IDENTIFY_CLIENT
+
+// Use this macro to check if the client side of the Level Control cluster is included
+#define ZCL_USING_LEVEL_CONTROL_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_LEVEL_CONTROL_CLIENT
+
+// Use this macro to check if the client side of the On/off cluster is included
+#define ZCL_USING_ON_OFF_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_ON_OFF_CLIENT
+
+// Use this macro to check if the client side of the Scenes cluster is included
+#define ZCL_USING_SCENES_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_SCENES_CLIENT
+
+// Use this macro to check if the client side of the Temperature Measurement cluster is included
+#define ZCL_USING_TEMP_MEASUREMENT_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_TEMPERATURE_MEASUREMENT_CLIENT
diff --git a/src/darwin/Framework/CHIP/gen/gen_tokens.h b/src/darwin/Framework/CHIP/gen/gen_tokens.h
new file mode 100644
index 0000000..860bf57
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/gen_tokens.h
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// This file contains the tokens for attributes stored in flash
+
+// Identifier tags for tokens
+
+// Types for the tokens
+#ifdef DEFINETYPES
+#endif // DEFINETYPES
+
+// Actual token definitions
+#ifdef DEFINETOKENS
+#endif // DEFINETOKENS
+
+// Macro snippet that loads all the attributes from tokens
+#define GENERATED_TOKEN_LOADER(endpoint) \
+ do \
+ { \
+ } while (false)
+
+// Macro snippet that saves the attribute to token
+#define GENERATED_TOKEN_SAVER \
+ do \
+ { \
+ } while (false)
diff --git a/src/darwin/Framework/CHIP/gen/print-cluster.h b/src/darwin/Framework/CHIP/gen/print-cluster.h
new file mode 100644
index 0000000..4348de1
--- /dev/null
+++ b/src/darwin/Framework/CHIP/gen/print-cluster.h
@@ -0,0 +1,868 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// THIS FILE IS GENERATED BY ZAP
+
+// Prevent multiple inclusion
+#pragma once
+
+// This is the mapping of IDs to cluster names assuming a format according
+// to the "EmberAfClusterName" defined in the ZCL header.
+// The names of clusters that are not present, are removed.
+
+#if defined(ZCL_USING_BASIC_CLUSTER_SERVER) || defined(ZCL_USING_BASIC_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BASIC_CLUSTER { ZCL_BASIC_CLUSTER_ID, 0, "Basic" },
+#else
+#define CHIP_PRINTCLUSTER_BASIC_CLUSTER
+#endif
+
+#if defined(ZCL_USING_POWER_CONFIG_CLUSTER_SERVER) || defined(ZCL_USING_POWER_CONFIG_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_POWER_CONFIG_CLUSTER { ZCL_POWER_CONFIG_CLUSTER_ID, 1, "Power Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_POWER_CONFIG_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DEVICE_TEMP_CLUSTER_SERVER) || defined(ZCL_USING_DEVICE_TEMP_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DEVICE_TEMP_CLUSTER { ZCL_DEVICE_TEMP_CLUSTER_ID, 2, "Device Temperature Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_DEVICE_TEMP_CLUSTER
+#endif
+
+#if defined(ZCL_USING_IDENTIFY_CLUSTER_SERVER) || defined(ZCL_USING_IDENTIFY_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_IDENTIFY_CLUSTER { ZCL_IDENTIFY_CLUSTER_ID, 3, "Identify" },
+#else
+#define CHIP_PRINTCLUSTER_IDENTIFY_CLUSTER
+#endif
+
+#if defined(ZCL_USING_GROUPS_CLUSTER_SERVER) || defined(ZCL_USING_GROUPS_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_GROUPS_CLUSTER { ZCL_GROUPS_CLUSTER_ID, 4, "Groups" },
+#else
+#define CHIP_PRINTCLUSTER_GROUPS_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SCENES_CLUSTER_SERVER) || defined(ZCL_USING_SCENES_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SCENES_CLUSTER { ZCL_SCENES_CLUSTER_ID, 5, "Scenes" },
+#else
+#define CHIP_PRINTCLUSTER_SCENES_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ON_OFF_CLUSTER_SERVER) || defined(ZCL_USING_ON_OFF_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ON_OFF_CLUSTER { ZCL_ON_OFF_CLUSTER_ID, 6, "On/off" },
+#else
+#define CHIP_PRINTCLUSTER_ON_OFF_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ON_OFF_SWITCH_CONFIG_CLUSTER_SERVER) || defined(ZCL_USING_ON_OFF_SWITCH_CONFIG_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ON_OFF_SWITCH_CONFIG_CLUSTER { ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_ID, 7, "On/off Switch Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_ON_OFF_SWITCH_CONFIG_CLUSTER
+#endif
+
+#if defined(ZCL_USING_LEVEL_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_LEVEL_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_LEVEL_CONTROL_CLUSTER { ZCL_LEVEL_CONTROL_CLUSTER_ID, 8, "Level Control" },
+#else
+#define CHIP_PRINTCLUSTER_LEVEL_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ALARM_CLUSTER_SERVER) || defined(ZCL_USING_ALARM_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ALARM_CLUSTER { ZCL_ALARM_CLUSTER_ID, 9, "Alarms" },
+#else
+#define CHIP_PRINTCLUSTER_ALARM_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TIME_CLUSTER_SERVER) || defined(ZCL_USING_TIME_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TIME_CLUSTER { ZCL_TIME_CLUSTER_ID, 10, "Time" },
+#else
+#define CHIP_PRINTCLUSTER_TIME_CLUSTER
+#endif
+
+#if defined(ZCL_USING_RSSI_LOCATION_CLUSTER_SERVER) || defined(ZCL_USING_RSSI_LOCATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_RSSI_LOCATION_CLUSTER { ZCL_RSSI_LOCATION_CLUSTER_ID, 11, "RSSI Location" },
+#else
+#define CHIP_PRINTCLUSTER_RSSI_LOCATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BINARY_INPUT_BASIC_CLUSTER_SERVER) || defined(ZCL_USING_BINARY_INPUT_BASIC_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BINARY_INPUT_BASIC_CLUSTER { ZCL_BINARY_INPUT_BASIC_CLUSTER_ID, 15, "Binary Input (Basic)" },
+#else
+#define CHIP_PRINTCLUSTER_BINARY_INPUT_BASIC_CLUSTER
+#endif
+
+#if defined(ZCL_USING_COMMISSIONING_CLUSTER_SERVER) || defined(ZCL_USING_COMMISSIONING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_COMMISSIONING_CLUSTER { ZCL_COMMISSIONING_CLUSTER_ID, 21, "Commissioning" },
+#else
+#define CHIP_PRINTCLUSTER_COMMISSIONING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PARTITION_CLUSTER_SERVER) || defined(ZCL_USING_PARTITION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PARTITION_CLUSTER { ZCL_PARTITION_CLUSTER_ID, 22, "Partition" },
+#else
+#define CHIP_PRINTCLUSTER_PARTITION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_OTA_BOOTLOAD_CLUSTER_SERVER) || defined(ZCL_USING_OTA_BOOTLOAD_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OTA_BOOTLOAD_CLUSTER { ZCL_OTA_BOOTLOAD_CLUSTER_ID, 25, "Over the Air Bootloading" },
+#else
+#define CHIP_PRINTCLUSTER_OTA_BOOTLOAD_CLUSTER
+#endif
+
+#if defined(ZCL_USING_POWER_PROFILE_CLUSTER_SERVER) || defined(ZCL_USING_POWER_PROFILE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_POWER_PROFILE_CLUSTER { ZCL_POWER_PROFILE_CLUSTER_ID, 26, "Power Profile" },
+#else
+#define CHIP_PRINTCLUSTER_POWER_PROFILE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_APPLIANCE_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_APPLIANCE_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_APPLIANCE_CONTROL_CLUSTER { ZCL_APPLIANCE_CONTROL_CLUSTER_ID, 27, "Appliance Control" },
+#else
+#define CHIP_PRINTCLUSTER_APPLIANCE_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_POLL_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_POLL_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_POLL_CONTROL_CLUSTER { ZCL_POLL_CONTROL_CLUSTER_ID, 32, "Poll Control" },
+#else
+#define CHIP_PRINTCLUSTER_POLL_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_GREEN_POWER_CLUSTER_SERVER) || defined(ZCL_USING_GREEN_POWER_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_GREEN_POWER_CLUSTER { ZCL_GREEN_POWER_CLUSTER_ID, 33, "Green Power" },
+#else
+#define CHIP_PRINTCLUSTER_GREEN_POWER_CLUSTER
+#endif
+
+#if defined(ZCL_USING_KEEPALIVE_CLUSTER_SERVER) || defined(ZCL_USING_KEEPALIVE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_KEEPALIVE_CLUSTER { ZCL_KEEPALIVE_CLUSTER_ID, 37, "Keep-Alive" },
+#else
+#define CHIP_PRINTCLUSTER_KEEPALIVE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SHADE_CONFIG_CLUSTER_SERVER) || defined(ZCL_USING_SHADE_CONFIG_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SHADE_CONFIG_CLUSTER { ZCL_SHADE_CONFIG_CLUSTER_ID, 256, "Shade Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_SHADE_CONFIG_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DOOR_LOCK_CLUSTER_SERVER) || defined(ZCL_USING_DOOR_LOCK_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DOOR_LOCK_CLUSTER { ZCL_DOOR_LOCK_CLUSTER_ID, 257, "Door Lock" },
+#else
+#define CHIP_PRINTCLUSTER_DOOR_LOCK_CLUSTER
+#endif
+
+#if defined(ZCL_USING_WINDOW_COVERING_CLUSTER_SERVER) || defined(ZCL_USING_WINDOW_COVERING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_WINDOW_COVERING_CLUSTER { ZCL_WINDOW_COVERING_CLUSTER_ID, 258, "Window Covering" },
+#else
+#define CHIP_PRINTCLUSTER_WINDOW_COVERING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BARRIER_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_BARRIER_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BARRIER_CONTROL_CLUSTER { ZCL_BARRIER_CONTROL_CLUSTER_ID, 259, "Barrier Control" },
+#else
+#define CHIP_PRINTCLUSTER_BARRIER_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PUMP_CONFIG_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_PUMP_CONFIG_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PUMP_CONFIG_CONTROL_CLUSTER { ZCL_PUMP_CONFIG_CONTROL_CLUSTER_ID, 512, "Pump Configuration and Control" },
+#else
+#define CHIP_PRINTCLUSTER_PUMP_CONFIG_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_THERMOSTAT_CLUSTER_SERVER) || defined(ZCL_USING_THERMOSTAT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_THERMOSTAT_CLUSTER { ZCL_THERMOSTAT_CLUSTER_ID, 513, "Thermostat" },
+#else
+#define CHIP_PRINTCLUSTER_THERMOSTAT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_FAN_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_FAN_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_FAN_CONTROL_CLUSTER { ZCL_FAN_CONTROL_CLUSTER_ID, 514, "Fan Control" },
+#else
+#define CHIP_PRINTCLUSTER_FAN_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DEHUMID_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_DEHUMID_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DEHUMID_CONTROL_CLUSTER { ZCL_DEHUMID_CONTROL_CLUSTER_ID, 515, "Dehumidification Control" },
+#else
+#define CHIP_PRINTCLUSTER_DEHUMID_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_THERMOSTAT_UI_CONFIG_CLUSTER_SERVER) || defined(ZCL_USING_THERMOSTAT_UI_CONFIG_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_THERMOSTAT_UI_CONFIG_CLUSTER \
+ { ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_ID, 516, "Thermostat User Interface Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_THERMOSTAT_UI_CONFIG_CLUSTER
+#endif
+
+#if defined(ZCL_USING_COLOR_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_COLOR_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_COLOR_CONTROL_CLUSTER { ZCL_COLOR_CONTROL_CLUSTER_ID, 768, "Color Control" },
+#else
+#define CHIP_PRINTCLUSTER_COLOR_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BALLAST_CONFIGURATION_CLUSTER_SERVER) || defined(ZCL_USING_BALLAST_CONFIGURATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BALLAST_CONFIGURATION_CLUSTER { ZCL_BALLAST_CONFIGURATION_CLUSTER_ID, 769, "Ballast Configuration" },
+#else
+#define CHIP_PRINTCLUSTER_BALLAST_CONFIGURATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ILLUM_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_ILLUM_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ILLUM_MEASUREMENT_CLUSTER { ZCL_ILLUM_MEASUREMENT_CLUSTER_ID, 1024, "Illuminance Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_ILLUM_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ILLUM_LEVEL_SENSING_CLUSTER_SERVER) || defined(ZCL_USING_ILLUM_LEVEL_SENSING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ILLUM_LEVEL_SENSING_CLUSTER { ZCL_ILLUM_LEVEL_SENSING_CLUSTER_ID, 1025, "Illuminance Level Sensing" },
+#else
+#define CHIP_PRINTCLUSTER_ILLUM_LEVEL_SENSING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TEMP_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_TEMP_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TEMP_MEASUREMENT_CLUSTER { ZCL_TEMP_MEASUREMENT_CLUSTER_ID, 1026, "Temperature Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_TEMP_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PRESSURE_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_PRESSURE_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PRESSURE_MEASUREMENT_CLUSTER { ZCL_PRESSURE_MEASUREMENT_CLUSTER_ID, 1027, "Pressure Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_PRESSURE_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_FLOW_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_FLOW_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_FLOW_MEASUREMENT_CLUSTER { ZCL_FLOW_MEASUREMENT_CLUSTER_ID, 1028, "Flow Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_FLOW_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER \
+ { ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_ID, 1029, "Relative Humidity Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_OCCUPANCY_SENSING_CLUSTER_SERVER) || defined(ZCL_USING_OCCUPANCY_SENSING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OCCUPANCY_SENSING_CLUSTER { ZCL_OCCUPANCY_SENSING_CLUSTER_ID, 1030, "Occupancy Sensing" },
+#else
+#define CHIP_PRINTCLUSTER_OCCUPANCY_SENSING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1036, "Carbon Monoxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1037, "Carbon Dioxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1038, "Ethylene Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1039, "Ethylene Oxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1040, "Hydrogen Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1041, "Hydrogen Sulphide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1042, "Nitric Oxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1043, "Nitrogen Dioxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1044, "Oxygen Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1045, "Ozone Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1046, "Sulfur Dioxide Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1047, "Dissolved Oxygen Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1048, "Bromate Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1049, "Chloramines Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1050, "Chlorine Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1051, \
+ "Fecal coliform and E. Coli Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1052, "Fluoride Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1053, "Haloacetic Acids Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1054, "Total Trihalomethanes Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1055, "Total Coliform Bacteria Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1056, "Turbidity Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1057, "Copper Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1058, "Lead Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1059, "Manganese Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1060, "Sulfate Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1061, "Bromodichloromethane Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1062, "Bromoform Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1063, "Chlorodibromomethane Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1064, "Chloroform Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_SERVER) || \
+ defined(ZCL_USING_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ { ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_ID, 1065, "Sodium Concentration Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_IAS_ZONE_CLUSTER_SERVER) || defined(ZCL_USING_IAS_ZONE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_IAS_ZONE_CLUSTER { ZCL_IAS_ZONE_CLUSTER_ID, 1280, "IAS Zone" },
+#else
+#define CHIP_PRINTCLUSTER_IAS_ZONE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_IAS_ACE_CLUSTER_SERVER) || defined(ZCL_USING_IAS_ACE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_IAS_ACE_CLUSTER { ZCL_IAS_ACE_CLUSTER_ID, 1281, "IAS ACE" },
+#else
+#define CHIP_PRINTCLUSTER_IAS_ACE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_IAS_WD_CLUSTER_SERVER) || defined(ZCL_USING_IAS_WD_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_IAS_WD_CLUSTER { ZCL_IAS_WD_CLUSTER_ID, 1282, "IAS WD" },
+#else
+#define CHIP_PRINTCLUSTER_IAS_WD_CLUSTER
+#endif
+
+#if defined(ZCL_USING_GENERIC_TUNNEL_CLUSTER_SERVER) || defined(ZCL_USING_GENERIC_TUNNEL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_GENERIC_TUNNEL_CLUSTER { ZCL_GENERIC_TUNNEL_CLUSTER_ID, 1536, "Generic Tunnel" },
+#else
+#define CHIP_PRINTCLUSTER_GENERIC_TUNNEL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BACNET_PROTOCOL_TUNNEL_CLUSTER_SERVER) || defined(ZCL_USING_BACNET_PROTOCOL_TUNNEL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BACNET_PROTOCOL_TUNNEL_CLUSTER { ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_ID, 1537, "BACnet Protocol Tunnel" },
+#else
+#define CHIP_PRINTCLUSTER_BACNET_PROTOCOL_TUNNEL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_11073_PROTOCOL_TUNNEL_CLUSTER_SERVER) || defined(ZCL_USING_11073_PROTOCOL_TUNNEL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_11073_PROTOCOL_TUNNEL_CLUSTER { ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_ID, 1556, "11073 Protocol Tunnel" },
+#else
+#define CHIP_PRINTCLUSTER_11073_PROTOCOL_TUNNEL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ISO7816_PROTOCOL_TUNNEL_CLUSTER_SERVER) || defined(ZCL_USING_ISO7816_PROTOCOL_TUNNEL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ISO7816_PROTOCOL_TUNNEL_CLUSTER \
+ { ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_ID, 1557, "ISO 7816 Protocol Tunnel" },
+#else
+#define CHIP_PRINTCLUSTER_ISO7816_PROTOCOL_TUNNEL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PRICE_CLUSTER_SERVER) || defined(ZCL_USING_PRICE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PRICE_CLUSTER { ZCL_PRICE_CLUSTER_ID, 1792, "Price" },
+#else
+#define CHIP_PRINTCLUSTER_PRICE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER \
+ { ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID, 1793, "Demand Response and Load Control" },
+#else
+#define CHIP_PRINTCLUSTER_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SIMPLE_METERING_CLUSTER_SERVER) || defined(ZCL_USING_SIMPLE_METERING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SIMPLE_METERING_CLUSTER { ZCL_SIMPLE_METERING_CLUSTER_ID, 1794, "Simple Metering" },
+#else
+#define CHIP_PRINTCLUSTER_SIMPLE_METERING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_MESSAGING_CLUSTER_SERVER) || defined(ZCL_USING_MESSAGING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_MESSAGING_CLUSTER { ZCL_MESSAGING_CLUSTER_ID, 1795, "Messaging" },
+#else
+#define CHIP_PRINTCLUSTER_MESSAGING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_TUNNELING_CLUSTER_SERVER) || defined(ZCL_USING_TUNNELING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_TUNNELING_CLUSTER { ZCL_TUNNELING_CLUSTER_ID, 1796, "Tunneling" },
+#else
+#define CHIP_PRINTCLUSTER_TUNNELING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PREPAYMENT_CLUSTER_SERVER) || defined(ZCL_USING_PREPAYMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PREPAYMENT_CLUSTER { ZCL_PREPAYMENT_CLUSTER_ID, 1797, "Prepayment" },
+#else
+#define CHIP_PRINTCLUSTER_PREPAYMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ENERGY_MANAGEMENT_CLUSTER_SERVER) || defined(ZCL_USING_ENERGY_MANAGEMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ENERGY_MANAGEMENT_CLUSTER { ZCL_ENERGY_MANAGEMENT_CLUSTER_ID, 1798, "Energy Management" },
+#else
+#define CHIP_PRINTCLUSTER_ENERGY_MANAGEMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CALENDAR_CLUSTER_SERVER) || defined(ZCL_USING_CALENDAR_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CALENDAR_CLUSTER { ZCL_CALENDAR_CLUSTER_ID, 1799, "Calendar" },
+#else
+#define CHIP_PRINTCLUSTER_CALENDAR_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DEVICE_MANAGEMENT_CLUSTER_SERVER) || defined(ZCL_USING_DEVICE_MANAGEMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DEVICE_MANAGEMENT_CLUSTER { ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, 1800, "Device Management" },
+#else
+#define CHIP_PRINTCLUSTER_DEVICE_MANAGEMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_EVENTS_CLUSTER_SERVER) || defined(ZCL_USING_EVENTS_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_EVENTS_CLUSTER { ZCL_EVENTS_CLUSTER_ID, 1801, "Events" },
+#else
+#define CHIP_PRINTCLUSTER_EVENTS_CLUSTER
+#endif
+
+#if defined(ZCL_USING_MDU_PAIRING_CLUSTER_SERVER) || defined(ZCL_USING_MDU_PAIRING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_MDU_PAIRING_CLUSTER { ZCL_MDU_PAIRING_CLUSTER_ID, 1802, "MDU Pairing" },
+#else
+#define CHIP_PRINTCLUSTER_MDU_PAIRING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SUB_GHZ_CLUSTER_SERVER) || defined(ZCL_USING_SUB_GHZ_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SUB_GHZ_CLUSTER { ZCL_SUB_GHZ_CLUSTER_ID, 1803, "Sub-GHz" },
+#else
+#define CHIP_PRINTCLUSTER_SUB_GHZ_CLUSTER
+#endif
+
+#if defined(ZCL_USING_KEY_ESTABLISHMENT_CLUSTER_SERVER) || defined(ZCL_USING_KEY_ESTABLISHMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_KEY_ESTABLISHMENT_CLUSTER { ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, 2048, "Key Establishment" },
+#else
+#define CHIP_PRINTCLUSTER_KEY_ESTABLISHMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_INFORMATION_CLUSTER_SERVER) || defined(ZCL_USING_INFORMATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_INFORMATION_CLUSTER { ZCL_INFORMATION_CLUSTER_ID, 2304, "Information" },
+#else
+#define CHIP_PRINTCLUSTER_INFORMATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DATA_SHARING_CLUSTER_SERVER) || defined(ZCL_USING_DATA_SHARING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DATA_SHARING_CLUSTER { ZCL_DATA_SHARING_CLUSTER_ID, 2305, "Data Sharing" },
+#else
+#define CHIP_PRINTCLUSTER_DATA_SHARING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_GAMING_CLUSTER_SERVER) || defined(ZCL_USING_GAMING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_GAMING_CLUSTER { ZCL_GAMING_CLUSTER_ID, 2306, "Gaming" },
+#else
+#define CHIP_PRINTCLUSTER_GAMING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DATA_RATE_CONTROL_CLUSTER_SERVER) || defined(ZCL_USING_DATA_RATE_CONTROL_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DATA_RATE_CONTROL_CLUSTER { ZCL_DATA_RATE_CONTROL_CLUSTER_ID, 2307, "Data Rate Control" },
+#else
+#define CHIP_PRINTCLUSTER_DATA_RATE_CONTROL_CLUSTER
+#endif
+
+#if defined(ZCL_USING_VOICE_OVER_ZIGBEE_CLUSTER_SERVER) || defined(ZCL_USING_VOICE_OVER_ZIGBEE_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_VOICE_OVER_ZIGBEE_CLUSTER { ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID, 2308, "Voice over ZigBee" },
+#else
+#define CHIP_PRINTCLUSTER_VOICE_OVER_ZIGBEE_CLUSTER
+#endif
+
+#if defined(ZCL_USING_CHATTING_CLUSTER_SERVER) || defined(ZCL_USING_CHATTING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_CHATTING_CLUSTER { ZCL_CHATTING_CLUSTER_ID, 2309, "Chatting" },
+#else
+#define CHIP_PRINTCLUSTER_CHATTING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_PAYMENT_CLUSTER_SERVER) || defined(ZCL_USING_PAYMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_PAYMENT_CLUSTER { ZCL_PAYMENT_CLUSTER_ID, 2561, "Payment" },
+#else
+#define CHIP_PRINTCLUSTER_PAYMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BILLING_CLUSTER_SERVER) || defined(ZCL_USING_BILLING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BILLING_CLUSTER { ZCL_BILLING_CLUSTER_ID, 2562, "Billing" },
+#else
+#define CHIP_PRINTCLUSTER_BILLING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_APPLIANCE_IDENTIFICATION_CLUSTER_SERVER) || defined(ZCL_USING_APPLIANCE_IDENTIFICATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_APPLIANCE_IDENTIFICATION_CLUSTER \
+ { ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_ID, 2816, "Appliance Identification" },
+#else
+#define CHIP_PRINTCLUSTER_APPLIANCE_IDENTIFICATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_METER_IDENTIFICATION_CLUSTER_SERVER) || defined(ZCL_USING_METER_IDENTIFICATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_METER_IDENTIFICATION_CLUSTER { ZCL_METER_IDENTIFICATION_CLUSTER_ID, 2817, "Meter Identification" },
+#else
+#define CHIP_PRINTCLUSTER_METER_IDENTIFICATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_SERVER) || defined(ZCL_USING_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_APPLIANCE_EVENTS_AND_ALERT_CLUSTER \
+ { ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID, 2818, "Appliance Events and Alert" },
+#else
+#define CHIP_PRINTCLUSTER_APPLIANCE_EVENTS_AND_ALERT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_APPLIANCE_STATISTICS_CLUSTER_SERVER) || defined(ZCL_USING_APPLIANCE_STATISTICS_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_APPLIANCE_STATISTICS_CLUSTER { ZCL_APPLIANCE_STATISTICS_CLUSTER_ID, 2819, "Appliance Statistics" },
+#else
+#define CHIP_PRINTCLUSTER_APPLIANCE_STATISTICS_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ELECTRICAL_MEASUREMENT_CLUSTER_SERVER) || defined(ZCL_USING_ELECTRICAL_MEASUREMENT_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ELECTRICAL_MEASUREMENT_CLUSTER { ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID, 2820, "Electrical Measurement" },
+#else
+#define CHIP_PRINTCLUSTER_ELECTRICAL_MEASUREMENT_CLUSTER
+#endif
+
+#if defined(ZCL_USING_DIAGNOSTICS_CLUSTER_SERVER) || defined(ZCL_USING_DIAGNOSTICS_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_DIAGNOSTICS_CLUSTER { ZCL_DIAGNOSTICS_CLUSTER_ID, 2821, "Diagnostics" },
+#else
+#define CHIP_PRINTCLUSTER_DIAGNOSTICS_CLUSTER
+#endif
+
+#if defined(ZCL_USING_ZLL_COMMISSIONING_CLUSTER_SERVER) || defined(ZCL_USING_ZLL_COMMISSIONING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_ZLL_COMMISSIONING_CLUSTER { ZCL_ZLL_COMMISSIONING_CLUSTER_ID, 4096, "ZLL Commissioning" },
+#else
+#define CHIP_PRINTCLUSTER_ZLL_COMMISSIONING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_BINDING_CLUSTER_SERVER) || defined(ZCL_USING_BINDING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BINDING_CLUSTER { ZCL_BINDING_CLUSTER_ID, 61440, "Binding" },
+#else
+#define CHIP_PRINTCLUSTER_BINDING_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SAMPLE_MFG_SPECIFIC_CLUSTER_SERVER) || defined(ZCL_USING_SAMPLE_MFG_SPECIFIC_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER { ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID, 64512, "Sample Mfg Specific Cluster" },
+#else
+#define CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SAMPLE_MFG_SPECIFIC_CLUSTER_2_SERVER) || defined(ZCL_USING_SAMPLE_MFG_SPECIFIC_CLUSTER_2_CLIENT)
+#define CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER_2 \
+ { ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_ID, 64512, "Sample Mfg Specific Cluster 2" },
+#else
+#define CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER_2
+#endif
+
+#if defined(ZCL_USING_OTA_CONFIGURATION_CLUSTER_SERVER) || defined(ZCL_USING_OTA_CONFIGURATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_OTA_CONFIGURATION_CLUSTER { ZCL_OTA_CONFIGURATION_CLUSTER_ID, 64513, "Configuration Cluster" },
+#else
+#define CHIP_PRINTCLUSTER_OTA_CONFIGURATION_CLUSTER
+#endif
+
+#if defined(ZCL_USING_MFGLIB_CLUSTER_SERVER) || defined(ZCL_USING_MFGLIB_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_MFGLIB_CLUSTER { ZCL_MFGLIB_CLUSTER_ID, 64514, "MFGLIB Cluster" },
+#else
+#define CHIP_PRINTCLUSTER_MFGLIB_CLUSTER
+#endif
+
+#if defined(ZCL_USING_SL_WWAH_CLUSTER_SERVER) || defined(ZCL_USING_SL_WWAH_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_SL_WWAH_CLUSTER { ZCL_SL_WWAH_CLUSTER_ID, 64599, "SL Works With All Hubs" },
+#else
+#define CHIP_PRINTCLUSTER_SL_WWAH_CLUSTER
+#endif
+
+#define CLUSTER_IDS_TO_NAMES \
+ CHIP_PRINTCLUSTER_BASIC_CLUSTER \
+ CHIP_PRINTCLUSTER_POWER_CONFIG_CLUSTER \
+ CHIP_PRINTCLUSTER_DEVICE_TEMP_CLUSTER \
+ CHIP_PRINTCLUSTER_IDENTIFY_CLUSTER \
+ CHIP_PRINTCLUSTER_GROUPS_CLUSTER \
+ CHIP_PRINTCLUSTER_SCENES_CLUSTER \
+ CHIP_PRINTCLUSTER_ON_OFF_CLUSTER \
+ CHIP_PRINTCLUSTER_ON_OFF_SWITCH_CONFIG_CLUSTER \
+ CHIP_PRINTCLUSTER_LEVEL_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_ALARM_CLUSTER \
+ CHIP_PRINTCLUSTER_TIME_CLUSTER \
+ CHIP_PRINTCLUSTER_RSSI_LOCATION_CLUSTER \
+ CHIP_PRINTCLUSTER_BINARY_INPUT_BASIC_CLUSTER \
+ CHIP_PRINTCLUSTER_COMMISSIONING_CLUSTER \
+ CHIP_PRINTCLUSTER_PARTITION_CLUSTER \
+ CHIP_PRINTCLUSTER_OTA_BOOTLOAD_CLUSTER \
+ CHIP_PRINTCLUSTER_POWER_PROFILE_CLUSTER \
+ CHIP_PRINTCLUSTER_APPLIANCE_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_POLL_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_GREEN_POWER_CLUSTER \
+ CHIP_PRINTCLUSTER_KEEPALIVE_CLUSTER \
+ CHIP_PRINTCLUSTER_SHADE_CONFIG_CLUSTER \
+ CHIP_PRINTCLUSTER_DOOR_LOCK_CLUSTER \
+ CHIP_PRINTCLUSTER_WINDOW_COVERING_CLUSTER \
+ CHIP_PRINTCLUSTER_BARRIER_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_PUMP_CONFIG_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_THERMOSTAT_CLUSTER \
+ CHIP_PRINTCLUSTER_FAN_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_DEHUMID_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_THERMOSTAT_UI_CONFIG_CLUSTER \
+ CHIP_PRINTCLUSTER_COLOR_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_BALLAST_CONFIGURATION_CLUSTER \
+ CHIP_PRINTCLUSTER_ILLUM_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_ILLUM_LEVEL_SENSING_CLUSTER \
+ CHIP_PRINTCLUSTER_TEMP_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_PRESSURE_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_FLOW_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_OCCUPANCY_SENSING_CLUSTER \
+ CHIP_PRINTCLUSTER_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_IAS_ZONE_CLUSTER \
+ CHIP_PRINTCLUSTER_IAS_ACE_CLUSTER \
+ CHIP_PRINTCLUSTER_IAS_WD_CLUSTER \
+ CHIP_PRINTCLUSTER_GENERIC_TUNNEL_CLUSTER \
+ CHIP_PRINTCLUSTER_BACNET_PROTOCOL_TUNNEL_CLUSTER \
+ CHIP_PRINTCLUSTER_11073_PROTOCOL_TUNNEL_CLUSTER \
+ CHIP_PRINTCLUSTER_ISO7816_PROTOCOL_TUNNEL_CLUSTER \
+ CHIP_PRINTCLUSTER_PRICE_CLUSTER \
+ CHIP_PRINTCLUSTER_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_SIMPLE_METERING_CLUSTER \
+ CHIP_PRINTCLUSTER_MESSAGING_CLUSTER \
+ CHIP_PRINTCLUSTER_TUNNELING_CLUSTER \
+ CHIP_PRINTCLUSTER_PREPAYMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_ENERGY_MANAGEMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_CALENDAR_CLUSTER \
+ CHIP_PRINTCLUSTER_DEVICE_MANAGEMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_EVENTS_CLUSTER \
+ CHIP_PRINTCLUSTER_MDU_PAIRING_CLUSTER \
+ CHIP_PRINTCLUSTER_SUB_GHZ_CLUSTER \
+ CHIP_PRINTCLUSTER_KEY_ESTABLISHMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_INFORMATION_CLUSTER \
+ CHIP_PRINTCLUSTER_DATA_SHARING_CLUSTER \
+ CHIP_PRINTCLUSTER_GAMING_CLUSTER \
+ CHIP_PRINTCLUSTER_DATA_RATE_CONTROL_CLUSTER \
+ CHIP_PRINTCLUSTER_VOICE_OVER_ZIGBEE_CLUSTER \
+ CHIP_PRINTCLUSTER_CHATTING_CLUSTER \
+ CHIP_PRINTCLUSTER_PAYMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_BILLING_CLUSTER \
+ CHIP_PRINTCLUSTER_APPLIANCE_IDENTIFICATION_CLUSTER \
+ CHIP_PRINTCLUSTER_METER_IDENTIFICATION_CLUSTER \
+ CHIP_PRINTCLUSTER_APPLIANCE_EVENTS_AND_ALERT_CLUSTER \
+ CHIP_PRINTCLUSTER_APPLIANCE_STATISTICS_CLUSTER \
+ CHIP_PRINTCLUSTER_ELECTRICAL_MEASUREMENT_CLUSTER \
+ CHIP_PRINTCLUSTER_DIAGNOSTICS_CLUSTER \
+ CHIP_PRINTCLUSTER_ZLL_COMMISSIONING_CLUSTER \
+ CHIP_PRINTCLUSTER_BINDING_CLUSTER \
+ CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER \
+ CHIP_PRINTCLUSTER_SAMPLE_MFG_SPECIFIC_CLUSTER_2 \
+ CHIP_PRINTCLUSTER_OTA_CONFIGURATION_CLUSTER \
+ CHIP_PRINTCLUSTER_MFGLIB_CLUSTER \
+ CHIP_PRINTCLUSTER_SL_WWAH_CLUSTER
+
+#define MAX_CLUSTER_NAME_LENGTH 52