diff --git a/doc/nrf/protocols/matter/getting_started/custom_clusters.rst b/doc/nrf/protocols/matter/getting_started/custom_clusters.rst index 508638b6dd5a..c045e4ba32f6 100644 --- a/doc/nrf/protocols/matter/getting_started/custom_clusters.rst +++ b/doc/nrf/protocols/matter/getting_started/custom_clusters.rst @@ -108,13 +108,13 @@ See the description of each element in the following tabs: 0xFFF1FC01 MY_NEW_CLUSTER The MyNewCluster cluster showcases a cluster manufacturer extensions - MyAttribute - + MyAttribute + Command that takes two uint8 arguments and returns their sum. - + Event that is generated by the server. @@ -153,6 +153,8 @@ See the description of each element in the following tabs: * ``source`` - Specifies whether the event originates from the client or server. * ``code`` - A unique identifier for the event within the cluster. * ``name`` - The name of the event. + * ``priority`` - The priority of the event. + The valid values are ``debug``, ``info``, and ``critical``. * ``optional`` - Indicates whether the event is optional. * ``description`` - A brief description of the event's purpose and functionality. * ``arg`` - An argument for the event, specifying its name and type. @@ -169,7 +171,7 @@ See the description of each element in the following tabs: - + Event that is generated by the server. @@ -297,13 +299,13 @@ You can use the following template for the :file:`MyCluster.xml` file: 0xFFF1FC01 MY_NEW_CLUSTER The MyNewCluster cluster showcases a cluster manufacturer extensions - MyAttribute - + MyAttribute + Command that takes two uint8 arguments and returns their sum. - + Event that is generated by the server. @@ -315,7 +317,7 @@ You can use the following template for the :file:`MyCluster.xml` file: - + Event that is generated by the server. @@ -361,7 +363,7 @@ This guide focuses on the :ref:`ug_matter_gs_tools_matter_west_commands_zap_tool .. code-block:: - west zap-gui -j ./zcl.json ./MyCluster.xml + west zap-gui -j ./zcl.json --clusters ./MyCluster.xml This example command copies the original :file:`/src/app/zap-templates/zcl/zcl.json` file, adds the :file:`MyCluster.xml` cluster, and saves the new :file:`zcl.json` file in the sample directory. The newly generated :file:`zcl.json` file is used as an input to the ZAP tool. diff --git a/samples/matter/manufacturer_specific/README.rst b/samples/matter/manufacturer_specific/README.rst index a0d42155f1e4..d0f40c31fd26 100644 --- a/samples/matter/manufacturer_specific/README.rst +++ b/samples/matter/manufacturer_specific/README.rst @@ -37,32 +37,33 @@ The development kits for this sample offer the following IPv6 network support fo Overview ******** + +The sample starts the Bluetooth® LE advertising automatically and prepares the Matter device for commissioning into a Matter-enabled IPv6 network. + .. tabs:: .. group-tab:: nRF52, nRF53 and nRF70 DKs - The sample starts the Bluetooth® LE advertising automatically and prepares the Matter device for commissioning into a Matter-enabled IPv6 network. The sample uses the **LED 1** to show the state of the connection. You can press **Button 1** to start the factory reset when needed. **Button 2** is used to set the state of the ``NordicDevkit`` cluster's attribute, ``UserButton``. - Matter command ``SetLED`` is used to control the state of ``UserLED``. - It takes one argument - the action to be performed (``0`` to turn the LED off, ``1`` to turn it on, ``2`` to toggle the state). **LED 2** reflects the state of the ``UserLED``. - The ``NordicDevkit`` cluster introduces a writable ``DevKitName`` attribute, of string type as well. - The sample additionally extends the ``Basic Information`` cluster with a ``RandomNumber`` attribute and ``GenerateRandom`` command that updates the ``RandomNumber`` with a random value. .. group-tab:: nRF54 DKs - The sample starts the Bluetooth LE advertising automatically and prepares the Matter device for commissioning into a Matter-enabled IPv6 network. The sample uses the **LED 0** to show the state of the connection. You can press **Button 0** to start the factory reset when needed. **Button 1** is used to set the state of the ``NordicDevkit`` cluster's attribute, ``UserButton``. - Matter command ``SetLED`` is used to control the state of ``UserLED``. - It takes one argument - the action to be performed (``0`` to turn the LED off, ``1`` to turn it on, ``2`` to toggle the state). **LED 1** reflects the state of the ``UserLED``. - The ``NordicDevkit`` cluster introduces a writable ``DevKitName`` attribute, of string type as well. - The sample additionally extends the ``Basic Information`` cluster with a ``RandomNumber`` attribute and ``GenerateRandom`` command that updates the ``RandomNumber`` with a random value. +The Matter command ``SetLED`` is used to control the state of ``UserLED``. +It takes one argument - the action to be performed (``0`` to turn the LED off, ``1`` to turn it on, ``2`` to toggle the state). +The ``UserButtonChanged`` event is generated when the ``UserButton`` attribute is changed. + +The ``NordicDevkit`` cluster introduces a writable ``DevKitName`` attribute, of string type as well. +The sample additionally extends the ``Basic Information`` cluster with a ``RandomNumber`` attribute and ``GenerateRandom`` command that updates the ``RandomNumber`` with a random value. +The ``RandomNumberChanged`` event is generated when the ``RandomNumber`` attribute is changed. +The ``RandomNumber`` attribute value is not persistent and it is generated on each application's boot. Custom manufacturer-specific cluster ==================================== @@ -132,7 +133,7 @@ User interface .. include:: /includes/matter_sample_button.txt Button 2: - Sets the state of ``UserButton`` attribute in the ``NordicDevkit`` cluster. + Sets the state of ``UserButton`` attribute in the ``NordicDevkit`` cluster to ``true`` on press and ``false`` on release. .. include:: /includes/matter_segger_usb.txt @@ -148,7 +149,7 @@ User interface .. include:: /includes/matter_sample_button.txt Button 1: - Sets the state of ``UserButton`` attribute in the ``NordicDevkit`` cluster. + Sets the state of ``UserButton`` attribute in the ``NordicDevkit`` cluster to ``true`` on press and ``false`` on release. .. include:: /includes/matter_segger_usb.txt @@ -234,16 +235,16 @@ To test ``NordicDevkit`` cluster's attributes and commands, complete the followi .. parsed-literal:: :class: highlight - any read-by-id read-by-id 0xFFF1FC01 *attribute-id* 1 1 + any read-by-id 0xFFF1FC01 *attribute-id* 1 1 - * *attribute-id* is the attribute's ID, equal to ``1`` for ``DevKitName``, ``2`` for ``UserLED`` and ``3`` for ``UserButton`` attributes for the ``NordicDevkit`` cluster in this sample. + * *attribute-id* is the attribute's ID, equal to ``0xFFF10000`` for ``DevKitName``, ``0xFFF10001`` for ``UserLED`` and ``0xFFF10002`` for ``UserButton`` attributes for the ``NordicDevkit`` cluster in this sample. #. Verify that all attributes have been read correctly and are equal to the default values defined in cluster's configuration. #. Write the ``DevkitName`` attribute: .. parsed-literal:: :class: highlight - any write-by-id 0xFFF1FC01 1 "NewName" 1 1 + any write-by-id 0xFFF1FC01 0xFFF10000 "NewName" 1 1 #. Read the ``DevkitName`` attribute again to check if it has changed. #. Send the ``SetLED`` command to the device to control the LED state: @@ -251,7 +252,7 @@ To test ``NordicDevkit`` cluster's attributes and commands, complete the followi .. parsed-literal:: :class: highlight - any command-by-id 0xFFF1FC01 0 '{ "0x0": "u:*action*" }' 1 1 + any command-by-id 0xFFF1FC01 0xFFF10000 '{ "0x0": "u:*action*" }' 1 1 * *action* is the action that should be performed on LED attribute: ``0`` to turn the LED off, ``1`` to turn it on, ``2`` to toggle the state. @@ -261,9 +262,16 @@ To test ``NordicDevkit`` cluster's attributes and commands, complete the followi .. parsed-literal:: :class: highlight - any subscribe-by-id 0xFFF1FC01 3 0 120 1 1 + any subscribe-by-id 0xFFF1FC01 0xFFF10002 0 120 1 1 #. Press the button assigned to the ``UserButton`` and check if the attribute state is updated in the chip-tool. +#. Read the ``UserButtonChanged`` event to check that events were generated on ``UserButton`` attribute changes. + + .. parsed-literal:: + :class: highlight + + any read-event-by-id 0xFFF1FC01 0xFFF10000 1 1 + #. Read the ``Basic Information`` cluster's ``RandomNumber`` attribute: .. parsed-literal:: @@ -279,6 +287,13 @@ To test ``NordicDevkit`` cluster's attributes and commands, complete the followi any command-by-id 0x0028 0 '{}' 1 0 #. Verify that the random value has been generated and the attribute value is updated. +#. Read the ``Basic Information`` cluster's ``RandomNumberChanged`` event to check that events were generated on ``RandomNumber`` attribute changes. + + .. parsed-literal:: + :class: highlight + + any read-event-by-id 0x0028 0x4 1 0 + #. Reboot the device, restart the chip-tool, and check if the attributes are persisting after joining the network. Upgrading the device firmware diff --git a/samples/matter/manufacturer_specific/src/app_task.cpp b/samples/matter/manufacturer_specific/src/app_task.cpp index 7a3c1b5db4e8..6861e4312c1f 100644 --- a/samples/matter/manufacturer_specific/src/app_task.cpp +++ b/samples/matter/manufacturer_specific/src/app_task.cpp @@ -14,11 +14,13 @@ #include +#include +#include #include -#include -#include #include +#include +#include LOG_MODULE_DECLARE(app, CONFIG_CHIP_APP_LOG_LEVEL); @@ -35,7 +37,7 @@ constexpr EndpointId kNordicDevKitEndpointId = 1; static void ButtonEventHandler(Nrf::ButtonState /* unused */, Nrf::ButtonMask has_changed) { - /* Handle button press */ + /* Handle button press */ if (ConnectivityMgrImpl().IsIPv6NetworkProvisioned() && ConnectivityMgrImpl().IsIPv6NetworkEnabled() && BUTTON2_MASK & has_changed) { AppTask::Instance().UpdateNordicDevkitClusterState(); @@ -50,19 +52,29 @@ void AppTask::UpdateNordicDevkitClusterState() dk_read_buttons(&button_state, nullptr); - status = Clusters::NordicDevKit::Attributes::UserLED::Set(kNordicDevKitEndpointId, - Nrf::GetBoard().GetLED(Nrf::DeviceLeds::LED2).GetState()); + status = Clusters::NordicDevKit::Attributes::UserLED::Set( + kNordicDevKitEndpointId, Nrf::GetBoard().GetLED(Nrf::DeviceLeds::LED2).GetState()); if (status != Protocols::InteractionModel::Status::Success) { LOG_ERR("Updating NordicDevkit cluster failed: %x", to_underlying(status)); } status = Clusters::NordicDevKit::Attributes::UserButton::Set(kNordicDevKitEndpointId, - BUTTON2_MASK & button_state); + BUTTON2_MASK & button_state); if (status != Protocols::InteractionModel::Status::Success) { LOG_ERR("Updating NordicDevkit cluster failed: %x", to_underlying(status)); } + + for (auto endpoint : EnabledEndpointsWithServerCluster(Clusters::NordicDevKit::Id)) { + /* If NordicDevKit cluster is implemented on this endpoint */ + Clusters::NordicDevKit::Events::UserButtonChanged::Type event; + EventNumber eventNumber; + + if (CHIP_NO_ERROR != LogEvent(event, endpoint, eventNumber)) { + ChipLogError(Zcl, "Failed to emit UserButtonChanged event"); + } + } }); } @@ -77,6 +89,16 @@ void AppTask::UpdateBasicInformationClusterState() if (status != Protocols::InteractionModel::Status::Success) { LOG_ERR("Updating Basic information cluster failed: %x", to_underlying(status)); } + + for (auto endpoint : EnabledEndpointsWithServerCluster(Clusters::BasicInformation::Id)) { + /* If Basic cluster is implemented on this endpoint */ + Clusters::BasicInformation::Events::RandomNumberChanged::Type event; + EventNumber eventNumber; + + if (CHIP_NO_ERROR != LogEvent(event, endpoint, eventNumber)) { + ChipLogError(Zcl, "Failed to emit RandomNumberChanged event"); + } + } }); } diff --git a/samples/matter/manufacturer_specific/src/default_zap/NordicDevKitCluster.xml b/samples/matter/manufacturer_specific/src/default_zap/NordicDevKitCluster.xml index 818efb73ab09..620988649d0d 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/NordicDevKitCluster.xml +++ b/samples/matter/manufacturer_specific/src/default_zap/NordicDevKitCluster.xml @@ -12,19 +12,25 @@ 0xFFF1FC01 NORDIC_DEV_KIT_CLUSTER The NordicDevKit cluster showcases a cluster manufacturer extensions - + Change LED state - DevKitName - UserLED - UserButton + DevKitName + UserLED + UserButton + + The UserButtonChanged event SHALL be emitted by a Node as soon as the User Button is pressed or released. + Generate random number RandomNumber + + The RandomNumberChanged event SHALL be emitted by a Node as soon as the RandomNumber attribute is changed. + nordic-dev-kit diff --git a/samples/matter/manufacturer_specific/src/default_zap/manufacturer_specific.zap b/samples/matter/manufacturer_specific/src/default_zap/manufacturer_specific.zap index a93db934a2b8..09f830f264bd 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/manufacturer_specific.zap +++ b/samples/matter/manufacturer_specific/src/default_zap/manufacturer_specific.zap @@ -17,13 +17,6 @@ } ], "package": [ - { - "pathRelativity": "relativeToZap", - "path": "../../../../../../modules/lib/matter/src/app/zap-templates/app-templates.json", - "type": "gen-templates-json", - "category": "matter", - "version": "chip-v1" - }, { "pathRelativity": "relativeToZap", "path": "zcl.json", @@ -31,6 +24,13 @@ "category": "matter", "version": 1, "description": "Matter SDK ZCL data" + }, + { + "pathRelativity": "relativeToZap", + "path": "../../../../../../modules/lib/matter/src/app/zap-templates/app-templates.json", + "type": "gen-templates-json", + "category": "matter", + "version": "chip-v1" } ], "endpointTypes": [ @@ -867,6 +867,13 @@ "mfgCode": null, "side": "server", "included": 1 + }, + { + "name": "RandomNumberChanged", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1 } ] }, @@ -2682,7 +2689,7 @@ "commands": [ { "name": "SetLED", - "code": 0, + "code": 4293984256, "mfgCode": null, "source": "client", "isIncoming": 0, @@ -2700,7 +2707,7 @@ "commands": [ { "name": "SetLED", - "code": 0, + "code": 4293984256, "mfgCode": null, "source": "client", "isIncoming": 1, @@ -2709,56 +2716,56 @@ ], "attributes": [ { - "name": "DevKitName", - "code": 1, + "name": "GeneratedCommandList", + "code": 65528, "mfgCode": null, "side": "server", - "type": "char_string", + "type": "array", "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "Nordic Development Kit", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "UserLED", - "code": 2, + "name": "AcceptedCommandList", + "code": 65529, "mfgCode": null, "side": "server", - "type": "boolean", + "type": "array", "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "false", - "reportable": 0, + "defaultValue": null, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "UserButton", - "code": 3, + "name": "EventList", + "code": 65530, "mfgCode": null, "side": "server", - "type": "boolean", + "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "false", - "reportable": 0, + "defaultValue": null, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "GeneratedCommandList", - "code": 65528, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", "type": "array", @@ -2766,92 +2773,101 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "AcceptedCommandList", - "code": 65529, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", - "type": "array", + "type": "bitmap32", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "EventList", - "code": 65530, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", - "type": "array", + "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "1", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "DevKitName", + "code": 4293984256, "mfgCode": null, "side": "server", - "type": "array", + "type": "char_string", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "Nordic Development Kit", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "UserLED", + "code": 4293984257, "mfgCode": null, "side": "server", - "type": "bitmap32", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", - "reportable": 1, + "defaultValue": "false", + "reportable": 0, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "UserButton", + "code": 4293984258, "mfgCode": null, "side": "server", - "type": "int16u", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", - "reportable": 1, + "defaultValue": "false", + "reportable": 0, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 } + ], + "events": [ + { + "name": "UserButtonChanged", + "code": 4293984256, + "mfgCode": null, + "side": "server", + "included": 1 + } ] } ] diff --git a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/attributes/Accessors.cpp b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/attributes/Accessors.cpp index e352e02d7437..45841005dacc 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/attributes/Accessors.cpp +++ b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/attributes/Accessors.cpp @@ -44615,73 +44615,65 @@ namespace app namespace Attributes { - namespace DevKitName + namespace FeatureMap { - Protocols::InteractionModel::Status Get(EndpointId endpoint, - chip::MutableCharSpan &value) + Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t *value) { - uint8_t zclString[254 + 1]; + using Traits = NumericAttributeTraits; + Traits::StorageType temp; + uint8_t *readable = Traits::ToAttributeStoreRepresentation(temp); Protocols::InteractionModel::Status status = emberAfReadAttribute(endpoint, Clusters::NordicDevKit::Id, Id, - zclString, sizeof(zclString)); + readable, sizeof(temp)); VerifyOrReturnError( Protocols::InteractionModel::Status::Success == status, status); - size_t length = emberAfStringLength(zclString); - if (length == NumericAttributeTraits::kNullValue) { + if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) { return Protocols::InteractionModel::Status::ConstraintError; } - - VerifyOrReturnError( - value.size() == 254, - Protocols::InteractionModel::Status::InvalidDataType); - memcpy(value.data(), &zclString[1], 254); - value.reduce_size(length); + *value = Traits::StorageToWorking(temp); return status; } - Protocols::InteractionModel::Status - Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) + Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, + MarkAttributeDirty markDirty) { - static_assert(254 < NumericAttributeTraits::kNullValue, - "value.size() might be too big"); - VerifyOrReturnError( - value.size() <= 254, - Protocols::InteractionModel::Status::ConstraintError); - uint8_t zclString[254 + 1]; - auto length = static_cast(value.size()); - Encoding::Put8(zclString, length); - memcpy(&zclString[1], value.data(), value.size()); + using Traits = NumericAttributeTraits; + if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { + return Protocols::InteractionModel::Status::ConstraintError; + } + Traits::StorageType storageValue; + Traits::WorkingToStorage(value, storageValue); + uint8_t *writable = + Traits::ToAttributeStoreRepresentation(storageValue); return emberAfWriteAttribute( ConcreteAttributePath(endpoint, Clusters::NordicDevKit::Id, Id), - EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE) + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE) .SetMarkDirty(markDirty)); } - Protocols::InteractionModel::Status Set(EndpointId endpoint, - chip::CharSpan value) + Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { - static_assert(254 < NumericAttributeTraits::kNullValue, - "value.size() might be too big"); - VerifyOrReturnError( - value.size() <= 254, - Protocols::InteractionModel::Status::ConstraintError); - uint8_t zclString[254 + 1]; - auto length = static_cast(value.size()); - Encoding::Put8(zclString, length); - memcpy(&zclString[1], value.data(), value.size()); + using Traits = NumericAttributeTraits; + if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { + return Protocols::InteractionModel::Status::ConstraintError; + } + Traits::StorageType storageValue; + Traits::WorkingToStorage(value, storageValue); + uint8_t *writable = + Traits::ToAttributeStoreRepresentation(storageValue); return emberAfWriteAttribute(endpoint, Clusters::NordicDevKit::Id, Id, - zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE); + writable, ZCL_BITMAP32_ATTRIBUTE_TYPE); } - } // namespace DevKitName + } // namespace FeatureMap - namespace UserLED + namespace ClusterRevision { - Protocols::InteractionModel::Status Get(EndpointId endpoint, bool *value) + Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t *value) { - using Traits = NumericAttributeTraits; + using Traits = NumericAttributeTraits; Traits::StorageType temp; uint8_t *readable = Traits::ToAttributeStoreRepresentation(temp); Protocols::InteractionModel::Status status = @@ -44696,10 +44688,10 @@ namespace app return status; } - Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, + Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { - using Traits = NumericAttributeTraits; + using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { return Protocols::InteractionModel::Status::ConstraintError; } @@ -44709,13 +44701,13 @@ namespace app Traits::ToAttributeStoreRepresentation(storageValue); return emberAfWriteAttribute( ConcreteAttributePath(endpoint, Clusters::NordicDevKit::Id, Id), - EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE) + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE) .SetMarkDirty(markDirty)); } - Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) + Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { - using Traits = NumericAttributeTraits; + using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { return Protocols::InteractionModel::Status::ConstraintError; } @@ -44724,70 +44716,78 @@ namespace app uint8_t *writable = Traits::ToAttributeStoreRepresentation(storageValue); return emberAfWriteAttribute(endpoint, Clusters::NordicDevKit::Id, Id, - writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE); + writable, ZCL_INT16U_ATTRIBUTE_TYPE); } - } // namespace UserLED + } // namespace ClusterRevision - namespace UserButton + namespace DevKitName { - Protocols::InteractionModel::Status Get(EndpointId endpoint, bool *value) + Protocols::InteractionModel::Status Get(EndpointId endpoint, + chip::MutableCharSpan &value) { - using Traits = NumericAttributeTraits; - Traits::StorageType temp; - uint8_t *readable = Traits::ToAttributeStoreRepresentation(temp); + uint8_t zclString[254 + 1]; Protocols::InteractionModel::Status status = emberAfReadAttribute(endpoint, Clusters::NordicDevKit::Id, Id, - readable, sizeof(temp)); + zclString, sizeof(zclString)); VerifyOrReturnError( Protocols::InteractionModel::Status::Success == status, status); - if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) { + size_t length = emberAfStringLength(zclString); + if (length == NumericAttributeTraits::kNullValue) { return Protocols::InteractionModel::Status::ConstraintError; } - *value = Traits::StorageToWorking(temp); + + VerifyOrReturnError( + value.size() == 254, + Protocols::InteractionModel::Status::InvalidDataType); + memcpy(value.data(), &zclString[1], 254); + value.reduce_size(length); return status; } - Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, - MarkAttributeDirty markDirty) + Protocols::InteractionModel::Status + Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { - using Traits = NumericAttributeTraits; - if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { - return Protocols::InteractionModel::Status::ConstraintError; - } - Traits::StorageType storageValue; - Traits::WorkingToStorage(value, storageValue); - uint8_t *writable = - Traits::ToAttributeStoreRepresentation(storageValue); + static_assert(254 < NumericAttributeTraits::kNullValue, + "value.size() might be too big"); + VerifyOrReturnError( + value.size() <= 254, + Protocols::InteractionModel::Status::ConstraintError); + uint8_t zclString[254 + 1]; + auto length = static_cast(value.size()); + Encoding::Put8(zclString, length); + memcpy(&zclString[1], value.data(), value.size()); return emberAfWriteAttribute( ConcreteAttributePath(endpoint, Clusters::NordicDevKit::Id, Id), - EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE) + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE) .SetMarkDirty(markDirty)); } - Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) + Protocols::InteractionModel::Status Set(EndpointId endpoint, + chip::CharSpan value) { - using Traits = NumericAttributeTraits; - if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { - return Protocols::InteractionModel::Status::ConstraintError; - } - Traits::StorageType storageValue; - Traits::WorkingToStorage(value, storageValue); - uint8_t *writable = - Traits::ToAttributeStoreRepresentation(storageValue); + static_assert(254 < NumericAttributeTraits::kNullValue, + "value.size() might be too big"); + VerifyOrReturnError( + value.size() <= 254, + Protocols::InteractionModel::Status::ConstraintError); + uint8_t zclString[254 + 1]; + auto length = static_cast(value.size()); + Encoding::Put8(zclString, length); + memcpy(&zclString[1], value.data(), value.size()); return emberAfWriteAttribute(endpoint, Clusters::NordicDevKit::Id, Id, - writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE); + zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE); } - } // namespace UserButton + } // namespace DevKitName - namespace FeatureMap + namespace UserLED { - Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t *value) + Protocols::InteractionModel::Status Get(EndpointId endpoint, bool *value) { - using Traits = NumericAttributeTraits; + using Traits = NumericAttributeTraits; Traits::StorageType temp; uint8_t *readable = Traits::ToAttributeStoreRepresentation(temp); Protocols::InteractionModel::Status status = @@ -44802,10 +44802,10 @@ namespace app return status; } - Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, + Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { - using Traits = NumericAttributeTraits; + using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { return Protocols::InteractionModel::Status::ConstraintError; } @@ -44815,13 +44815,13 @@ namespace app Traits::ToAttributeStoreRepresentation(storageValue); return emberAfWriteAttribute( ConcreteAttributePath(endpoint, Clusters::NordicDevKit::Id, Id), - EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE) + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE) .SetMarkDirty(markDirty)); } - Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) + Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { - using Traits = NumericAttributeTraits; + using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { return Protocols::InteractionModel::Status::ConstraintError; } @@ -44830,17 +44830,17 @@ namespace app uint8_t *writable = Traits::ToAttributeStoreRepresentation(storageValue); return emberAfWriteAttribute(endpoint, Clusters::NordicDevKit::Id, Id, - writable, ZCL_BITMAP32_ATTRIBUTE_TYPE); + writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE); } - } // namespace FeatureMap + } // namespace UserLED - namespace ClusterRevision + namespace UserButton { - Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t *value) + Protocols::InteractionModel::Status Get(EndpointId endpoint, bool *value) { - using Traits = NumericAttributeTraits; + using Traits = NumericAttributeTraits; Traits::StorageType temp; uint8_t *readable = Traits::ToAttributeStoreRepresentation(temp); Protocols::InteractionModel::Status status = @@ -44855,10 +44855,10 @@ namespace app return status; } - Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, + Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { - using Traits = NumericAttributeTraits; + using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { return Protocols::InteractionModel::Status::ConstraintError; } @@ -44868,13 +44868,13 @@ namespace app Traits::ToAttributeStoreRepresentation(storageValue); return emberAfWriteAttribute( ConcreteAttributePath(endpoint, Clusters::NordicDevKit::Id, Id), - EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE) + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE) .SetMarkDirty(markDirty)); } - Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) + Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { - using Traits = NumericAttributeTraits; + using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) { return Protocols::InteractionModel::Status::ConstraintError; } @@ -44883,10 +44883,10 @@ namespace app uint8_t *writable = Traits::ToAttributeStoreRepresentation(storageValue); return emberAfWriteAttribute(endpoint, Clusters::NordicDevKit::Id, Id, - writable, ZCL_INT16U_ATTRIBUTE_TYPE); + writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE); } - } // namespace ClusterRevision + } // namespace UserButton } // namespace Attributes } // namespace NordicDevKit diff --git a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/attributes/Accessors.h b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/attributes/Accessors.h index 3cb6f3449338..e58f0e9a9d3b 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/attributes/Accessors.h +++ b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/attributes/Accessors.h @@ -8832,6 +8832,24 @@ namespace app namespace Attributes { + namespace FeatureMap + { + Protocols::InteractionModel::Status Get(EndpointId endpoint, + uint32_t *value); // bitmap32 + Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); + Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, + MarkAttributeDirty markDirty); + } // namespace FeatureMap + + namespace ClusterRevision + { + Protocols::InteractionModel::Status Get(EndpointId endpoint, + uint16_t *value); // int16u + Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); + Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, + MarkAttributeDirty markDirty); + } // namespace ClusterRevision + namespace DevKitName { Protocols::InteractionModel::Status @@ -8860,24 +8878,6 @@ namespace app MarkAttributeDirty markDirty); } // namespace UserButton - namespace FeatureMap - { - Protocols::InteractionModel::Status Get(EndpointId endpoint, - uint32_t *value); // bitmap32 - Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); - Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, - MarkAttributeDirty markDirty); - } // namespace FeatureMap - - namespace ClusterRevision - { - Protocols::InteractionModel::Status Get(EndpointId endpoint, - uint16_t *value); // int16u - Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); - Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, - MarkAttributeDirty markDirty); - } // namespace ClusterRevision - } // namespace Attributes } // namespace NordicDevKit diff --git a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/cluster-objects.cpp b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/cluster-objects.cpp index f6361010c98e..06992f266ac7 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/cluster-objects.cpp +++ b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/cluster-objects.cpp @@ -3520,6 +3520,27 @@ namespace app } } } // namespace ReachableChanged. + namespace RandomNumberChanged + { + CHIP_ERROR Type::Encode(TLV::TLVWriter &aWriter, TLV::Tag aTag) const + { + TLV::TLVType outer; + ReturnErrorOnFailure( + aWriter.StartContainer(aTag, TLV::kTLVType_Structure, outer)); + return aWriter.EndContainer(outer); + } + + CHIP_ERROR DecodableType::Decode(TLV::TLVReader &reader) + { + detail::StructDecodeIterator __iterator(reader); + while (true) { + auto __element = __iterator.Next(); + if (std::holds_alternative(__element)) { + return std::get(__element); + } + } + } + } // namespace RandomNumberChanged. } // namespace Events } // namespace BasicInformation @@ -27765,12 +27786,6 @@ namespace app const ConcreteAttributePath &path) { switch (path.mAttributeId) { - case Attributes::DevKitName::TypeInfo::GetAttributeId(): - return DataModel::Decode(reader, devKitName); - case Attributes::UserLED::TypeInfo::GetAttributeId(): - return DataModel::Decode(reader, userLED); - case Attributes::UserButton::TypeInfo::GetAttributeId(): - return DataModel::Decode(reader, userButton); case Attributes::GeneratedCommandList::TypeInfo::GetAttributeId(): return DataModel::Decode(reader, generatedCommandList); case Attributes::AcceptedCommandList::TypeInfo::GetAttributeId(): @@ -27783,6 +27798,12 @@ namespace app return DataModel::Decode(reader, featureMap); case Attributes::ClusterRevision::TypeInfo::GetAttributeId(): return DataModel::Decode(reader, clusterRevision); + case Attributes::DevKitName::TypeInfo::GetAttributeId(): + return DataModel::Decode(reader, devKitName); + case Attributes::UserLED::TypeInfo::GetAttributeId(): + return DataModel::Decode(reader, userLED); + case Attributes::UserButton::TypeInfo::GetAttributeId(): + return DataModel::Decode(reader, userButton); default: return CHIP_NO_ERROR; } @@ -27791,6 +27812,27 @@ namespace app namespace Events { + namespace UserButtonChanged + { + CHIP_ERROR Type::Encode(TLV::TLVWriter &aWriter, TLV::Tag aTag) const + { + TLV::TLVType outer; + ReturnErrorOnFailure( + aWriter.StartContainer(aTag, TLV::kTLVType_Structure, outer)); + return aWriter.EndContainer(outer); + } + + CHIP_ERROR DecodableType::Decode(TLV::TLVReader &reader) + { + detail::StructDecodeIterator __iterator(reader); + while (true) { + auto __element = __iterator.Next(); + if (std::holds_alternative(__element)) { + return std::get(__element); + } + } + } + } // namespace UserButtonChanged. } // namespace Events } // namespace NordicDevKit diff --git a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/cluster-objects.h b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/cluster-objects.h index f40c5af3c7bf..0e2ebf13c423 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/cluster-objects.h +++ b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/cluster-objects.h @@ -5956,6 +5956,49 @@ namespace app CHIP_ERROR Decode(TLV::TLVReader &reader); }; } // namespace ReachableChanged + namespace RandomNumberChanged + { + static constexpr PriorityLevel kPriorityLevel = PriorityLevel::Info; + + enum class Fields : uint8_t {}; + + struct Type { + public: + static constexpr PriorityLevel GetPriorityLevel() + { + return kPriorityLevel; + } + static constexpr EventId GetEventId() + { + return Events::RandomNumberChanged::Id; + } + static constexpr ClusterId GetClusterId() + { + return Clusters::BasicInformation::Id; + } + static constexpr bool kIsFabricScoped = false; + + CHIP_ERROR Encode(TLV::TLVWriter &aWriter, TLV::Tag aTag) const; + }; + + struct DecodableType { + public: + static constexpr PriorityLevel GetPriorityLevel() + { + return kPriorityLevel; + } + static constexpr EventId GetEventId() + { + return Events::RandomNumberChanged::Id; + } + static constexpr ClusterId GetClusterId() + { + return Clusters::BasicInformation::Id; + } + + CHIP_ERROR Decode(TLV::TLVReader &reader); + }; + } // namespace RandomNumberChanged } // namespace Events } // namespace BasicInformation namespace OtaSoftwareUpdateProvider @@ -59881,61 +59924,6 @@ namespace app namespace Attributes { - namespace DevKitName - { - struct TypeInfo { - using Type = chip::CharSpan; - using DecodableType = chip::CharSpan; - using DecodableArgType = chip::CharSpan; - - static constexpr ClusterId GetClusterId() - { - return Clusters::NordicDevKit::Id; - } - static constexpr AttributeId GetAttributeId() - { - return Attributes::DevKitName::Id; - } - static constexpr bool MustUseTimedWrite() { return false; } - static constexpr size_t MaxLength() { return 254; } - }; - } // namespace DevKitName - namespace UserLED - { - struct TypeInfo { - using Type = bool; - using DecodableType = bool; - using DecodableArgType = bool; - - static constexpr ClusterId GetClusterId() - { - return Clusters::NordicDevKit::Id; - } - static constexpr AttributeId GetAttributeId() - { - return Attributes::UserLED::Id; - } - static constexpr bool MustUseTimedWrite() { return false; } - }; - } // namespace UserLED - namespace UserButton - { - struct TypeInfo { - using Type = bool; - using DecodableType = bool; - using DecodableArgType = bool; - - static constexpr ClusterId GetClusterId() - { - return Clusters::NordicDevKit::Id; - } - static constexpr AttributeId GetAttributeId() - { - return Attributes::UserButton::Id; - } - static constexpr bool MustUseTimedWrite() { return false; } - }; - } // namespace UserButton namespace GeneratedCommandList { struct TypeInfo @@ -59994,6 +59982,61 @@ namespace app } }; } // namespace ClusterRevision + namespace DevKitName + { + struct TypeInfo { + using Type = chip::CharSpan; + using DecodableType = chip::CharSpan; + using DecodableArgType = chip::CharSpan; + + static constexpr ClusterId GetClusterId() + { + return Clusters::NordicDevKit::Id; + } + static constexpr AttributeId GetAttributeId() + { + return Attributes::DevKitName::Id; + } + static constexpr bool MustUseTimedWrite() { return false; } + static constexpr size_t MaxLength() { return 254; } + }; + } // namespace DevKitName + namespace UserLED + { + struct TypeInfo { + using Type = bool; + using DecodableType = bool; + using DecodableArgType = bool; + + static constexpr ClusterId GetClusterId() + { + return Clusters::NordicDevKit::Id; + } + static constexpr AttributeId GetAttributeId() + { + return Attributes::UserLED::Id; + } + static constexpr bool MustUseTimedWrite() { return false; } + }; + } // namespace UserLED + namespace UserButton + { + struct TypeInfo { + using Type = bool; + using DecodableType = bool; + using DecodableArgType = bool; + + static constexpr ClusterId GetClusterId() + { + return Clusters::NordicDevKit::Id; + } + static constexpr AttributeId GetAttributeId() + { + return Attributes::UserButton::Id; + } + static constexpr bool MustUseTimedWrite() { return false; } + }; + } // namespace UserButton struct TypeInfo { struct DecodableType { @@ -60005,11 +60048,6 @@ namespace app CHIP_ERROR Decode(TLV::TLVReader &reader, const ConcreteAttributePath &path); - Attributes::DevKitName::TypeInfo::DecodableType devKitName; - Attributes::UserLED::TypeInfo::DecodableType userLED = - static_cast(0); - Attributes::UserButton::TypeInfo::DecodableType userButton = - static_cast(0); Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList; Attributes::AcceptedCommandList::TypeInfo::DecodableType @@ -60020,9 +60058,60 @@ namespace app static_cast(0); Attributes::ClusterRevision::TypeInfo::DecodableType clusterRevision = static_cast(0); + Attributes::DevKitName::TypeInfo::DecodableType devKitName; + Attributes::UserLED::TypeInfo::DecodableType userLED = + static_cast(0); + Attributes::UserButton::TypeInfo::DecodableType userButton = + static_cast(0); }; }; } // namespace Attributes + namespace Events + { + namespace UserButtonChanged + { + static constexpr PriorityLevel kPriorityLevel = PriorityLevel::Info; + + enum class Fields : uint8_t {}; + + struct Type { + public: + static constexpr PriorityLevel GetPriorityLevel() + { + return kPriorityLevel; + } + static constexpr EventId GetEventId() + { + return Events::UserButtonChanged::Id; + } + static constexpr ClusterId GetClusterId() + { + return Clusters::NordicDevKit::Id; + } + static constexpr bool kIsFabricScoped = false; + + CHIP_ERROR Encode(TLV::TLVWriter &aWriter, TLV::Tag aTag) const; + }; + + struct DecodableType { + public: + static constexpr PriorityLevel GetPriorityLevel() + { + return kPriorityLevel; + } + static constexpr EventId GetEventId() + { + return Events::UserButtonChanged::Id; + } + static constexpr ClusterId GetClusterId() + { + return Clusters::NordicDevKit::Id; + } + + CHIP_ERROR Decode(TLV::TLVReader &reader); + }; + } // namespace UserButtonChanged + } // namespace Events } // namespace NordicDevKit namespace UnitTesting { diff --git a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Attributes.h b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Attributes.h index c30883ccb8e2..a6820c60e178 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Attributes.h +++ b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Attributes.h @@ -9394,21 +9394,6 @@ namespace app namespace Attributes { - namespace DevKitName - { - static constexpr AttributeId Id = 0x00000001; - } // namespace DevKitName - - namespace UserLED - { - static constexpr AttributeId Id = 0x00000002; - } // namespace UserLED - - namespace UserButton - { - static constexpr AttributeId Id = 0x00000003; - } // namespace UserButton - namespace GeneratedCommandList { static constexpr AttributeId Id = Globals::Attributes::GeneratedCommandList::Id; @@ -9439,6 +9424,21 @@ namespace app static constexpr AttributeId Id = Globals::Attributes::ClusterRevision::Id; } // namespace ClusterRevision + namespace DevKitName + { + static constexpr AttributeId Id = 0xFFF10000; + } // namespace DevKitName + + namespace UserLED + { + static constexpr AttributeId Id = 0xFFF10001; + } // namespace UserLED + + namespace UserButton + { + static constexpr AttributeId Id = 0xFFF10002; + } // namespace UserButton + } // namespace Attributes } // namespace NordicDevKit diff --git a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Commands.h b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Commands.h index b76e6e58ca05..a9b666b38f48 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Commands.h +++ b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Commands.h @@ -2377,7 +2377,7 @@ namespace app namespace SetLED { - static constexpr CommandId Id = 0x00000000; + static constexpr CommandId Id = 0xFFF10000; } // namespace SetLED } // namespace Commands diff --git a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Events.h b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Events.h index 5e02cd2804b1..851accd04909 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Events.h +++ b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/app-common/zap-generated/ids/Events.h @@ -94,6 +94,11 @@ namespace app static constexpr EventId Id = 0x00000003; } // namespace ReachableChanged + namespace RandomNumberChanged + { + static constexpr EventId Id = 0x00000004; + } // namespace RandomNumberChanged + } // namespace Events } // namespace BasicInformation @@ -881,6 +886,19 @@ namespace app } // namespace Events } // namespace CommissionerControl + namespace NordicDevKit + { + namespace Events + { + + namespace UserButtonChanged + { + static constexpr EventId Id = 0xFFF10000; + } // namespace UserButtonChanged + + } // namespace Events + } // namespace NordicDevKit + namespace UnitTesting { namespace Events diff --git a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/endpoint_config.h b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/endpoint_config.h index 7e89378c8a03..6797413d4599 100644 --- a/samples/matter/manufacturer_specific/src/default_zap/zap-generated/endpoint_config.h +++ b/samples/matter/manufacturer_specific/src/default_zap/zap-generated/endpoint_config.h @@ -29,31 +29,91 @@ #if CHIP_CONFIG_BIG_ENDIAN_TARGET #define GENERATED_DEFAULTS \ { \ + \ /* Endpoint: 0, Cluster: General Commissioning (server), big-endian */ \ \ /* 0 - Breadcrumb, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + \ + /* Endpoint: 1, Cluster: NordicDevKit (server), big-endian */ \ \ - /* Endpoint: 1, Cluster: NordicDevKit (server), big-endian */ \ + /* 8 - DevKitName, */ \ + 22, \ + 'N', \ + 'o', \ + 'r', \ + 'd', \ + 'i', \ + 'c', \ + ' ', \ + 'D', \ + 'e', \ + 'v', \ + 'e', \ + 'l', \ + 'o', \ + 'p', \ + 'm', \ + 'e', \ + 'n', \ + 't', \ + ' ', \ + 'K', \ + 'i', \ + 't', \ \ - /* 8 - DevKitName, */ \ - 22, 'N', 'o', 'r', 'd', 'i', 'c', ' ', 'D', 'e', 'v', 'e', 'l', 'o', 'p', 'm', 'e', 'n', 't', \ - ' ', 'K', 'i', 't', \ } #else // !CHIP_CONFIG_BIG_ENDIAN_TARGET #define GENERATED_DEFAULTS \ { \ + \ /* Endpoint: 0, Cluster: General Commissioning (server), little-endian */ \ \ /* 0 - Breadcrumb, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ + 0x00, \ \ - /* Endpoint: 1, Cluster: NordicDevKit (server), little-endian */ \ + /* Endpoint: 1, Cluster: NordicDevKit (server), little-endian */ \ + \ + /* 8 - DevKitName, */ \ + 22, \ + 'N', \ + 'o', \ + 'r', \ + 'd', \ + 'i', \ + 'c', \ + ' ', \ + 'D', \ + 'e', \ + 'v', \ + 'e', \ + 'l', \ + 'o', \ + 'p', \ + 'm', \ + 'e', \ + 'n', \ + 't', \ + ' ', \ + 'K', \ + 'i', \ + 't', \ \ - /* 8 - DevKitName, */ \ - 22, 'N', 'o', 'r', 'd', 'i', 'c', ' ', 'D', 'e', 'v', 'e', 'l', 'o', 'p', 'm', 'e', 'n', 't', \ - ' ', 'K', 'i', 't', \ } #endif // CHIP_CONFIG_BIG_ENDIAN_TARGET @@ -68,223 +128,214 @@ // This is an array of EmberAfAttributeMetadata structures. #define GENERATED_ATTRIBUTE_COUNT 91 -#define GENERATED_ATTRIBUTES \ - { \ - /* Endpoint: 0, Cluster: Descriptor (server) */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* DeviceTypeList \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ServerList */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000002, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClientList */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000003, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* PartsList */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* FeatureMap */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000FFFD, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClusterRevision */ \ - \ - /* Endpoint: 0, Cluster: Access Control (server) */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ACL */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* Extension */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000002, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SubjectsPerAccessControlEntry */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000003, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* TargetsPerAccessControlEntry */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000004, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* AccessControlEntriesPerFabric */ \ - { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000FFFD, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClusterRevision */ \ - \ - /* Endpoint: 0, Cluster: Basic Information (server) */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000000, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* DataModelRevision \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000001, 33, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* VendorName */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000002, 2, ZAP_TYPE(VENDOR_ID), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* VendorID */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000003, 33, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* ProductName */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000004, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* ProductID */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000005, 33, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(SINGLETON) | \ - ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* NodeLabel */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000006, 3, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) | \ - ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* Location */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000007, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* HardwareVersion \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000008, 65, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* HardwareVersionString \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000009, 4, ZAP_TYPE(INT32U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* SoftwareVersion \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000000A, 65, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* SoftwareVersionString \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000000B, 17, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* ManufacturingDate \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000000F, 33, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* SerialNumber */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000012, 33, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* UniqueID */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000013, 0, ZAP_TYPE(STRUCT), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* CapabilityMinima */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000015, 4, ZAP_TYPE(INT32U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* SpecificationVersion \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000016, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* MaxPathsPerInvoke \ - */ \ - { ZAP_SIMPLE_DEFAULT(0), 0x00000017, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* RandomNumber */ \ - { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(4), 0x0000FFFD, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* ClusterRevision */ \ - \ - /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* DefaultOTAProviders \ - */ \ - { ZAP_SIMPLE_DEFAULT(1), 0x00000001, 1, ZAP_TYPE(BOOLEAN), 0 }, /* UpdatePossible */ \ - { ZAP_SIMPLE_DEFAULT(0), 0x00000002, 1, ZAP_TYPE(ENUM8), 0 }, /* UpdateState */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000003, 1, ZAP_TYPE(INT8U), ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* UpdateStateProgress \ - */ \ - { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ - \ - /* Endpoint: 0, Cluster: General Commissioning (server) */ \ - { ZAP_LONG_DEFAULTS_INDEX(0), 0x00000000, 8, ZAP_TYPE(INT64U), \ - ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* Breadcrumb */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(STRUCT), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* BasicCommissioningInfo */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000002, 1, ZAP_TYPE(ENUM8), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* RegulatoryConfig */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000003, 1, ZAP_TYPE(ENUM8), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* LocationCapability */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000004, 1, ZAP_TYPE(BOOLEAN), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SupportsConcurrentConnection */ \ - { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(2), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ - \ - /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000000, 1, ZAP_TYPE(INT8U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* MaxNetworks */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* Networks */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000002, 1, ZAP_TYPE(INT8U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ScanMaxTimeSeconds */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000003, 1, ZAP_TYPE(INT8U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ConnectMaxTimeSeconds */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000004, 1, ZAP_TYPE(BOOLEAN), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* InterfaceEnabled \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000005, 1, ZAP_TYPE(ENUM8), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LastNetworkingStatus \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000006, 33, ZAP_TYPE(OCTET_STRING), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LastNetworkID */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000007, 4, ZAP_TYPE(INT32S), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LastConnectErrorValue \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000008, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SupportedWiFiBands */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000009, 2, ZAP_TYPE(BITMAP16), 0 }, /* SupportedThreadFeatures */ \ - { ZAP_SIMPLE_DEFAULT(4), 0x0000000A, 2, ZAP_TYPE(INT16U), 0 }, /* ThreadVersion */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(2), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ - \ - /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* NetworkInterfaces */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000001, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* RebootCount */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000002, 8, ZAP_TYPE(INT64U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* UpTime */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000003, 4, ZAP_TYPE(INT32U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* TotalOperationalHours */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000004, 1, ZAP_TYPE(ENUM8), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* BootReason */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000008, 1, ZAP_TYPE(BOOLEAN), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* TestEventTriggersEnabled */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* FeatureMap */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000FFFD, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClusterRevision */ \ - \ - /* Endpoint: 0, Cluster: Administrator Commissioning (server) */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000000, 1, ZAP_TYPE(ENUM8), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* WindowStatus */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000001, 1, ZAP_TYPE(FABRIC_IDX), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* AdminFabricIndex \ - */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000002, 2, ZAP_TYPE(VENDOR_ID), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* AdminVendorId */ \ - { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ - \ - /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* NOCs */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* Fabrics */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000002, 1, ZAP_TYPE(INT8U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SupportedFabrics */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000003, 1, ZAP_TYPE(INT8U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* CommissionedFabrics */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000004, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* TrustedRootCertificates */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000005, 1, ZAP_TYPE(INT8U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* CurrentFabricIndex */ \ - { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ - \ - /* Endpoint: 0, Cluster: Group Key Management (server) */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* GroupKeyMap */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* GroupTable */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000002, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* MaxGroupsPerFabric */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000003, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* MaxGroupKeysPerFabric */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* FeatureMap */ \ - { ZAP_EMPTY_DEFAULT(), 0x0000FFFD, 2, ZAP_TYPE(INT16U), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClusterRevision */ \ - \ - /* Endpoint: 1, Cluster: NordicDevKit (server) */ \ - { ZAP_LONG_DEFAULTS_INDEX(8), 0x00000001, 255, ZAP_TYPE(CHAR_STRING), \ - ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* DevKitName */ \ - { ZAP_SIMPLE_DEFAULT(false), 0x00000002, 1, ZAP_TYPE(BOOLEAN), \ - ZAP_ATTRIBUTE_MASK(TOKENIZE) }, /* UserLED */ \ - { ZAP_SIMPLE_DEFAULT(false), 0x00000003, 1, ZAP_TYPE(BOOLEAN), 0 }, /* UserButton */ \ - { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ +#define GENERATED_ATTRIBUTES \ + { \ + \ + /* Endpoint: 0, Cluster: Descriptor (server) */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* DeviceTypeList \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ServerList \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000002, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClientList \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000003, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* PartsList \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* FeatureMap */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000FFFD, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClusterRevision \ + */ \ + \ + /* Endpoint: 0, Cluster: Access Control (server) */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ACL */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* Extension */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000002, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SubjectsPerAccessControlEntry \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000003, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* TargetsPerAccessControlEntry \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000004, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* AccessControlEntriesPerFabric \ + */ \ + { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000FFFD, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClusterRevision \ + */ \ + \ + /* Endpoint: 0, Cluster: Basic Information (server) */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000000, 2, ZAP_TYPE(INT16U), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* DataModelRevision */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000001, 33, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* VendorName */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000002, 2, ZAP_TYPE(VENDOR_ID), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* VendorID */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000003, 33, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* ProductName */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000004, 2, ZAP_TYPE(INT16U), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* ProductID */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000005, 33, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* NodeLabel \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000006, 3, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) | \ + ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* Location */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000007, 2, ZAP_TYPE(INT16U), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* HardwareVersion */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000008, 65, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* HardwareVersionString */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000009, 4, ZAP_TYPE(INT32U), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* SoftwareVersion */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000000A, 65, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* SoftwareVersionString */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000000B, 17, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* ManufacturingDate */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000000F, 33, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* SerialNumber */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000012, 33, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* UniqueID */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000013, 0, ZAP_TYPE(STRUCT), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* CapabilityMinima \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000015, 4, ZAP_TYPE(INT32U), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* SpecificationVersion */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000016, 2, ZAP_TYPE(INT16U), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* MaxPathsPerInvoke */ \ + { ZAP_SIMPLE_DEFAULT(0), 0x00000017, 2, ZAP_TYPE(INT16U), \ + ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* RandomNumber */ \ + { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ + { ZAP_SIMPLE_DEFAULT(4), 0x0000FFFD, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(SINGLETON) }, /* ClusterRevision \ + */ \ + \ + /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* DefaultOTAProviders */ \ + { ZAP_SIMPLE_DEFAULT(1), 0x00000001, 1, ZAP_TYPE(BOOLEAN), 0 }, /* UpdatePossible */ \ + { ZAP_SIMPLE_DEFAULT(0), 0x00000002, 1, ZAP_TYPE(ENUM8), 0 }, /* UpdateState */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000003, 1, ZAP_TYPE(INT8U), ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* UpdateStateProgress \ + */ \ + { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ + { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + \ + /* Endpoint: 0, Cluster: General Commissioning (server) */ \ + { ZAP_LONG_DEFAULTS_INDEX(0), 0x00000000, 8, ZAP_TYPE(INT64U), ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* Breadcrumb \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(STRUCT), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* BasicCommissioningInfo \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000002, 1, ZAP_TYPE(ENUM8), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* RegulatoryConfig \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000003, 1, ZAP_TYPE(ENUM8), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* LocationCapability \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000004, 1, ZAP_TYPE(BOOLEAN), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SupportsConcurrentConnection \ + */ \ + { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ + { ZAP_SIMPLE_DEFAULT(2), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + \ + /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000000, 1, ZAP_TYPE(INT8U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* MaxNetworks \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* Networks \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000002, 1, ZAP_TYPE(INT8U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ScanMaxTimeSeconds \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000003, 1, ZAP_TYPE(INT8U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ConnectMaxTimeSeconds \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000004, 1, ZAP_TYPE(BOOLEAN), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* InterfaceEnabled */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000005, 1, ZAP_TYPE(ENUM8), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LastNetworkingStatus */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000006, 33, ZAP_TYPE(OCTET_STRING), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LastNetworkID */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000007, 4, ZAP_TYPE(INT32S), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LastConnectErrorValue */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000008, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SupportedWiFiBands \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000009, 2, ZAP_TYPE(BITMAP16), 0 }, /* SupportedThreadFeatures */ \ + { ZAP_SIMPLE_DEFAULT(4), 0x0000000A, 2, ZAP_TYPE(INT16U), 0 }, /* ThreadVersion */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* FeatureMap */ \ + { ZAP_SIMPLE_DEFAULT(2), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + \ + /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* NetworkInterfaces \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000001, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* RebootCount \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000002, 8, ZAP_TYPE(INT64U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* UpTime \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000003, 4, ZAP_TYPE(INT32U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* TotalOperationalHours \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000004, 1, ZAP_TYPE(ENUM8), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* BootReason \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000008, 1, ZAP_TYPE(BOOLEAN), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* TestEventTriggersEnabled \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* FeatureMap */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000FFFD, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClusterRevision \ + */ \ + \ + /* Endpoint: 0, Cluster: Administrator Commissioning (server) */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000000, 1, ZAP_TYPE(ENUM8), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* WindowStatus \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000001, 1, ZAP_TYPE(FABRIC_IDX), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* AdminFabricIndex */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000002, 2, ZAP_TYPE(VENDOR_ID), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* AdminVendorId */ \ + { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ + { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + \ + /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* NOCs \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* Fabrics \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000002, 1, ZAP_TYPE(INT8U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SupportedFabrics \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000003, 1, ZAP_TYPE(INT8U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* CommissionedFabrics \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000004, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* TrustedRootCertificates \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000005, 1, ZAP_TYPE(INT8U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* CurrentFabricIndex \ + */ \ + { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ + { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + \ + /* Endpoint: 0, Cluster: Group Key Management (server) */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* GroupKeyMap */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000001, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* GroupTable \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000002, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* MaxGroupsPerFabric \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x00000003, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* MaxGroupKeysPerFabric \ + */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), \ + ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* FeatureMap */ \ + { ZAP_EMPTY_DEFAULT(), 0x0000FFFD, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ClusterRevision \ + */ \ + \ + /* Endpoint: 1, Cluster: NordicDevKit (server) */ \ + { ZAP_LONG_DEFAULTS_INDEX(8), 0xFFF10000, 255, ZAP_TYPE(CHAR_STRING), \ + ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* DevKitName */ \ + { ZAP_SIMPLE_DEFAULT(false), 0xFFF10001, 1, ZAP_TYPE(BOOLEAN), 0 }, /* UserLED */ \ + { ZAP_SIMPLE_DEFAULT(false), 0xFFF10002, 1, ZAP_TYPE(BOOLEAN), 0 }, /* UserButton */ \ + { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ + { ZAP_SIMPLE_DEFAULT(1), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ } // clang-format off -#define GENERATED_EVENT_COUNT 6 +#define GENERATED_EVENT_COUNT 8 #define GENERATED_EVENTS { \ /* Endpoint: 0, Cluster: Basic Information (server) */ \ /* EventList (index=0) */ \ 0x00000000, /* StartUp */ \ 0x00000001, /* ShutDown */ \ 0x00000002, /* Leave */ \ + 0x00000004, /* RandomNumberChanged */ \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ - /* EventList (index=3) */ \ + /* EventList (index=4) */ \ 0x00000000, /* StateTransition */ \ 0x00000001, /* VersionApplied */ \ 0x00000002, /* DownloadError */ \ + /* Endpoint: 1, Cluster: NordicDevKit (server) */ \ + /* EventList (index=7) */ \ + 0xFFF10000, /* UserButtonChanged */ \ } // clang-format on @@ -371,7 +422,7 @@ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: NordicDevKit (server) */\ /* AcceptedCommandList (index=54) */ \ - 0x00000000 /* SetLED */, \ + 0xFFF10000 /* SetLED */, \ chip::kInvalidCommandId /* end of list */, \ } @@ -431,7 +482,7 @@ .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 0 ), \ .generatedCommandList = nullptr, \ .eventList = ZAP_GENERATED_EVENTS_INDEX( 0 ), \ - .eventCount = 3, \ + .eventCount = 4, \ },\ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (client) */ \ @@ -456,7 +507,7 @@ .functions = NULL, \ .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 2 ), \ .generatedCommandList = nullptr, \ - .eventList = ZAP_GENERATED_EVENTS_INDEX( 3 ), \ + .eventList = ZAP_GENERATED_EVENTS_INDEX( 4 ), \ .eventCount = 3, \ },\ { \ @@ -560,8 +611,8 @@ .functions = NULL, \ .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 54 ), \ .generatedCommandList = nullptr, \ - .eventList = nullptr, \ - .eventCount = 0, \ + .eventList = ZAP_GENERATED_EVENTS_INDEX( 7 ), \ + .eventCount = 1, \ },\ } @@ -572,7 +623,8 @@ // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 12, 86 }, { ZAP_CLUSTER_INDEX(12), 2, 263 }, \ + { ZAP_CLUSTER_INDEX(0), 12, 86 }, \ + { ZAP_CLUSTER_INDEX(12), 2, 263 }, \ } // Largest attribute size is needed for various buffers @@ -592,16 +644,10 @@ static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE, // Array of endpoints that are supported, the data inside // the array is the endpoint number. -#define FIXED_ENDPOINT_ARRAY \ - { \ - 0x0000, 0x0001 \ - } +#define FIXED_ENDPOINT_ARRAY { 0x0000, 0x0001 } // Array of profile ids -#define FIXED_PROFILE_IDS \ - { \ - 0x0103, 0x0FFF \ - } +#define FIXED_PROFILE_IDS { 0x0103, 0x0FFF } // Array of device types #define FIXED_DEVICE_TYPES \ @@ -613,25 +659,13 @@ static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE, } // Array of device type offsets -#define FIXED_DEVICE_TYPE_OFFSETS \ - { \ - 0, 2 \ - } +#define FIXED_DEVICE_TYPE_OFFSETS { 0, 2 } // Array of device type lengths -#define FIXED_DEVICE_TYPE_LENGTHS \ - { \ - 2, 1 \ - } +#define FIXED_DEVICE_TYPE_LENGTHS { 2, 1 } // Array of endpoint types supported on each endpoint -#define FIXED_ENDPOINT_TYPES \ - { \ - 0, 1 \ - } +#define FIXED_ENDPOINT_TYPES { 0, 1 } // Array of parent endpoints for each endpoint -#define FIXED_PARENT_ENDPOINTS \ - { \ - kInvalidEndpointId, kInvalidEndpointId \ - } +#define FIXED_PARENT_ENDPOINTS { kInvalidEndpointId, kInvalidEndpointId }