diff --git a/CMakeLists.txt b/CMakeLists.txt index 89f883b..720e7d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,12 @@ find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) project(msc_dynamic) +include(${ZEPHYR_NRF_MODULE_DIR}/samples/matter/common/cmake/zap_helpers.cmake) +ncs_get_zap_parent_dir(ZAP_PARENT_DIR) + +# Override zap-generated directory. +get_filename_component(CHIP_APP_ZAP_DIR ${ZAP_PARENT_DIR}/zap-generated REALPATH CACHE) + # Enable GNU STD support. include(${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/config/nrfconnect/app/enable-gnu-std.cmake) @@ -21,9 +27,6 @@ include(${ZEPHYR_NRF_MODULE_DIR}/samples/matter/common/cmake/source_common.cmake # Include Data Model utils include(${ZEPHYR_NRF_MODULE_DIR}/samples/matter/common/cmake/data_model.cmake) -include(${ZEPHYR_NRF_MODULE_DIR}/samples/matter/common/cmake/zap_helpers.cmake) -ncs_get_zap_parent_dir(ZAP_PARENT_DIR) - target_include_directories(app PRIVATE src ${ZAP_PARENT_DIR} @@ -31,8 +34,9 @@ target_include_directories(app PRIVATE target_sources(app PRIVATE src/app_task.cpp + src/zcl_callbacks.cpp src/main.cpp ) -ncs_configure_data_model() +ncs_configure_data_model(EXTERNAL_CLUSTERS "MY_CLUSTER") # NORDIC SDK APP END diff --git a/src/default_zap/NewCluster.xml b/src/default_zap/NewCluster.xml new file mode 100644 index 0000000..749b1f7 --- /dev/null +++ b/src/default_zap/NewCluster.xml @@ -0,0 +1,19 @@ + + + + General + MyCluster + 0xFFF1FC01 + MY_CLUSTER + The cluster showcases a cluster manufacturer extensions + + Change LED state + + Attr1 + Attr2 + + + Event 1. + + + \ No newline at end of file diff --git a/src/default_zap/template.zap b/src/default_zap/template.zap index 8fea843..382f2a1 100644 --- a/src/default_zap/template.zap +++ b/src/default_zap/template.zap @@ -19,7 +19,7 @@ "package": [ { "pathRelativity": "relativeToZap", - "path": "../../../../../../modules/lib/matter/src/app/zap-templates/zcl/zcl.json", + "path": "zcl.json", "type": "zcl-properties", "category": "matter", "version": 1, @@ -27,7 +27,7 @@ }, { "pathRelativity": "relativeToZap", - "path": "../../../../../../modules/lib/matter/src/app/zap-templates/app-templates.json", + "path": "../../../../../source/v3.1.1/modules/lib/matter/src/app/zap-templates/app-templates.json", "type": "gen-templates-json", "category": "matter", "version": "chip-v1" @@ -2467,6 +2467,660 @@ ] } ] + }, + { + "id": 2, + "name": "Anonymous Endpoint Type", + "deviceTypeRef": { + "code": 514, + "profileId": 259, + "label": "MA-windowcovering", + "name": "MA-windowcovering", + "deviceTypeOrder": 0 + }, + "deviceTypes": [ + { + "code": 514, + "profileId": 259, + "label": "MA-windowcovering", + "name": "MA-windowcovering", + "deviceTypeOrder": 0 + } + ], + "deviceVersions": [ + 4 + ], + "deviceIdentifiers": [ + 514 + ], + "deviceTypeName": "MA-windowcovering", + "deviceTypeCode": 514, + "deviceTypeProfileId": 259, + "clusters": [ + { + "name": "Identify", + "code": 3, + "mfgCode": null, + "define": "IDENTIFY_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "Identify", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "IdentifyTime", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "IdentifyType", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "IdentifyTypeEnum", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "5", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Descriptor", + "code": 29, + "mfgCode": null, + "define": "DESCRIPTOR_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "DeviceTypeList", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ServerList", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClientList", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PartsList", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Window Covering", + "code": 258, + "mfgCode": null, + "define": "WINDOW_COVERING_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "UpOrOpen", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "DownOrClose", + "code": 1, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "StopMotion", + "code": 2, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "Type", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "Type", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ConfigStatus", + "code": 7, + "mfgCode": null, + "side": "server", + "type": "ConfigStatus", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x03", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "OperationalStatus", + "code": 10, + "mfgCode": null, + "side": "server", + "type": "OperationalStatus", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EndProductType", + "code": 13, + "mfgCode": null, + "side": "server", + "type": "EndProductType", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Mode", + "code": 23, + "mfgCode": null, + "side": "server", + "type": "Mode", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "5", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "MyCluster", + "code": 4294048769, + "mfgCode": null, + "define": "MY_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "MyCommand", + "code": 4293984256, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Attr1", + "code": 4293984256, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "Attribute 1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Attr2", + "code": 4293984257, + "mfgCode": null, + "side": "server", + "type": "boolean", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ], + "events": [ + { + "name": "Event1", + "code": 4293984256, + "mfgCode": null, + "side": "server", + "included": 1 + } + ] + } + ] } ], "endpoints": [ @@ -2477,6 +3131,14 @@ "endpointId": 0, "networkId": 0, "parentEndpointIdentifier": null + }, + { + "endpointTypeName": "Anonymous Endpoint Type", + "endpointTypeIndex": 1, + "profileId": 259, + "endpointId": 1, + "networkId": 0, + "parentEndpointIdentifier": null } ] } \ No newline at end of file diff --git a/src/default_zap/zcl.json b/src/default_zap/zcl.json new file mode 100644 index 0000000..463d9a3 --- /dev/null +++ b/src/default_zap/zcl.json @@ -0,0 +1,896 @@ +{ + "description": "Matter SDK ZCL data", + "category": "matter", + "version": 1, + "requiredFeatureLevel": 102, + "xmlRoot": [ + "../../../../../source/v3.1.1/modules/lib/matter/src/app/zap-templates/zcl", + "../../../../../source/v3.1.1/modules/lib/matter/src/app/zap-templates/zcl/data-model/chip", + "." + ], + "_comment": "Ensure access-control-definitions.xml is first in xmlFile array", + "xmlFile": [ + "access-control-definitions.xml", + "chip-types.xml", + "access-control-cluster.xml", + "account-login-cluster.xml", + "administrator-commissioning-cluster.xml", + "air-quality-cluster.xml", + "application-basic-cluster.xml", + "application-launcher-cluster.xml", + "audio-output-cluster.xml", + "ballast-configuration-cluster.xml", + "basic-information-cluster.xml", + "binding-cluster.xml", + "boolean-state-cluster.xml", + "boolean-state-configuration-cluster.xml", + "actions-cluster.xml", + "bridged-device-basic-information-cluster.xml", + "camera-av-settings-user-level-management-cluster.xml", + "camera-av-stream-management-cluster.xml", + "chime-cluster.xml", + "chip-ota.xml", + "channel-cluster.xml", + "closure-control-cluster.xml", + "closure-dimension-cluster.xml", + "clusters-extensions.xml", + "color-control-cluster.xml", + "commissioner-control-cluster.xml", + "commodity-metering-cluster.xml", + "commodity-price-cluster.xml", + "commodity-tariff-cluster.xml", + "concentration-measurement-cluster.xml", + "content-launch-cluster.xml", + "content-app-observer-cluster.xml", + "content-control-cluster.xml", + "descriptor-cluster.xml", + "device-energy-management-cluster.xml", + "device-energy-management-mode-cluster.xml", + "diagnostic-logs-cluster.xml", + "dishwasher-alarm-cluster.xml", + "dishwasher-mode-cluster.xml", + "microwave-oven-mode-cluster.xml", + "meter-identification-cluster.xml", + "door-lock-cluster.xml", + "ecosystem-information-cluster.xml", + "electrical-energy-measurement-cluster.xml", + "electrical-grid-conditions-cluster.xml", + "electrical-power-measurement-cluster.xml", + "energy-evse-cluster.xml", + "energy-evse-mode-cluster.xml", + "energy-preference-cluster.xml", + "ethernet-network-diagnostics-cluster.xml", + "fan-control-cluster.xml", + "fault-injection-cluster.xml", + "fixed-label-cluster.xml", + "flow-measurement-cluster.xml", + "general-commissioning-cluster.xml", + "general-diagnostics-cluster.xml", + "global-attributes.xml", + "global-bitmaps.xml", + "global-enums.xml", + "global-structs.xml", + "groups-cluster.xml", + "group-key-mgmt-cluster.xml", + "icd-management-cluster.xml", + "identify-cluster.xml", + "illuminance-measurement-cluster.xml", + "joint-fabric-datastore-cluster.xml", + "joint-fabric-administrator-cluster.xml", + "keypad-input-cluster.xml", + "laundry-washer-mode-cluster.xml", + "laundry-dryer-controls-cluster.xml", + "level-control-cluster.xml", + "localization-configuration-cluster.xml", + "low-power-cluster.xml", + "measurement-and-sensing.xml", + "media-input-cluster.xml", + "media-playback-cluster.xml", + "messages-cluster.xml", + "mode-base-cluster.xml", + "mode-select-cluster.xml", + "push-av-stream-transport-cluster.xml", + "semantic-tag-namespace-enums.xml", + "network-commissioning-cluster.xml", + "occupancy-sensing-cluster.xml", + "onoff-cluster.xml", + "operational-credentials-cluster.xml", + "operational-state-cluster.xml", + "operational-state-oven-cluster.xml", + "operational-state-rvc-cluster.xml", + "oven-mode-cluster.xml", + "power-topology-cluster.xml", + "pressure-measurement-cluster.xml", + "power-source-cluster.xml", + "power-source-configuration-cluster.xml", + "proxy-configuration-cluster.xml", + "proxy-discovery-cluster.xml", + "proxy-valid-cluster.xml", + "pump-configuration-and-control-cluster.xml", + "pwm-cluster.xml", + "refrigerator-and-temperature-controlled-cabinet-mode-cluster.xml", + "refrigerator-alarm.xml", + "relative-humidity-measurement-cluster.xml", + "rvc-clean-mode-cluster.xml", + "rvc-run-mode-cluster.xml", + "resource-monitoring-cluster.xml", + "scene.xml", + "service-area-cluster.xml", + "smoke-co-alarm-cluster.xml", + "software-diagnostics-cluster.xml", + "soil-measurement-cluster.xml", + "switch-cluster.xml", + "target-navigator-cluster.xml", + "temperature-control-cluster.xml", + "microwave-oven-control-cluster.xml", + "temperature-measurement-cluster.xml", + "test-cluster.xml", + "thermostat-cluster.xml", + "thermostat-user-interface-configuration-cluster.xml", + "thread-border-router-management-cluster.xml", + "thread-network-diagnostics-cluster.xml", + "thread-network-directory-cluster.xml", + "time-format-localization-cluster.xml", + "time-synchronization-cluster.xml", + "timer-cluster.xml", + "tls-certificate-management-cluster.xml", + "tls-client-management-cluster.xml", + "user-label-cluster.xml", + "unit-localization-cluster.xml", + "valve-configuration-and-control-cluster.xml", + "wake-on-lan-cluster.xml", + "washer-controls-cluster.xml", + "water-heater-management-cluster.xml", + "water-heater-mode-cluster.xml", + "webrtc-provider-cluster.xml", + "webrtc-requestor-cluster.xml", + "wifi-network-diagnostics-cluster.xml", + "wifi-network-management-cluster.xml", + "window-covering.xml", + "matter-devices.xml", + "sample-mei-cluster.xml", + "zone-management-cluster.xml", + "NewCluster.xml" + ], + "manufacturersXml": "../../../../../source/v3.1.1/modules/lib/matter/src/app/zap-templates/zcl/data-model/manufacturers.xml", + "options": { + "text": { + "defaultResponsePolicy": [ + "Always", + "Conditional", + "Never" + ] + }, + "bool": [ + "commandDiscovery" + ] + }, + "defaults": { + "text": { + "manufacturerCodes": "0x1002", + "defaultResponsePolicy": "always" + }, + "bool": { + "commandDiscovery": true + } + }, + "listsUseAttributeAccessInterface": true, + "attributeAccessInterfaceAttributes": { + "Access Control": [ + "ClusterRevision", + "SubjectsPerAccessControlEntry", + "TargetsPerAccessControlEntry", + "AccessControlEntriesPerFabric", + "FeatureMap" + ], + "Administrator Commissioning": [ + "ClusterRevision", + "WindowStatus", + "AdminFabricIndex", + "AdminVendorId" + ], + "Basic Information": [ + "DataModelRevision", + "VendorName", + "VendorID", + "ProductName", + "ProductID", + "Location", + "HardwareVersion", + "HardwareVersionString", + "SoftwareVersion", + "SoftwareVersionString", + "ManufacturingDate", + "PartNumber", + "ProductURL", + "ProductLabel", + "SerialNumber", + "UniqueID", + "CapabilityMinima", + "ProductAppearance", + "SpecificationVersion", + "MaxPathsPerInvoke" + ], + "Bridged Device Basic Information": [ + "ProductAppearance" + ], + "Chime": [ + "SelectedChime", + "Enabled" + ], + "Closure Control": [ + "CountdownTime", + "OverallCurrentState", + "OverallTargetState", + "FeatureMap", + "ClusterRevision" + ], + "Closure Dimension": [ + "CurrentState", + "Target", + "UnitRange", + "LimitRange", + "FeatureMap", + "ClusterRevision" + ], + "Commodity Price": [ + "TariffUnit", + "Currency", + "CurrentPrice", + "PriceForecast", + "FeatureMap" + ], + "Commodity Tariff": [ + "TariffInfo", + "CurrentDay", + "NextDay", + "CurrentDayEntry", + "NextDayEntry" + ], + "Descriptor": [ + "ClusterRevision", + "FeatureMap" + ], + "Device Energy Management": [ + "ESAType", + "ESACanGenerate", + "ESAState", + "AbsMinPower", + "AbsMaxPower", + "PowerAdjustmentCapability", + "Forecast", + "OptOutState", + "FeatureMap" + ], + "Device Energy Management Mode": [ + "SupportedModes", + "CurrentMode", + "FeatureMap" + ], + "Door Lock": [ + "AliroReaderVerificationKey", + "AliroReaderGroupIdentifier", + "AliroReaderGroupSubIdentifier", + "AliroGroupResolvingKey", + "AliroBLEAdvertisingVersion", + "NumberOfAliroCredentialIssuerKeysSupported", + "NumberOfAliroEndpointKeysSupported" + ], + "Energy EVSE": [ + "State", + "SupplyState", + "FaultState", + "ChargingEnabledUntil", + "DischargingEnabledUntil", + "CircuitCapacity", + "MinimumChargeCurrent", + "MaximumChargeCurrent", + "MaximumDischargeCurrent", + "UserMaximumChargeCurrent", + "RandomizationDelayWindow", + "NextChargeStartTime", + "NextChargeTargetTime", + "NextChargeRequiredEnergy", + "NextChargeTargetSoC", + "ApproximateEVEfficiency", + "StateOfCharge", + "BatteryCapacity", + "VehicleID", + "SessionID", + "SessionDuration", + "SessionEnergyCharged", + "SessionEnergyDischarged", + "FeatureMap" + ], + "Energy EVSE Mode": [ + "SupportedModes", + "CurrentMode", + "FeatureMap" + ], + "Ethernet Network Diagnostics": [ + "PHYRate", + "FullDuplex", + "CarrierDetect", + "TimeSinceReset", + "PacketRxCount", + "PacketTxCount", + "TxErrCount", + "CollisionCount", + "OverrunCount" + ], + "General Commissioning": [ + "RegulatoryConfig", + "LocationCapability", + "BasicCommissioningInfo", + "SupportsConcurrentConnection" + ], + "General Diagnostics": [ + "NetworkInterfaces", + "ActiveHardwareFaults", + "ActiveRadioFaults", + "ActiveNetworkFaults", + "RebootCount", + "UpTime", + "TotalOperationalHours", + "BootReason", + "FeatureMap", + "ClusterRevision" + ], + "Group Key Management": [ + "ClusterRevision", + "MaxGroupsPerFabric", + "MaxGroupKeysPerFabric", + "FeatureMap" + ], + "ICD Management": [ + "IdleModeDuration", + "ActiveModeDuration", + "ActiveModeThreshold", + "RegisteredClients", + "ICDCounter", + "ClientsSupportedPerFabric", + "MaximumCheckInBackOff", + "OperatingMode", + "FeatureMap" + ], + "Joint Fabric Datastore": [ + "Status" + ], + "Meter Identification": [ + "MeterType", + "PointOfDelivery", + "MeterSerialNumber", + "ProtocolVersion", + "PowerThreshold", + "FeatureMap" + ], + "Network Commissioning": [ + "ClusterRevision", + "ConnectMaxTimeSeconds", + "FeatureMap", + "InterfaceEnabled", + "LastConnectErrorValue", + "LastNetworkID", + "LastNetworkingStatus", + "MaxNetworks", + "Networks", + "ScanMaxTimeSeconds", + "SupportedThreadFeatures", + "SupportedWiFiBands", + "ThreadVersion" + ], + "Occupancy Sensing": [ + "HoldTimeLimits", + "HoldTime", + "PIROccupiedToUnoccupiedDelay", + "UltrasonicOccupiedToUnoccupiedDelay", + "PhysicalContactOccupiedToUnoccupiedDelay", + "FeatureMap" + ], + "Operational Credentials": [ + "SupportedFabrics", + "CommissionedFabrics", + "CurrentFabricIndex" + ], + "Software Diagnostics": [ + "ClusterRevision", + "CurrentHeapFree", + "CurrentHeapHighWatermark", + "CurrentHeapUsed", + "FeatureMap", + "ThreadMetrics" + ], + "Unit Testing": [ + "struct_attr", + "nullable_struct", + "general_error_boolean", + "cluster_error_boolean", + "global_struct", + "nullable_global_struct" + ], + "Thread Border Router Management": [ + "BorderRouterName", + "BorderAgentID", + "ThreadVersion", + "InterfaceEnabled", + "ActiveDatasetTimestamp", + "PendingDatasetTimestamp", + "FeatureMap" + ], + "Thread Network Diagnostics": [ + "Channel", + "RoutingRole", + "NetworkName", + "PanId", + "ExtendedPanId", + "MeshLocalPrefix", + "OverrunCount", + "PartitionId", + "Weighting", + "DataVersion", + "StableDataVersion", + "LeaderRouterId", + "DetachedRoleCount", + "ChildRoleCount", + "RouterRoleCount", + "LeaderRoleCount", + "AttachAttemptCount", + "PartitionIdChangeCount", + "BetterPartitionAttachAttemptCount", + "ParentChangeCount", + "TxTotalCount", + "TxUnicastCount", + "TxBroadcastCount", + "TxAckRequestedCount", + "TxAckedCount", + "TxNoAckRequestedCount", + "TxDataCount", + "TxDataPollCount", + "TxBeaconCount", + "TxBeaconRequestCount", + "TxOtherCount", + "TxRetryCount", + "TxDirectMaxRetryExpiryCount", + "TxIndirectMaxRetryExpiryCount", + "TxErrCcaCount", + "TxErrAbortCount", + "TxErrBusyChannelCount", + "RxTotalCount", + "RxUnicastCount", + "RxBroadcastCount", + "RxDataCount", + "RxDataPollCount", + "RxBeaconCount", + "RxBeaconRequestCount", + "RxOtherCount", + "RxAddressFilteredCount", + "RxDestAddrFilteredCount", + "RxDuplicatedCount", + "RxErrNoFrameCount", + "RxErrUnknownNeighborCount", + "RxErrInvalidSrcAddrCount", + "RxErrSecCount", + "RxErrFcsCount", + "RxErrOtherCount", + "ActiveTimestamp", + "PendingTimestamp", + "Delay", + "SecurityPolicy", + "ChannelPage0Mask", + "OperationalDatasetComponents", + "ExtAddress", + "Rloc16" + ], + "Wi-Fi Network Diagnostics": [ + "BSSID", + "SecurityType", + "WiFiVersion", + "ChannelNumber", + "RSSI", + "BeaconLostCount", + "BeaconRxCount", + "PacketMulticastRxCount", + "PacketMulticastTxCount", + "PacketUnicastRxCount", + "PacketUnicastTxCount", + "CurrentMaxRate", + "OverrunCount" + ], + "Channel": [ + "Lineup", + "CurrentChannel" + ], + "Media Playback": [ + "SampledPosition", + "ActiveAudioTrack", + "ActiveTextTrack" + ], + "Application Launcher": [ + "CurrentApp" + ], + "Application Basic": [ + "Application" + ], + "Time Synchronization": [ + "TrustedTimeSource", + "DefaultNTP", + "TimeZone", + "DSTOffset", + "UTCTime", + "LocalTime", + "Granularity", + "TimeZoneListMaxSize", + "DSTOffsetListMaxSize" + ], + "Temperature Control": [ + "SupportedTemperatureLevels" + ], + "Dishwasher Mode": [ + "SupportedModes", + "CurrentMode", + "FeatureMap" + ], + "Microwave Oven Mode": [ + "SupportedModes", + "CurrentMode", + "FeatureMap" + ], + "Microwave Oven Control": [ + "CookTime", + "MaxCookTime", + "PowerSetting", + "MinPower", + "MaxPower", + "PowerStep", + "SupportedWatts", + "SelectedWattIndex", + "WattRating", + "FeatureMap" + ], + "Laundry Washer Mode": [ + "SupportedModes", + "CurrentMode", + "FeatureMap" + ], + "Refrigerator And Temperature Controlled Cabinet Mode": [ + "SupportedModes", + "CurrentMode", + "FeatureMap" + ], + "RVC Clean Mode": [ + "SupportedModes", + "CurrentMode", + "FeatureMap" + ], + "RVC Run Mode": [ + "SupportedModes", + "CurrentMode", + "FeatureMap" + ], + "Operational State": [ + "OperationalState", + "OperationalError", + "CurrentPhase", + "CountdownTime" + ], + "RVC Operational State": [ + "OperationalState", + "OperationalError", + "CurrentPhase", + "CountdownTime" + ], + "Oven Cavity Operational State": [ + "OperationalState", + "OperationalError", + "CurrentPhase", + "CountdownTime" + ], + "Activated Carbon Filter Monitoring": [ + "Condition", + "DegradationDirection", + "ChangeIndication", + "InPlaceIndicator", + "LastChangedTime", + "ReplacementProductList", + "FeatureMap" + ], + "HEPA Filter Monitoring": [ + "Condition", + "DegradationDirection", + "ChangeIndication", + "InPlaceIndicator", + "LastChangedTime", + "ReplacementProductList", + "FeatureMap" + ], + "Carbon Monoxide Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "Carbon Dioxide Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "Nitrogen Dioxide Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "Ozone Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "PM2.5 Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "Formaldehyde Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "PM1 Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "PM10 Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "Total Volatile Organic Compounds Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "Radon Concentration Measurement": [ + "MeasuredValue", + "MinMeasuredValue", + "MaxMeasuredValue", + "PeakMeasuredValue", + "PeakMeasuredValueWindow", + "AverageMeasuredValue", + "AverageMeasuredValueWindow", + "Uncertainty", + "MeasurementUnit", + "MeasurementMedium", + "LevelValue", + "FeatureMap" + ], + "Air Quality": [ + "AirQuality", + "FeatureMap" + ], + "Electrical Energy Measurement": [ + "Accuracy", + "CumulativeEnergyImported", + "CumulativeEnergyExported", + "PeriodicEnergyImported", + "PeriodicEnergyExported", + "CumulativeEnergyReset", + "FeatureMap" + ], + "Electrical Grid Conditions": [ + "LocalGenerationAvailable", + "CurrentConditions", + "ForecastConditions", + "FeatureMap" + ], + "Electrical Power Measurement": [ + "PowerMode", + "NumberOfMeasurementTypes", + "Accuracy", + "Ranges", + "Voltage", + "ActiveCurrent", + "ReactiveCurrent", + "ApparentCurrent", + "ActivePower", + "ReactivePower", + "ApparentPower", + "RMSVoltage", + "RMSCurrent", + "RMSPower", + "Frequency", + "HarmonicCurrents", + "HarmonicPhases", + "PowerFactor", + "NeutralCurrent", + "FeatureMap" + ], + "Power Topology": [ + "FeatureMap" + ], + "Valve Configuration and Control": [ + "RemainingDuration" + ], + "Boolean State Configuration": [ + "CurrentSensitivityLevel" + ], + "Water Heater Management": [ + "HeaterTypes", + "HeatDemand", + "TankVolume", + "EstimatedHeatRequired", + "TankPercentage", + "BoostState", + "FeatureMap", + "ClusterRevision" + ], + "Water Heater Mode": [ + "SupportedModes", + "CurrentMode", + "FeatureMap" + ], + "Wi-Fi Network Management": [ + "SSID", + "PassphraseSurrogate" + ], + "Thread Network Directory": [ + "PreferredExtendedPanID", + "ThreadNetworks", + "ThreadNetworkTableSize" + ], + "Service Area": [ + "CurrentArea", + "EstimatedEndTime", + "FeatureMap" + ], + "Camera AV Stream Management": [ + "VideoSensorParams", + "MinViewport", + "MicrophoneCapabilities", + "SpeakerCapabilities", + "Viewport", + "MaxConcurrentEncoders", + "MaxEncodedPixelRate", + "NightVisionUsesInfrared", + "MaxContentBufferSize", + "TwoWayTalkSupport", + "MaxNetworkBandwidth", + "CurrentFrameRate", + "HDRModeEnabled", + "SoftRecordingPrivacyModeEnabled", + "SoftLivestreamPrivacyModeEnabled", + "HardPrivacyModeOn", + "NightVision", + "NightVisionIllum", + "SpeakerMuted", + "SpeakerVolumeLevel", + "SpeakerMaxLevel", + "SpeakerMinLevel", + "MicrophoneMuted", + "MicrophoneVolumeLevel", + "MicrophoneMaxLevel", + "MicrophoneMinLevel", + "MicrophoneAGCEnabled", + "ImageRotation", + "ImageFlipHorizontal", + "ImageFlipVertical", + "LocalVideoRecordingEnabled", + "LocalSnapshotRecordingEnabled", + "StatusLightEnabled", + "StatusLightBrightness", + "FeatureMap" + ], + "Camera AV Settings User Level Management": [ + "MPTZPosition" + ], + "Soil Measurement": [ + "SoilMoistureMeasurementLimits", + "SoilMoistureMeasuredValue", + "ClusterRevision" + ], + "Unit Localization": [ + "TemperatureUnit" + ], + "Zone Management": [ + "TwoDCartesianMax" + ] + }, + "mandatoryDeviceTypes": "0x0016", + "defaultReportingPolicy": "mandatory", + "ZCLDataTypes": [ + "ARRAY", + "BITMAP", + "ENUM", + "NUMBER", + "STRING", + "STRUCT" + ], + "fabricHandling": { + "automaticallyCreateFields": true, + "indexFieldId": 254, + "indexFieldName": "FabricIndex", + "indexType": "fabric_idx" + }, + "uiOptions": { + "showProfileId": false + } +} \ No newline at end of file diff --git a/src/zcl_callbacks.cpp b/src/zcl_callbacks.cpp new file mode 100644 index 0000000..724a894 --- /dev/null +++ b/src/zcl_callbacks.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause + */ + +#include + +#include "app_task.h" +#include "board/board.h" + +#include +#include +#include +#include + +using namespace ::chip; +using namespace ::chip::app; +using namespace ::chip::app::Clusters; + +void MatterPostAttributeChangeCallback(const ConcreteAttributePath &attributePath, uint8_t type, + uint16_t size, uint8_t *value) +{ + /* Intentionally empty */ +} + +void MatterMyClusterPluginServerInitCallback() +{ + // TODO: Initialization logic for your cluster +} + +void emberAfMyClusterClusterInitCallback(EndpointId endpoint) +{ + // TODO: Initialization logic for your cluster +} + +bool emberAfMyClusterClusterMyCommandCallback( + chip::app::CommandHandler *commandObj, + const chip::app::ConcreteCommandPath &commandPath, + const chip::app::Clusters::MyCluster::Commands::MyCommand::DecodableType + &commandData) +{ + return true; +}