diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index 184121fda55581..4d00cbf7abd2e3 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -2170,6 +2170,7 @@ server cluster ModeSelect = 80 { readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + readonly attribute int8u manufacturerExtension = 4293984257; request struct ChangeToModeRequest { INT8U newMode = 0; @@ -4324,6 +4325,7 @@ endpoint 1 { callback attribute attributeList; ram attribute featureMap default = 1; ram attribute clusterRevision default = 1; + ram attribute manufacturerExtension default = 255; } server cluster DoorLock { diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index 403d95a4cc02d8..7e80e7dfcaf693 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -18,7 +18,7 @@ "package": [ { "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/zcl/zcl.json", + "path": "../../../src/app/zap-templates/zcl/zcl-with-test-extensions.json", "version": "ZCL Test Data", "type": "zcl-properties" }, @@ -12664,6 +12664,22 @@ "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 + }, + { + "name": "ManufacturerExtension", + "code": 4293984257, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "255", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 } ] }, @@ -25142,6 +25158,5 @@ "endpointVersion": 1, "deviceIdentifier": 61442 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/scripts/tools/zap/convert.py b/scripts/tools/zap/convert.py index 143bd104d91ea1..1181ebe17d989f 100755 --- a/scripts/tools/zap/convert.py +++ b/scripts/tools/zap/convert.py @@ -16,6 +16,7 @@ # import argparse +import json import os import subprocess import sys @@ -66,9 +67,28 @@ def runArgumentsParser(): return zap_file +def detectZclFile(zapFile): + print(f"Searching for zcl file from {zapFile}") + + path = 'src/app/zap-templates/zcl/zcl.json' + + data = json.load(open(zapFile)) + for package in data["package"]: + if package["type"] != "zcl-properties": + continue + + # found the right path, try to figure out the actual path + if package["pathRelativity"] == "relativeToZap": + path = os.path.abspath(os.path.join(os.path.dirname(zapFile), package["path"])) + else: + path = package["path"] + + return getFilePath(path) + + def runConversion(zap_file): templates_file = getFilePath('src/app/zap-templates/app-templates.json') - zcl_file = getFilePath('src/app/zap-templates/zcl/zcl.json') + zcl_file = detectZclFile(zap_file) generator_dir = getDirPath('third_party/zap/repo') os.chdir(generator_dir) diff --git a/scripts/tools/zap/generate.py b/scripts/tools/zap/generate.py index 6d6b0848e3d1ed..72b63a1c7fbb6c 100755 --- a/scripts/tools/zap/generate.py +++ b/scripts/tools/zap/generate.py @@ -58,9 +58,27 @@ def getDirPath(name): return fullpath +def detectZclFile(zapFile): + print(f"Searching for zcl file from {zapFile}") + + path = 'src/app/zap-templates/zcl/zcl.json' + + data = json.load(open(zapFile)) + for package in data["package"]: + if package["type"] != "zcl-properties": + continue + + # found the right path, try to figure out the actual path + if package["pathRelativity"] == "relativeToZap": + path = os.path.abspath(os.path.join(os.path.dirname(zapFile), package["path"])) + else: + path = package["path"] + + return getFilePath(path) + + def runArgumentsParser(): default_templates = 'src/app/zap-templates/app-templates.json' - default_zcl = 'src/app/zap-templates/zcl/zcl.json' default_output_dir = 'zap-generated/' parser = argparse.ArgumentParser( @@ -68,8 +86,8 @@ def runArgumentsParser(): parser.add_argument('zap', help='Path to the application .zap file') parser.add_argument('-t', '--templates', default=default_templates, help='Path to the .zapt templates records to use for generating artifacts (default: "' + default_templates + '")') - parser.add_argument('-z', '--zcl', default=default_zcl, - help='Path to the zcl templates records to use for generating artifacts (default: "' + default_zcl + '")') + parser.add_argument('-z', '--zcl', + help='Path to the zcl templates records to use for generating artifacts (default: autodetect read from zap file)') parser.add_argument('-o', '--output-dir', default=None, help='Output directory for the generated files (default: automatically selected)') args = parser.parse_args() @@ -86,7 +104,12 @@ def runArgumentsParser(): output_dir = '' zap_file = getFilePath(args.zap) - zcl_file = getFilePath(args.zcl) + + if args.zcl: + zcl_file = getFilePath(args.zcl) + else: + zcl_file = detectZclFile(zap_file) + templates_file = getFilePath(args.templates) output_dir = getDirPath(output_dir) diff --git a/scripts/tools/zap/run_zaptool.sh b/scripts/tools/zap/run_zaptool.sh index c219a6cc560339..39cbed10554d9f 100755 --- a/scripts/tools/zap/run_zaptool.sh +++ b/scripts/tools/zap/run_zaptool.sh @@ -45,9 +45,16 @@ CHIP_ROOT="${SCRIPT_PATH%/scripts/tools/zap/run_zaptool.sh}" npm install fi + echo "ARGS: ${ZAP_ARGS[@]}" + + if [[ "${ZAP_ARGS[@]}" == *"all-clusters-app.zap"* ]]; then + ZCL_FILE="$CHIP_ROOT/src/app/zap-templates/zcl/zcl-with-test-extensions.json" + else + ZCL_FILE="$CHIP_ROOT/src/app/zap-templates/zcl/zcl.json" + fi + node src-script/zap-start.js --logToStdout \ --gen "$CHIP_ROOT/src/app/zap-templates/app-templates.json" \ - --zcl "$CHIP_ROOT/src/app/zap-templates/zcl/zcl.json" \ + --zcl "$ZCL_FILE" \ "${ZAP_ARGS[@]}" - ) diff --git a/src/app/zap-templates/zcl/data-model/test/mode-select-extensions.xml b/src/app/zap-templates/zcl/data-model/test/mode-select-extensions.xml new file mode 100644 index 00000000000000..c10c691c357481 --- /dev/null +++ b/src/app/zap-templates/zcl/data-model/test/mode-select-extensions.xml @@ -0,0 +1,37 @@ + + + + + + + + ManufacturerExtension + + + + Sample manufacturer specific extension command + + + diff --git a/src/app/zap-templates/zcl/zcl-with-test-extensions.json b/src/app/zap-templates/zcl/zcl-with-test-extensions.json new file mode 100644 index 00000000000000..d99dcd82e89bab --- /dev/null +++ b/src/app/zap-templates/zcl/zcl-with-test-extensions.json @@ -0,0 +1,262 @@ +{ + "version": "ZCL Test Data", + "xmlRoot": [ + ".", + "./data-model/chip/", + "./data-model/silabs/", + "./data-model/test" + ], + "_comment": "Ensure access-control-definitions.xml is first in xmlFile array", + "xmlFile": [ + "access-control-definitions.xml", + "access-control-cluster.xml", + "account-login-cluster.xml", + "administrator-commissioning-cluster.xml", + "application-basic-cluster.xml", + "application-launcher-cluster.xml", + "audio-output-cluster.xml", + "basic-information-cluster.xml", + "binding-cluster.xml", + "boolean-state-cluster.xml", + "bridged-actions-cluster.xml", + "bridged-device-basic.xml", + "chip-ota.xml", + "chip-types.xml", + "channel-cluster.xml", + "clusters-extensions.xml", + "content-launch-cluster.xml", + "descriptor-cluster.xml", + "diagnostic-logs-cluster.xml", + "door-lock-cluster.xml", + "ethernet-network-diagnostics-cluster.xml", + "fixed-label-cluster.xml", + "flow-measurement-cluster.xml", + "general-commissioning-cluster.xml", + "general-diagnostics-cluster.xml", + "global-attributes.xml", + "group-key-mgmt-cluster.xml", + "identify-cluster.xml", + "illuminance-measurement-cluster.xml", + "keypad-input-cluster.xml", + "localization-configuration-cluster.xml", + "low-power-cluster.xml", + "media-input-cluster.xml", + "media-playback-cluster.xml", + "mode-select-cluster.xml", + "mode-select-extensions.xml", + "network-commissioning-cluster.xml", + "onoff-cluster.xml", + "operational-credentials-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", + "relative-humidity-measurement-cluster.xml", + "scene.xml", + "software-diagnostics-cluster.xml", + "switch-cluster.xml", + "target-navigator-cluster.xml", + "temperature-measurement-cluster.xml", + "test-cluster.xml", + "thermostat-cluster.xml", + "thread-network-diagnostics-cluster.xml", + "time-format-localization-cluster.xml", + "time-synchronization-cluster.xml", + "user-label-cluster.xml", + "unit-localization-cluster.xml", + "wake-on-lan-cluster.xml", + "wifi-network-diagnostics-cluster.xml", + "window-covering.xml", + "matter-devices.xml", + "ami.xml", + "general.xml", + "ha-devices.xml", + "ha.xml", + "lo-devices.xml", + "types.xml", + "zll-devices.xml", + "zll.xml" + ], + "manufacturersXml": "../../../../third_party/zap/repo/zcl-builtin/shared/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" + ], + "AdministratorCommissioning": [ + "WindowStatus", + "AdminFabricIndex", + "AdminVendorId" + ], + "Basic": [ + "DataModelRevision", + "VendorName", + "VendorID", + "ProductName", + "ProductID", + "Location", + "HardwareVersion", + "HardwareVersionString", + "SoftwareVersion", + "SoftwareVersionString", + "ManufacturingDate", + "PartNumber", + "ProductURL", + "ProductLabel", + "SerialNumber", + "UniqueID", + "CapabilityMinima" + ], + "Descriptor": ["ClusterRevision"], + "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", + "BootReasons" + ], + "Group Key Management": [ + "ClusterRevision", + "MaxGroupsPerFabric", + "MaxGroupKeysPerFabric", + "FeatureMap" + ], + "Operational Credentials": [ + "SupportedFabrics", + "CommissionedFabrics", + "CurrentFabricIndex" + ], + "Software Diagnostics": [ + "CurrentHeapFree", + "CurrentHeapHighWatermark", + "CurrentHeapUsed", + "FeatureMap", + "ThreadMetrics" + ], + "Test Cluster": [ + "struct_attr", + "nullable_struct", + "general_error_boolean", + "cluster_error_boolean" + ], + "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", + "ChannelMask" + ], + "WiFi Network Diagnostics": [ + "bssid", + "SecurityType", + "WiFiVersion", + "ChannelNumber", + "Rssi", + "BeaconLostCount", + "BeaconRxCount", + "PacketMulticastRxCount", + "PacketMulticastTxCount", + "PacketUnicastRxCount", + "PacketUnicastTxCount", + "CurrentMaxRate", + "OverrunCount" + ] + }, + "defaultReportingPolicy": "mandatory", + "ZCLDataTypes": ["ARRAY", "BITMAP", "ENUM", "NUMBER", "STRING", "STRUCT"] +} diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h index 12cb42bab63ab0..75681c8af254d1 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -376,7 +376,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 725 +#define GENERATED_ATTRIBUTE_COUNT 726 #define GENERATED_ATTRIBUTES \ { \ \ @@ -891,8 +891,9 @@ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Mode Select (server) */ \ - { 0x00000000, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(20) }, /* Description */ \ - { 0x00000001, ZAP_TYPE(ENUM16), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0) }, /* StandardNamespace */ \ + { 0x00000000, ZAP_TYPE(CHAR_STRING), 33, 0, ZAP_LONG_DEFAULTS_INDEX(20) }, /* Description */ \ + { 0x00000001, ZAP_TYPE(ENUM16), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0) }, /* StandardNamespace */ \ + { 0xFFF10001, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(255) }, /* ManufacturerExtension */ \ { 0x00000002, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* SupportedModes */ \ { 0x00000003, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(TOKENIZE), ZAP_SIMPLE_DEFAULT(0) }, /* CurrentMode */ \ { 0x00000004, ZAP_TYPE(INT8U), 1, \ @@ -2379,8 +2380,8 @@ /* Endpoint: 1, Cluster: Mode Select (server) */ \ .clusterId = 0x00000050, \ .attributes = ZAP_ATTRIBUTE_INDEX(313), \ - .attributeCount = 8, \ - .clusterSize = 44, \ + .attributeCount = 9, \ + .clusterSize = 45, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayModeSelectServer, \ .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 122 ) ,\ @@ -2389,7 +2390,7 @@ { \ /* Endpoint: 1, Cluster: Door Lock (server) */ \ .clusterId = 0x00000101, \ - .attributes = ZAP_ATTRIBUTE_INDEX(321), \ + .attributes = ZAP_ATTRIBUTE_INDEX(322), \ .attributeCount = 33, \ .clusterSize = 55, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2400,7 +2401,7 @@ { \ /* Endpoint: 1, Cluster: Window Covering (server) */ \ .clusterId = 0x00000102, \ - .attributes = ZAP_ATTRIBUTE_INDEX(354), \ + .attributes = ZAP_ATTRIBUTE_INDEX(355), \ .attributeCount = 24, \ .clusterSize = 43, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2411,7 +2412,7 @@ { \ /* Endpoint: 1, Cluster: Barrier Control (server) */ \ .clusterId = 0x00000103, \ - .attributes = ZAP_ATTRIBUTE_INDEX(378), \ + .attributes = ZAP_ATTRIBUTE_INDEX(379), \ .attributeCount = 6, \ .clusterSize = 11, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2422,7 +2423,7 @@ { \ /* Endpoint: 1, Cluster: Pump Configuration and Control (server) */ \ .clusterId = 0x00000200, \ - .attributes = ZAP_ATTRIBUTE_INDEX(384), \ + .attributes = ZAP_ATTRIBUTE_INDEX(385), \ .attributeCount = 25, \ .clusterSize = 52, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2433,7 +2434,7 @@ { \ /* Endpoint: 1, Cluster: Thermostat (server) */ \ .clusterId = 0x00000201, \ - .attributes = ZAP_ATTRIBUTE_INDEX(409), \ + .attributes = ZAP_ATTRIBUTE_INDEX(410), \ .attributeCount = 20, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2444,7 +2445,7 @@ { \ /* Endpoint: 1, Cluster: Fan Control (server) */ \ .clusterId = 0x00000202, \ - .attributes = ZAP_ATTRIBUTE_INDEX(429), \ + .attributes = ZAP_ATTRIBUTE_INDEX(430), \ .attributeCount = 13, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2455,7 +2456,7 @@ { \ /* Endpoint: 1, Cluster: Thermostat User Interface Configuration (server) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(442), \ + .attributes = ZAP_ATTRIBUTE_INDEX(443), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2466,7 +2467,7 @@ { \ /* Endpoint: 1, Cluster: Color Control (server) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(447), \ + .attributes = ZAP_ATTRIBUTE_INDEX(448), \ .attributeCount = 54, \ .clusterSize = 345, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2477,7 +2478,7 @@ { \ /* Endpoint: 1, Cluster: Illuminance Measurement (server) */ \ .clusterId = 0x00000400, \ - .attributes = ZAP_ATTRIBUTE_INDEX(501), \ + .attributes = ZAP_ATTRIBUTE_INDEX(502), \ .attributeCount = 7, \ .clusterSize = 15, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2488,7 +2489,7 @@ { \ /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(508), \ + .attributes = ZAP_ATTRIBUTE_INDEX(509), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2499,7 +2500,7 @@ { \ /* Endpoint: 1, Cluster: Pressure Measurement (server) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(514), \ + .attributes = ZAP_ATTRIBUTE_INDEX(515), \ .attributeCount = 5, \ .clusterSize = 12, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2510,7 +2511,7 @@ { \ /* Endpoint: 1, Cluster: Flow Measurement (server) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(519), \ + .attributes = ZAP_ATTRIBUTE_INDEX(520), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2521,7 +2522,7 @@ { \ /* Endpoint: 1, Cluster: Relative Humidity Measurement (server) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(525), \ + .attributes = ZAP_ATTRIBUTE_INDEX(526), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2532,7 +2533,7 @@ { \ /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(531), \ + .attributes = ZAP_ATTRIBUTE_INDEX(532), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2543,7 +2544,7 @@ { \ /* Endpoint: 1, Cluster: IAS Zone (server) */ \ .clusterId = 0x00000500, \ - .attributes = ZAP_ATTRIBUTE_INDEX(536), \ + .attributes = ZAP_ATTRIBUTE_INDEX(537), \ .attributeCount = 7, \ .clusterSize = 20, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(MESSAGE_SENT_FUNCTION), \ @@ -2554,7 +2555,7 @@ { \ /* Endpoint: 1, Cluster: Wake on LAN (server) */ \ .clusterId = 0x00000503, \ - .attributes = ZAP_ATTRIBUTE_INDEX(543), \ + .attributes = ZAP_ATTRIBUTE_INDEX(544), \ .attributeCount = 3, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2565,7 +2566,7 @@ { \ /* Endpoint: 1, Cluster: Channel (server) */ \ .clusterId = 0x00000504, \ - .attributes = ZAP_ATTRIBUTE_INDEX(546), \ + .attributes = ZAP_ATTRIBUTE_INDEX(547), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2576,7 +2577,7 @@ { \ /* Endpoint: 1, Cluster: Target Navigator (server) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(549), \ + .attributes = ZAP_ATTRIBUTE_INDEX(550), \ .attributeCount = 4, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2587,7 +2588,7 @@ { \ /* Endpoint: 1, Cluster: Media Playback (server) */ \ .clusterId = 0x00000506, \ - .attributes = ZAP_ATTRIBUTE_INDEX(553), \ + .attributes = ZAP_ATTRIBUTE_INDEX(554), \ .attributeCount = 8, \ .clusterSize = 43, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2598,7 +2599,7 @@ { \ /* Endpoint: 1, Cluster: Media Input (server) */ \ .clusterId = 0x00000507, \ - .attributes = ZAP_ATTRIBUTE_INDEX(561), \ + .attributes = ZAP_ATTRIBUTE_INDEX(562), \ .attributeCount = 4, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2609,7 +2610,7 @@ { \ /* Endpoint: 1, Cluster: Low Power (server) */ \ .clusterId = 0x00000508, \ - .attributes = ZAP_ATTRIBUTE_INDEX(565), \ + .attributes = ZAP_ATTRIBUTE_INDEX(566), \ .attributeCount = 2, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2620,7 +2621,7 @@ { \ /* Endpoint: 1, Cluster: Keypad Input (server) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(567), \ + .attributes = ZAP_ATTRIBUTE_INDEX(568), \ .attributeCount = 2, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2631,7 +2632,7 @@ { \ /* Endpoint: 1, Cluster: Content Launcher (server) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(569), \ + .attributes = ZAP_ATTRIBUTE_INDEX(570), \ .attributeCount = 4, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2642,7 +2643,7 @@ { \ /* Endpoint: 1, Cluster: Audio Output (server) */ \ .clusterId = 0x0000050B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(573), \ + .attributes = ZAP_ATTRIBUTE_INDEX(574), \ .attributeCount = 4, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2653,7 +2654,7 @@ { \ /* Endpoint: 1, Cluster: Application Launcher (server) */ \ .clusterId = 0x0000050C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(577), \ + .attributes = ZAP_ATTRIBUTE_INDEX(578), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2664,7 +2665,7 @@ { \ /* Endpoint: 1, Cluster: Application Basic (server) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(580), \ + .attributes = ZAP_ATTRIBUTE_INDEX(581), \ .attributeCount = 9, \ .clusterSize = 110, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2675,7 +2676,7 @@ { \ /* Endpoint: 1, Cluster: Account Login (server) */ \ .clusterId = 0x0000050E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(589), \ + .attributes = ZAP_ATTRIBUTE_INDEX(590), \ .attributeCount = 2, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2686,7 +2687,7 @@ { \ /* Endpoint: 1, Cluster: Test Cluster (server) */ \ .clusterId = 0x0000050F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(591), \ + .attributes = ZAP_ATTRIBUTE_INDEX(592), \ .attributeCount = 82, \ .clusterSize = 2289, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2697,7 +2698,7 @@ { \ /* Endpoint: 1, Cluster: Electrical Measurement (server) */ \ .clusterId = 0x00000B04, \ - .attributes = ZAP_ATTRIBUTE_INDEX(673), \ + .attributes = ZAP_ATTRIBUTE_INDEX(674), \ .attributeCount = 13, \ .clusterSize = 32, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2708,7 +2709,7 @@ { \ /* Endpoint: 2, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(686), \ + .attributes = ZAP_ATTRIBUTE_INDEX(687), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2719,7 +2720,7 @@ { \ /* Endpoint: 2, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(689), \ + .attributes = ZAP_ATTRIBUTE_INDEX(690), \ .attributeCount = 7, \ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2730,7 +2731,7 @@ { \ /* Endpoint: 2, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(696), \ + .attributes = ZAP_ATTRIBUTE_INDEX(697), \ .attributeCount = 6, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2741,7 +2742,7 @@ { \ /* Endpoint: 2, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(702), \ + .attributes = ZAP_ATTRIBUTE_INDEX(703), \ .attributeCount = 8, \ .clusterSize = 72, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2752,7 +2753,7 @@ { \ /* Endpoint: 2, Cluster: Occupancy Sensing (server) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(710), \ + .attributes = ZAP_ATTRIBUTE_INDEX(711), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2763,7 +2764,7 @@ { \ /* Endpoint: 65534, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(715), \ + .attributes = ZAP_ATTRIBUTE_INDEX(716), \ .attributeCount = 10, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2782,7 +2783,7 @@ // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 27, 355 }, { ZAP_CLUSTER_INDEX(27), 45, 3482 }, { ZAP_CLUSTER_INDEX(72), 5, 105 }, \ + { ZAP_CLUSTER_INDEX(0), 27, 355 }, { ZAP_CLUSTER_INDEX(27), 45, 3483 }, { ZAP_CLUSTER_INDEX(72), 5, 105 }, \ { ZAP_CLUSTER_INDEX(77), 1, 0 }, \ } @@ -2795,7 +2796,7 @@ static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE, #define ATTRIBUTE_SINGLETONS_SIZE (37) // Total size of attribute storage -#define ATTRIBUTE_MAX_SIZE (3942) +#define ATTRIBUTE_MAX_SIZE (3943) // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (4)