diff --git a/.actrc b/.actrc new file mode 100644 index 00000000000000..44367d36ab8b94 --- /dev/null +++ b/.actrc @@ -0,0 +1,27 @@ +# This file contains settings for local github action runner act: +# https://github.com/nektos/act +# +# It is recommended to run specific jobs that you need, all jobs except those +# running on should darwin work. +# e.g. act -j build_linux +# +# It is recommended to set up a separate bridge network +# and possibly define it in ~/.actrc like so: +# --network=bridge +# https://docs.docker.com/network/drivers/bridge/ + +# Remove containers after finishing a job, comment out for debugging +--rm + +# Reuse the checkout from host, otherwise act will do docker cp that makes +# running jobs a lot longer even on SSD. Clean up your .environment before +# running it. +--bind + +# Easier to have 1:1 match between triggering jobs and reading logs when they +# use the same name +--log-prefix-job-id + +# Default runner image does not include enough. +# https://github.com/nektos/act#default-runners-are-intentionally-incomplete +-P ubuntu-latest=catthehacker/ubuntu:full-latest diff --git a/.github/actions/checkout-submodules-and-bootstrap/action.yaml b/.github/actions/checkout-submodules-and-bootstrap/action.yaml index 892cf93716cb8d..8ddaec14e7bc47 100644 --- a/.github/actions/checkout-submodules-and-bootstrap/action.yaml +++ b/.github/actions/checkout-submodules-and-bootstrap/action.yaml @@ -17,6 +17,8 @@ runs: steps: - name: Dump disk info uses: ./.github/actions/dump-disk-info + - name: Set git safe directory for local act runs + uses: ./.github/actions/git-safe-directory - name: Checkout submodules uses: ./.github/actions/checkout-submodules with: diff --git a/.github/actions/git-safe-directory/action.yaml b/.github/actions/git-safe-directory/action.yaml new file mode 100644 index 00000000000000..1308c4ea1bf524 --- /dev/null +++ b/.github/actions/git-safe-directory/action.yaml @@ -0,0 +1,9 @@ +name: Git safe directory +description: For running act with checkout owned by non-root user +runs: + using: "composite" + steps: + - name: Set git safe.directory to "*" + if: ${{ env.ACT }} + shell: bash + run: git config --system --add safe.directory '*' \ No newline at end of file diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml index f9e4a7a44840c5..c6fa9bcf943bef 100644 --- a/.github/boring-cyborg.yml +++ b/.github/boring-cyborg.yml @@ -105,7 +105,7 @@ labelPRBasedOnFilePath: - src/darwin/* efr32: - - src/platform/efr32/* + - src/platform/silabs/* esp32: - src/platform/ESP32/* diff --git a/.github/workflows/examples-telink.yaml b/.github/workflows/examples-telink.yaml index 4af591a58c91f0..e7b760d0cf7e53 100644 --- a/.github/workflows/examples-telink.yaml +++ b/.github/workflows/examples-telink.yaml @@ -199,15 +199,6 @@ jobs: - name: clean out build output run: rm -rf ./out - - name: Build example Telink (B91) Resource Monitoring App - run: | - ./scripts/run_in_build_env.sh \ - "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-resource-monitoring' build" - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - telink tlsr9518adk80d resource-monitoring-app \ - out/telink-tlsr9518adk80d-resource-monitoring/zephyr/zephyr.elf \ - /tmp/bloat_reports/ - - name: clean out build output run: rm -rf ./out diff --git a/.gitmodules b/.gitmodules index ac8f8bde39fbe8..fdfac588c0eb35 100644 --- a/.gitmodules +++ b/.gitmodules @@ -54,7 +54,7 @@ path = third_party/freertos/repo url = https://github.com/FreeRTOS/FreeRTOS-Kernel.git branch = V10.3.1-kernel-only - platforms = ameba,cc13xx_26xx,bouffalolab,efr32,esp32,k32w,infineon,qpg,cc32xx,silabs_docker + platforms = ameba,cc13xx_26xx,bouffalolab,esp32,k32w,infineon,qpg,cc32xx [submodule "simw-top-mini"] path = third_party/simw-top-mini/repo url = https://github.com/NXP/plug-and-trust.git @@ -72,7 +72,7 @@ path = third_party/openthread/ot-efr32 url = https://github.com/SiliconLabs/ot-efr32.git branch = matter_sve - platforms = efr32,silabs_docker + platforms = silabs,silabs_docker [submodule "third_party/openthread/ot-ifx"] path = third_party/openthread/ot-ifx url = https://github.com/Infineon/ot-ifx-release.git @@ -235,22 +235,22 @@ path = third_party/silabs/matter_support url = https://github.com/SiliconLabs/sdk_support.git branch = main - platforms = efr32,silabs_docker + platforms = silabs,silabs_docker [submodule "third_party/silabs/gecko_sdk"] path = third_party/silabs/gecko_sdk url = https://github.com/SiliconLabs/gecko_sdk.git branch = v4.3.2 - platforms = efr32 + platforms = silabs [submodule "third_party/silabs/wiseconnect-wifi-bt-sdk"] path = third_party/silabs/wiseconnect-wifi-bt-sdk url = https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk.git branch = 2.8.2 - platforms = efr32 + platforms = silabs [submodule "third_party/silabs/wifi_sdk"] path = third_party/silabs/wifi_sdk url = https://github.com/SiliconLabs/wiseconnect.git branch = v3.1.0 - platforms = efr32 + platforms = silabs [submodule "editline"] path = third_party/editline/repo url = https://github.com/troglobit/editline.git diff --git a/docs/examples/index.md b/docs/examples/index.md index 03b7fc7cdf2a64..916dc5f48e7802 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -303,15 +303,6 @@ tv-casting-app/APIs.md window-app/**/README ``` -## Resource monitoring example - -```{toctree} -:glob: -:maxdepth: 1 - -resource-monitoring-app/**/README -``` - ## RVC example ```{toctree} diff --git a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter index f4f930ac93a015..0e4d5b1fd20c94 100644 --- a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter +++ b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -82,6 +86,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -154,6 +160,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -243,6 +251,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -317,6 +327,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -392,6 +404,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -456,6 +470,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -613,6 +629,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -650,6 +668,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -761,6 +781,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -801,6 +823,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -917,6 +941,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -989,6 +1015,8 @@ server cluster GroupKeyManagement = 63 { /** Attributes for reporting air quality classification */ server cluster AirQuality = 91 { + revision 1; // NOTE: Default/not specifically set + enum AirQualityEnum : enum8 { kUnknown = 0; kGood = 1; @@ -1017,6 +1045,8 @@ server cluster AirQuality = 91 { /** Attributes and commands for monitoring HEPA filters in a device */ server cluster HepaFilterMonitoring = 113 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -1065,6 +1095,8 @@ server cluster HepaFilterMonitoring = 113 { /** Attributes and commands for monitoring activated carbon filters in a device */ server cluster ActivatedCarbonFilterMonitoring = 114 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -1113,6 +1145,8 @@ server cluster ActivatedCarbonFilterMonitoring = 114 { /** An interface for controlling a fan in a heating/cooling system. */ provisional server cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -1192,6 +1226,8 @@ provisional server cluster FanControl = 514 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1206,6 +1242,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -1220,6 +1258,8 @@ server cluster RelativeHumidityMeasurement = 1029 { /** Attributes for reporting carbon monoxide concentration measurements */ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1275,6 +1315,8 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { /** Attributes for reporting carbon dioxide concentration measurements */ server cluster CarbonDioxideConcentrationMeasurement = 1037 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1330,6 +1372,8 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { /** Attributes for reporting nitrogen dioxide concentration measurements */ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1385,6 +1429,8 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { /** Attributes for reporting ozone concentration measurements */ server cluster OzoneConcentrationMeasurement = 1045 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1440,6 +1486,8 @@ server cluster OzoneConcentrationMeasurement = 1045 { /** Attributes for reporting PM2.5 concentration measurements */ server cluster Pm25ConcentrationMeasurement = 1066 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1495,6 +1543,8 @@ server cluster Pm25ConcentrationMeasurement = 1066 { /** Attributes for reporting formaldehyde concentration measurements */ server cluster FormaldehydeConcentrationMeasurement = 1067 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1550,6 +1600,8 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { /** Attributes for reporting PM1 concentration measurements */ server cluster Pm1ConcentrationMeasurement = 1068 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1605,6 +1657,8 @@ server cluster Pm1ConcentrationMeasurement = 1068 { /** Attributes for reporting PM10 concentration measurements */ server cluster Pm10ConcentrationMeasurement = 1069 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1660,6 +1714,8 @@ server cluster Pm10ConcentrationMeasurement = 1069 { /** Attributes for reporting total volatile organic compounds concentration measurements */ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1715,6 +1771,8 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { /** Attributes for reporting radon concentration measurements */ server cluster RadonConcentrationMeasurement = 1071 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; diff --git a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter index c0c1236fa44335..8f598f4281e4ef 100644 --- a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter +++ b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -76,6 +80,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -148,6 +154,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -237,6 +245,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -311,6 +321,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -386,6 +398,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -450,6 +464,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -607,6 +623,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -718,6 +736,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -752,6 +772,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -915,6 +937,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -989,6 +1013,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1028,6 +1054,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1073,6 +1101,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1189,6 +1219,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1261,6 +1293,8 @@ server cluster GroupKeyManagement = 63 { /** Attributes for reporting air quality classification */ server cluster AirQuality = 91 { + revision 1; // NOTE: Default/not specifically set + enum AirQualityEnum : enum8 { kUnknown = 0; kGood = 1; @@ -1289,6 +1323,8 @@ server cluster AirQuality = 91 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1302,6 +1338,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -1315,6 +1353,8 @@ server cluster RelativeHumidityMeasurement = 1029 { /** Attributes for reporting carbon monoxide concentration measurements */ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1362,6 +1402,8 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { /** Attributes for reporting carbon dioxide concentration measurements */ server cluster CarbonDioxideConcentrationMeasurement = 1037 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1409,6 +1451,8 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { /** Attributes for reporting nitrogen dioxide concentration measurements */ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1456,6 +1500,8 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { /** Attributes for reporting ozone concentration measurements */ server cluster OzoneConcentrationMeasurement = 1045 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1503,6 +1549,8 @@ server cluster OzoneConcentrationMeasurement = 1045 { /** Attributes for reporting PM2.5 concentration measurements */ server cluster Pm25ConcentrationMeasurement = 1066 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1550,6 +1598,8 @@ server cluster Pm25ConcentrationMeasurement = 1066 { /** Attributes for reporting formaldehyde concentration measurements */ server cluster FormaldehydeConcentrationMeasurement = 1067 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1597,6 +1647,8 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { /** Attributes for reporting PM1 concentration measurements */ server cluster Pm1ConcentrationMeasurement = 1068 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1644,6 +1696,8 @@ server cluster Pm1ConcentrationMeasurement = 1068 { /** Attributes for reporting PM10 concentration measurements */ server cluster Pm10ConcentrationMeasurement = 1069 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1691,6 +1745,8 @@ server cluster Pm10ConcentrationMeasurement = 1069 { /** Attributes for reporting total volatile organic compounds concentration measurements */ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1738,6 +1794,8 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { /** Attributes for reporting radon concentration measurements */ server cluster RadonConcentrationMeasurement = 1071 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; 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 1161b93c5119ee..799391e6edc2d0 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 @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -295,6 +301,8 @@ provisional server cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -365,6 +373,8 @@ client cluster OnOff = 6 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -429,6 +439,8 @@ server cluster OnOff = 6 { /** Attributes and commands for configuring On/Off switching devices. */ server cluster OnOffSwitchConfiguration = 7 { + revision 1; // NOTE: Default/not specifically set + readonly attribute enum8 switchType = 0; attribute enum8 switchActions = 16; readonly attribute command_id generatedCommandList[] = 65528; @@ -441,6 +453,8 @@ server cluster OnOffSwitchConfiguration = 7 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -549,6 +563,8 @@ server cluster LevelControl = 8 { /** An interface for reading the value of a binary measurement and accessing various characteristics of that measurement. */ server cluster BinaryInputBasic = 15 { + revision 1; // NOTE: Default/not specifically set + attribute boolean outOfService = 81; attribute boolean presentValue = 85; readonly attribute bitmap8 statusFlags = 111; @@ -562,6 +578,8 @@ server cluster BinaryInputBasic = 15 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -593,6 +611,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -615,6 +635,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -685,6 +707,8 @@ server cluster AccessControl = 31 { /** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { + revision 1; // NOTE: Default/not specifically set + enum ActionErrorEnum : enum8 { kUnknown = 0; kInterrupted = 1; @@ -772,6 +796,8 @@ server cluster Actions = 37 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -862,6 +888,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -936,6 +964,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -1014,6 +1044,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -1029,6 +1061,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -1069,6 +1103,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -1090,6 +1126,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a Device's power system. */ server cluster PowerSourceConfiguration = 46 { + revision 1; + readonly attribute endpoint_no sources[] = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1101,6 +1139,8 @@ server cluster PowerSourceConfiguration = 46 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -1333,6 +1373,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1397,6 +1439,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1554,6 +1598,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1591,6 +1637,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1702,6 +1750,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1736,6 +1786,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1899,6 +1951,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1973,6 +2027,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -2012,6 +2068,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Accurate time is required for a number of reasons, including scheduling, display and validating security materials. */ server cluster TimeSynchronization = 56 { + revision 2; + enum GranularityEnum : enum8 { kNoTimeGranularity = 0; kMinutesGranularity = 1; @@ -2154,6 +2212,8 @@ server cluster TimeSynchronization = 56 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -2204,6 +2264,8 @@ server cluster Switch = 59 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -2249,6 +2311,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -2365,6 +2429,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -2438,6 +2504,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2454,6 +2522,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2470,6 +2540,8 @@ server cluster UserLabel = 65 { /** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { + revision 1; + info event StateChange = 0 { boolean stateValue = 0; } @@ -2485,6 +2557,8 @@ server cluster BooleanState = 69 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster ModeSelect = 80 { + revision 2; + bitmap Feature : bitmap32 { kOnOff = 0x1; } @@ -2523,6 +2597,8 @@ server cluster ModeSelect = 80 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster LaundryWasherMode = 81 { + revision 2; + enum ModeTag : enum16 { kNormal = 16384; kDelicate = 16385; @@ -2570,6 +2646,8 @@ server cluster LaundryWasherMode = 81 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { + revision 2; + enum ModeTag : enum16 { kRapidCool = 16384; kRapidFreeze = 16385; @@ -2615,6 +2693,8 @@ server cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { /** This cluster supports remotely monitoring and controling the different typs of functionality available to a washing device, such as a washing machine. */ server cluster LaundryWasherControls = 83 { + revision 1; // NOTE: Default/not specifically set + enum NumberOfRinsesEnum : enum8 { kNone = 0; kNormal = 1; @@ -2641,6 +2721,8 @@ server cluster LaundryWasherControls = 83 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster RvcRunMode = 84 { + revision 2; + enum ModeTag : enum16 { kIdle = 16384; kCleaning = 16385; @@ -2696,6 +2778,8 @@ server cluster RvcRunMode = 84 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster RvcCleanMode = 85 { + revision 2; + enum ModeTag : enum16 { kDeepClean = 16384; kVacuum = 16385; @@ -2745,6 +2829,8 @@ server cluster RvcCleanMode = 85 { /** Attributes and commands for configuring the temperature control, and reporting temperature. */ server cluster TemperatureControl = 86 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kTemperatureNumber = 0x1; kTemperatureLevel = 0x2; @@ -2770,6 +2856,8 @@ server cluster TemperatureControl = 86 { /** Attributes and commands for configuring the Refrigerator alarm. */ server cluster RefrigeratorAlarm = 87 { + revision 1; // NOTE: Default/not specifically set + bitmap AlarmMap : bitmap32 { kDoorOpen = 0x1; } @@ -2794,6 +2882,8 @@ server cluster RefrigeratorAlarm = 87 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster DishwasherMode = 89 { + revision 2; + enum ModeTag : enum16 { kNormal = 16384; kHeavy = 16385; @@ -2840,6 +2930,8 @@ server cluster DishwasherMode = 89 { /** Attributes for reporting air quality classification */ server cluster AirQuality = 91 { + revision 1; // NOTE: Default/not specifically set + enum AirQualityEnum : enum8 { kUnknown = 0; kGood = 1; @@ -2868,6 +2960,8 @@ server cluster AirQuality = 91 { /** This cluster provides an interface for observing and managing the state of smoke and CO alarms. */ server cluster SmokeCoAlarm = 92 { + revision 1; + enum AlarmStateEnum : enum8 { kNormal = 0; kWarning = 1; @@ -2977,6 +3071,8 @@ server cluster SmokeCoAlarm = 92 { /** Attributes and commands for configuring the Dishwasher alarm. */ server cluster DishwasherAlarm = 93 { + revision 1; // NOTE: Default/not specifically set + bitmap AlarmMap : bitmap32 { kInflowError = 0x1; kDrainError = 0x2; @@ -3022,6 +3118,8 @@ server cluster DishwasherAlarm = 93 { /** This cluster supports remotely monitoring and, where supported, changing the operational state of any device where a state machine is a part of the operation. */ server cluster OperationalState = 96 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kNoError = 0; kUnableToStartOrResume = 1; @@ -3082,6 +3180,8 @@ server cluster OperationalState = 96 { /** This cluster supports remotely monitoring and, where supported, changing the operational state of a Robotic Vacuum. */ server cluster RvcOperationalState = 97 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kFailedToFindChargingDock = 64; kStuck = 65; @@ -3143,6 +3243,8 @@ server cluster RvcOperationalState = 97 { /** Attributes and commands for monitoring HEPA filters in a device */ server cluster HepaFilterMonitoring = 113 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -3191,6 +3293,8 @@ server cluster HepaFilterMonitoring = 113 { /** Attributes and commands for monitoring activated carbon filters in a device */ server cluster ActivatedCarbonFilterMonitoring = 114 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -3239,6 +3343,8 @@ server cluster ActivatedCarbonFilterMonitoring = 114 { /** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { + revision 5; + enum EndProductType : enum8 { kRollerShade = 0; kRomanShade = 1; @@ -3383,6 +3489,8 @@ server cluster WindowCovering = 258 { /** This cluster provides control of a barrier (garage door). */ server cluster BarrierControl = 259 { + revision 1; // NOTE: Default/not specifically set + bitmap BarrierControlCapabilities : bitmap8 { kPartialBarrier = 0x1; } @@ -3415,6 +3523,8 @@ server cluster BarrierControl = 259 { /** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -3537,6 +3647,8 @@ server cluster PumpConfigurationAndControl = 512 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -3633,6 +3745,8 @@ server cluster Thermostat = 513 { /** An interface for controlling a fan in a heating/cooling system. */ provisional server cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -3712,6 +3826,8 @@ provisional server cluster FanControl = 514 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -3744,6 +3860,8 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -4043,6 +4161,8 @@ server cluster ColorControl = 768 { /** Attributes and commands for configuring a lighting ballast. */ provisional server cluster BallastConfiguration = 769 { + revision 4; + bitmap BallastStatusBitmap : bitmap8 { kBallastNonOperational = 0x1; kLampFailure = 0x2; @@ -4076,6 +4196,8 @@ provisional server cluster BallastConfiguration = 769 { /** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { + revision 3; + enum LightSensorTypeEnum : enum8 { kPhotodiode = 0; kCMOS = 1; @@ -4096,6 +4218,8 @@ server cluster IlluminanceMeasurement = 1024 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -4110,6 +4234,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -4127,6 +4253,8 @@ server cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -4141,6 +4269,8 @@ server cluster FlowMeasurement = 1028 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -4155,6 +4285,8 @@ server cluster RelativeHumidityMeasurement = 1029 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; @@ -4185,6 +4317,8 @@ server cluster OccupancySensing = 1030 { /** Attributes for reporting carbon monoxide concentration measurements */ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4240,6 +4374,8 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { /** Attributes for reporting carbon dioxide concentration measurements */ server cluster CarbonDioxideConcentrationMeasurement = 1037 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4295,6 +4431,8 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { /** Attributes for reporting nitrogen dioxide concentration measurements */ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4350,6 +4488,8 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { /** Attributes for reporting ozone concentration measurements */ server cluster OzoneConcentrationMeasurement = 1045 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4405,6 +4545,8 @@ server cluster OzoneConcentrationMeasurement = 1045 { /** Attributes for reporting PM2.5 concentration measurements */ server cluster Pm25ConcentrationMeasurement = 1066 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4460,6 +4602,8 @@ server cluster Pm25ConcentrationMeasurement = 1066 { /** Attributes for reporting formaldehyde concentration measurements */ server cluster FormaldehydeConcentrationMeasurement = 1067 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4515,6 +4659,8 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { /** Attributes for reporting PM1 concentration measurements */ server cluster Pm1ConcentrationMeasurement = 1068 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4570,6 +4716,8 @@ server cluster Pm1ConcentrationMeasurement = 1068 { /** Attributes for reporting PM10 concentration measurements */ server cluster Pm10ConcentrationMeasurement = 1069 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4625,6 +4773,8 @@ server cluster Pm10ConcentrationMeasurement = 1069 { /** Attributes for reporting total volatile organic compounds concentration measurements */ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4680,6 +4830,8 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { /** Attributes for reporting radon concentration measurements */ server cluster RadonConcentrationMeasurement = 1071 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4735,6 +4887,8 @@ server cluster RadonConcentrationMeasurement = 1071 { /** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ server cluster WakeOnLan = 1283 { + revision 1; // NOTE: Default/not specifically set + readonly attribute char_string<12> MACAddress = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -4746,6 +4900,8 @@ server cluster WakeOnLan = 1283 { /** This cluster provides an interface for managing low power mode on a device. */ server cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4758,6 +4914,8 @@ server cluster LowPower = 1288 { /** Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster.. */ server cluster ElectricalMeasurement = 2820 { + revision 3; + readonly attribute bitmap32 measurementType = 0; readonly attribute int32s totalActivePower = 772; readonly attribute int16u rmsVoltage = 1285; @@ -4779,6 +4937,8 @@ server cluster ElectricalMeasurement = 2820 { /** The Test Cluster is meant to validate the generated code */ internal server cluster UnitTesting = 4294048773 { + revision 1; // NOTE: Default/not specifically set + enum SimpleEnum : enum8 { kUnspecified = 0; kValueA = 1; @@ -5101,6 +5261,8 @@ internal server cluster UnitTesting = 4294048773 { /** The Fault Injection Cluster provide a means for a test harness to configure faults(for example triggering a fault in the system). */ internal server cluster FaultInjection = 4294048774 { + revision 1; // NOTE: Default/not specifically set + enum FaultType : enum8 { kUnspecified = 0; kSystemFault = 1; diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter index 9d88b46dc0b097..5908594f643e6f 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -250,6 +256,8 @@ provisional server cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -314,6 +322,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -413,6 +423,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -443,6 +455,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -465,6 +479,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -535,6 +551,8 @@ server cluster AccessControl = 31 { /** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { + revision 1; // NOTE: Default/not specifically set + enum ActionErrorEnum : enum8 { kUnknown = 0; kInterrupted = 1; @@ -621,6 +639,8 @@ server cluster Actions = 37 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -703,6 +723,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -777,6 +799,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -855,6 +879,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -870,6 +896,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -908,6 +936,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -928,6 +958,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -1157,6 +1189,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1221,6 +1255,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1378,6 +1414,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1415,6 +1453,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1521,6 +1561,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1549,6 +1591,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1664,6 +1708,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1728,6 +1774,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1769,6 +1817,8 @@ server cluster EthernetNetworkDiagnostics = 55 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -1819,6 +1869,8 @@ server cluster Switch = 59 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1859,6 +1911,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1975,6 +2029,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -2048,6 +2104,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2064,6 +2122,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2080,6 +2140,8 @@ server cluster UserLabel = 65 { /** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { + revision 1; + info event StateChange = 0 { boolean stateValue = 0; } @@ -2095,6 +2157,8 @@ server cluster BooleanState = 69 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster ModeSelect = 80 { + revision 2; + bitmap Feature : bitmap32 { kOnOff = 0x1; } @@ -2130,6 +2194,8 @@ server cluster ModeSelect = 80 { /** Attributes and commands for configuring the temperature control, and reporting temperature. */ server cluster TemperatureControl = 86 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kTemperatureNumber = 0x1; kTemperatureLevel = 0x2; @@ -2155,6 +2221,8 @@ server cluster TemperatureControl = 86 { /** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; @@ -2559,6 +2627,8 @@ server cluster DoorLock = 257 { /** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { + revision 5; + enum EndProductType : enum8 { kRollerShade = 0; kRomanShade = 1; @@ -2666,6 +2736,8 @@ server cluster WindowCovering = 258 { /** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -2774,6 +2846,8 @@ server cluster PumpConfigurationAndControl = 512 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -2860,6 +2934,8 @@ server cluster Thermostat = 513 { /** An interface for controlling a fan in a heating/cooling system. */ provisional server cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -2923,6 +2999,8 @@ provisional server cluster FanControl = 514 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -2954,6 +3032,8 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -3038,6 +3118,8 @@ server cluster ColorControl = 768 { /** Attributes and commands for configuring a lighting ballast. */ provisional server cluster BallastConfiguration = 769 { + revision 4; + bitmap BallastStatusBitmap : bitmap8 { kBallastNonOperational = 0x1; kLampFailure = 0x2; @@ -3062,6 +3144,8 @@ provisional server cluster BallastConfiguration = 769 { /** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { + revision 3; + enum LightSensorTypeEnum : enum8 { kPhotodiode = 0; kCMOS = 1; @@ -3080,6 +3164,8 @@ server cluster IlluminanceMeasurement = 1024 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -3093,6 +3179,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -3110,6 +3198,8 @@ server cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -3123,6 +3213,8 @@ server cluster FlowMeasurement = 1028 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -3136,6 +3228,8 @@ server cluster RelativeHumidityMeasurement = 1029 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; @@ -3166,6 +3260,8 @@ server cluster OccupancySensing = 1030 { /** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ server cluster WakeOnLan = 1283 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3176,6 +3272,8 @@ server cluster WakeOnLan = 1283 { /** This cluster provides an interface for controlling the current Channel on a device. */ server cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -3228,6 +3326,8 @@ server cluster Channel = 1284 { /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -3262,6 +3362,8 @@ server cluster TargetNavigator = 1285 { /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ server cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -3308,6 +3410,8 @@ server cluster MediaPlayback = 1286 { /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ server cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -3354,6 +3458,8 @@ server cluster MediaInput = 1287 { /** This cluster provides an interface for managing low power mode on a device. */ server cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3366,6 +3472,8 @@ server cluster LowPower = 1288 { /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -3487,6 +3595,8 @@ server cluster KeypadInput = 1289 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ContentLauncher = 1290 { + revision 1; // NOTE: Default/not specifically set + enum MetricTypeEnum : enum8 { kPixels = 0; kPercentage = 1; @@ -3571,6 +3681,8 @@ server cluster ContentLauncher = 1290 { /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ server cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; @@ -3608,6 +3720,8 @@ server cluster AudioOutput = 1291 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ApplicationLauncher = 1292 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kAppNotAvailable = 1; @@ -3660,6 +3774,8 @@ server cluster ApplicationLauncher = 1292 { /** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ server cluster ApplicationBasic = 1293 { + revision 1; // NOTE: Default/not specifically set + enum ApplicationStatusEnum : enum8 { kStopped = 0; kActiveVisibleFocus = 1; @@ -3687,6 +3803,8 @@ server cluster ApplicationBasic = 1293 { /** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ server cluster AccountLogin = 1294 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3714,6 +3832,8 @@ server cluster AccountLogin = 1294 { /** The Test Cluster is meant to validate the generated code */ internal server cluster UnitTesting = 4294048773 { + revision 1; // NOTE: Default/not specifically set + enum SimpleEnum : enum8 { kUnspecified = 0; kValueA = 1; @@ -4429,9 +4549,9 @@ endpoint 1 { } server cluster Scenes { - callback attribute nameSupport default = 0x80; - callback attribute lastConfiguredBy; - callback attribute sceneTableSize default = 16; + ram attribute nameSupport default = 0x80; + ram attribute lastConfiguredBy; + ram attribute sceneTableSize default = 16; callback attribute fabricSceneInfo; callback attribute generatedCommandList; callback attribute acceptedCommandList; @@ -4989,8 +5109,8 @@ endpoint 2 { } server cluster Scenes { - callback attribute nameSupport default = 0x80; - callback attribute sceneTableSize default = 16; + ram attribute nameSupport default = 0x80; + ram attribute sceneTableSize default = 16; callback attribute fabricSceneInfo; callback attribute generatedCommandList; callback attribute acceptedCommandList; diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap index 43de928aba7937..bd54cab550e1c3 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap @@ -4672,7 +4672,7 @@ "side": "server", "type": "NameSupportBitmap", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x80", @@ -4688,7 +4688,7 @@ "side": "server", "type": "node_id", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4704,7 +4704,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "16", @@ -10908,7 +10908,7 @@ "side": "server", "type": "NameSupportBitmap", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x80", @@ -10924,7 +10924,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "16", @@ -11004,7 +11004,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -12254,5 +12254,3 @@ } ] } - - diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index 8d49b997c2b5ce..9d6ed79ffef0b6 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -95,6 +99,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -203,6 +209,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -233,6 +241,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -255,6 +265,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ client cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -328,6 +340,8 @@ client cluster AccessControl = 31 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -398,6 +412,8 @@ server cluster AccessControl = 31 { /** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { + revision 1; // NOTE: Default/not specifically set + enum ActionErrorEnum : enum8 { kUnknown = 0; kInterrupted = 1; @@ -492,6 +508,8 @@ server cluster Actions = 37 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -584,6 +602,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -599,6 +619,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -639,6 +661,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -660,6 +684,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -724,6 +750,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -881,6 +909,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -918,6 +948,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1029,6 +1061,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1061,6 +1095,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1222,6 +1258,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1294,6 +1332,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1335,6 +1375,8 @@ server cluster EthernetNetworkDiagnostics = 55 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -1386,6 +1428,8 @@ server cluster Switch = 59 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1431,6 +1475,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1547,6 +1593,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1619,6 +1667,8 @@ server cluster GroupKeyManagement = 63 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1635,6 +1685,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index 6643553b596f33..cc3fe91578cc3c 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -162,6 +168,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -263,6 +271,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -293,6 +303,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -315,6 +327,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -387,6 +401,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -476,6 +492,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -550,6 +568,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -628,6 +648,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -643,6 +665,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -680,6 +704,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -744,6 +770,8 @@ server cluster GeneralCommissioning = 48 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -781,6 +809,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -892,6 +922,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -926,6 +958,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1089,6 +1123,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1163,6 +1199,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1202,6 +1240,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1247,6 +1287,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1363,6 +1405,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1436,6 +1480,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1452,6 +1498,8 @@ server cluster FixedLabel = 64 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; diff --git a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter index 926a7ab24e2e5c..55d65cc9100c0c 100644 --- a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter +++ b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -151,6 +157,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -223,6 +231,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -312,6 +322,8 @@ server cluster BasicInformation = 40 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -376,6 +388,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -533,6 +547,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -570,6 +586,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -681,6 +699,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -726,6 +746,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -842,6 +864,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -914,6 +938,8 @@ server cluster GroupKeyManagement = 63 { /** Attributes for reporting air quality classification */ server cluster AirQuality = 91 { + revision 1; // NOTE: Default/not specifically set + enum AirQualityEnum : enum8 { kUnknown = 0; kGood = 1; @@ -942,6 +968,8 @@ server cluster AirQuality = 91 { /** Attributes and commands for monitoring HEPA filters in a device */ server cluster HepaFilterMonitoring = 113 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -986,6 +1014,8 @@ server cluster HepaFilterMonitoring = 113 { /** Attributes and commands for monitoring activated carbon filters in a device */ server cluster ActivatedCarbonFilterMonitoring = 114 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -1030,6 +1060,8 @@ server cluster ActivatedCarbonFilterMonitoring = 114 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -1118,6 +1150,8 @@ server cluster Thermostat = 513 { /** An interface for controlling a fan in a heating/cooling system. */ provisional server cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -1189,6 +1223,8 @@ provisional server cluster FanControl = 514 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1202,6 +1238,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -1215,6 +1253,8 @@ server cluster RelativeHumidityMeasurement = 1029 { /** Attributes for reporting carbon monoxide concentration measurements */ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1269,6 +1309,8 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { /** Attributes for reporting carbon dioxide concentration measurements */ server cluster CarbonDioxideConcentrationMeasurement = 1037 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1323,6 +1365,8 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { /** Attributes for reporting nitrogen dioxide concentration measurements */ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1377,6 +1421,8 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { /** Attributes for reporting ozone concentration measurements */ server cluster OzoneConcentrationMeasurement = 1045 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1431,6 +1477,8 @@ server cluster OzoneConcentrationMeasurement = 1045 { /** Attributes for reporting PM2.5 concentration measurements */ server cluster Pm25ConcentrationMeasurement = 1066 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1485,6 +1533,8 @@ server cluster Pm25ConcentrationMeasurement = 1066 { /** Attributes for reporting formaldehyde concentration measurements */ server cluster FormaldehydeConcentrationMeasurement = 1067 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1539,6 +1589,8 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { /** Attributes for reporting PM1 concentration measurements */ server cluster Pm1ConcentrationMeasurement = 1068 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1593,6 +1645,8 @@ server cluster Pm1ConcentrationMeasurement = 1068 { /** Attributes for reporting PM10 concentration measurements */ server cluster Pm10ConcentrationMeasurement = 1069 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1647,6 +1701,8 @@ server cluster Pm10ConcentrationMeasurement = 1069 { /** Attributes for reporting total volatile organic compounds concentration measurements */ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1701,6 +1757,8 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { /** Attributes for reporting radon concentration measurements */ server cluster RadonConcentrationMeasurement = 1071 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; diff --git a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter index c97039eead045e..71173b45a89cae 100644 --- a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter +++ b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -76,6 +80,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -148,6 +154,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -237,6 +245,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -311,6 +321,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -389,6 +401,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -404,6 +418,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -441,6 +457,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -505,6 +523,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -662,6 +682,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -699,6 +721,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -810,6 +834,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -844,6 +870,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -889,6 +917,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1005,6 +1035,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1078,6 +1110,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1094,6 +1128,8 @@ server cluster FixedLabel = 64 { /** Attributes for reporting air quality classification */ server cluster AirQuality = 91 { + revision 1; // NOTE: Default/not specifically set + enum AirQualityEnum : enum8 { kUnknown = 0; kGood = 1; @@ -1122,6 +1158,8 @@ server cluster AirQuality = 91 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1136,6 +1174,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -1150,6 +1190,8 @@ server cluster RelativeHumidityMeasurement = 1029 { /** Attributes for reporting carbon monoxide concentration measurements */ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1205,6 +1247,8 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { /** Attributes for reporting carbon dioxide concentration measurements */ server cluster CarbonDioxideConcentrationMeasurement = 1037 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1260,6 +1304,8 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { /** Attributes for reporting nitrogen dioxide concentration measurements */ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1315,6 +1361,8 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { /** Attributes for reporting ozone concentration measurements */ server cluster OzoneConcentrationMeasurement = 1045 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1370,6 +1418,8 @@ server cluster OzoneConcentrationMeasurement = 1045 { /** Attributes for reporting PM2.5 concentration measurements */ server cluster Pm25ConcentrationMeasurement = 1066 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1425,6 +1475,8 @@ server cluster Pm25ConcentrationMeasurement = 1066 { /** Attributes for reporting formaldehyde concentration measurements */ server cluster FormaldehydeConcentrationMeasurement = 1067 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1480,6 +1532,8 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { /** Attributes for reporting PM1 concentration measurements */ server cluster Pm1ConcentrationMeasurement = 1068 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1535,6 +1589,8 @@ server cluster Pm1ConcentrationMeasurement = 1068 { /** Attributes for reporting PM10 concentration measurements */ server cluster Pm10ConcentrationMeasurement = 1069 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1590,6 +1646,8 @@ server cluster Pm10ConcentrationMeasurement = 1069 { /** Attributes for reporting total volatile organic compounds concentration measurements */ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1645,6 +1703,8 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { /** Attributes for reporting radon concentration measurements */ server cluster RadonConcentrationMeasurement = 1071 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; diff --git a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter index af80df7a588a38..9d9f290ca8346c 100644 --- a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter +++ b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter @@ -3,6 +3,8 @@ /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -49,6 +51,8 @@ server cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -82,6 +86,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -154,6 +160,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -243,6 +251,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -317,6 +327,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -395,6 +407,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -410,6 +424,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -447,6 +463,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -511,6 +529,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -668,6 +688,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -705,6 +727,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -816,6 +840,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -850,6 +876,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -895,6 +923,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1011,6 +1041,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1084,6 +1116,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1100,6 +1134,8 @@ server cluster FixedLabel = 64 { /** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ server cluster WakeOnLan = 1283 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1110,6 +1146,8 @@ server cluster WakeOnLan = 1283 { /** This cluster provides an interface for controlling the current Channel on a device. */ server cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -1175,6 +1213,8 @@ server cluster Channel = 1284 { /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -1209,6 +1249,8 @@ server cluster TargetNavigator = 1285 { /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ server cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -1255,6 +1297,8 @@ server cluster MediaPlayback = 1286 { /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ server cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -1301,6 +1345,8 @@ server cluster MediaInput = 1287 { /** This cluster provides an interface for managing low power mode on a device. */ server cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1313,6 +1359,8 @@ server cluster LowPower = 1288 { /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -1434,6 +1482,8 @@ server cluster KeypadInput = 1289 { /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ server cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter index ef3e2bd3915ed5..f1b1a1ffd9266b 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -182,6 +188,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -281,6 +289,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -314,6 +324,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -386,6 +398,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -475,6 +489,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -549,6 +565,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -624,6 +642,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -688,6 +708,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -845,6 +867,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -882,6 +906,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -993,6 +1019,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1027,6 +1055,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1072,6 +1102,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1188,6 +1220,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1260,6 +1294,8 @@ server cluster GroupKeyManagement = 63 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter index 1cd605c3038367..d5d9264c3939bf 100644 --- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter +++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -142,6 +148,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -164,6 +172,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -236,6 +246,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -325,6 +337,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -399,6 +413,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -477,6 +493,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -492,6 +510,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -529,6 +549,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -593,6 +615,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -750,6 +774,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -787,6 +813,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -898,6 +926,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -932,6 +962,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -977,6 +1009,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1093,6 +1127,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1166,6 +1202,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1182,6 +1220,8 @@ server cluster FixedLabel = 64 { /** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { + revision 1; + info event StateChange = 0 { boolean stateValue = 0; } diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter index 3bb21cad2c8fd2..ef43de5f8a3f87 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -162,6 +168,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -263,6 +271,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -293,6 +303,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -315,6 +327,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -387,6 +401,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -476,6 +492,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -550,6 +568,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -628,6 +648,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -643,6 +665,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -680,6 +704,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -744,6 +770,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -901,6 +929,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -938,6 +968,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1049,6 +1081,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1083,6 +1117,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1128,6 +1164,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1244,6 +1282,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1317,6 +1357,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1333,6 +1375,8 @@ server cluster FixedLabel = 64 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; diff --git a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter index ad451cc40b47d2..14ba05083d114d 100644 --- a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter +++ b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -82,6 +86,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -154,6 +160,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -247,6 +255,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -262,6 +272,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -300,6 +312,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -321,6 +335,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -385,6 +401,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -542,6 +560,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -653,6 +673,8 @@ server cluster GeneralDiagnostics = 51 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -727,6 +749,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -772,6 +796,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -888,6 +914,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -960,6 +988,8 @@ server cluster GroupKeyManagement = 63 { /** This cluster supports remotely monitoring and, where supported, changing the operational state of any device where a state machine is a part of the operation. */ server cluster OperationalState = 96 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kNoError = 0; kUnableToStartOrResume = 1; diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter index a1dca12a7c3b68..8920a94371f28b 100644 --- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter +++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -142,6 +148,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -164,6 +172,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -236,6 +246,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -325,6 +337,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -399,6 +413,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -477,6 +493,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -492,6 +510,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -529,6 +549,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -593,6 +615,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -750,6 +774,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -787,6 +813,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -898,6 +926,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -932,6 +962,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -977,6 +1009,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1093,6 +1127,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1166,6 +1202,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1182,6 +1220,8 @@ server cluster FixedLabel = 64 { /** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter index 167e1986118ac9..a1d647da6fafb2 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -162,6 +168,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -263,6 +271,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -293,6 +303,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -315,6 +327,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -387,6 +401,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -476,6 +492,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -550,6 +568,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -628,6 +648,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -643,6 +665,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -680,6 +704,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -744,6 +770,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -901,6 +929,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -938,6 +968,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1049,6 +1081,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1083,6 +1117,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1128,6 +1164,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1244,6 +1282,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1317,6 +1357,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1333,6 +1375,8 @@ server cluster FixedLabel = 64 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter index fb585469387214..c29e963c4fc5c3 100644 --- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter +++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -151,6 +157,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -223,6 +231,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -312,6 +322,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -386,6 +398,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -464,6 +478,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -479,6 +495,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -516,6 +534,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -580,6 +600,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -737,6 +759,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -774,6 +798,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -885,6 +911,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -919,6 +947,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -964,6 +994,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1080,6 +1112,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1153,6 +1187,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1169,6 +1205,8 @@ server cluster FixedLabel = 64 { /** An interface for controlling a fan in a heating/cooling system. */ provisional server cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter index ef5bcab551a4db..35533ef666300a 100644 --- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter +++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ client cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -148,6 +154,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -170,6 +178,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -242,6 +252,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -331,6 +343,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -405,6 +419,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -483,6 +499,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -498,6 +516,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -535,6 +555,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -599,6 +621,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -756,6 +780,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -793,6 +819,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -904,6 +932,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -938,6 +968,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -983,6 +1015,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1099,6 +1133,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1172,6 +1208,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1188,6 +1226,8 @@ server cluster FixedLabel = 64 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; diff --git a/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter b/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter index 7d29171e24ae92..9a191147a58beb 100644 --- a/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter +++ b/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -82,6 +86,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -154,6 +160,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -243,6 +251,8 @@ server cluster BasicInformation = 40 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -307,6 +317,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -464,6 +476,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -501,6 +515,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -614,6 +630,8 @@ server cluster GeneralDiagnostics = 51 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -664,6 +682,8 @@ server cluster Switch = 59 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -709,6 +729,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -825,6 +847,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter index 634539605ed12a..9187a209f8d703 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -158,6 +164,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -257,6 +265,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -287,6 +297,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -309,6 +321,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -381,6 +395,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -470,6 +486,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -544,6 +562,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -622,6 +642,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -637,6 +659,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -674,6 +698,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -738,6 +764,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -895,6 +923,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -932,6 +962,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1043,6 +1075,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1077,6 +1111,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1122,6 +1158,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1238,6 +1276,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1311,6 +1351,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1327,6 +1369,8 @@ server cluster FixedLabel = 64 { /** An interface for configuring and controlling the functionality of a thermostat. */ client cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -1484,6 +1528,8 @@ client cluster Thermostat = 513 { /** An interface for controlling a fan in a heating/cooling system. */ provisional server cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter index 19f61d9c984d74..2f15c1a9bec55a 100644 --- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter +++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ client cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -148,6 +154,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -170,6 +178,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -242,6 +252,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -331,6 +343,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -405,6 +419,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -483,6 +499,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -498,6 +516,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -535,6 +555,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -599,6 +621,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -756,6 +780,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -793,6 +819,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -904,6 +932,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -938,6 +968,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -983,6 +1015,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1099,6 +1133,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1172,6 +1208,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1188,6 +1226,8 @@ server cluster FixedLabel = 64 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; diff --git a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter index 6f315142dee3bf..687ad1becde51d 100644 --- a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter +++ b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -82,6 +86,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -154,6 +160,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -247,6 +255,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -262,6 +272,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -300,6 +312,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -321,6 +335,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -385,6 +401,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -542,6 +560,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -653,6 +673,8 @@ server cluster GeneralDiagnostics = 51 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -727,6 +749,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -772,6 +796,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -888,6 +914,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -960,6 +988,8 @@ server cluster GroupKeyManagement = 63 { /** This cluster supports remotely monitoring and, where supported, changing the operational state of any device where a state machine is a part of the operation. */ server cluster OperationalState = 96 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kNoError = 0; kUnableToStartOrResume = 1; diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter index 6d2c02333f1d73..2d66aead52b704 100644 --- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter +++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ client cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -148,6 +154,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -170,6 +178,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -242,6 +252,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -331,6 +343,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -405,6 +419,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -483,6 +499,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -498,6 +516,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -535,6 +555,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -599,6 +621,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -756,6 +780,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -793,6 +819,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -904,6 +932,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -938,6 +968,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -983,6 +1015,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1099,6 +1133,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1172,6 +1208,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1188,6 +1226,8 @@ server cluster FixedLabel = 64 { /** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { + revision 3; + enum LightSensorTypeEnum : enum8 { kPhotodiode = 0; kCMOS = 1; diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter index 8cb041c2b970f1..7d09f158e883e6 100644 --- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter +++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ client cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -148,6 +154,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -170,6 +178,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -242,6 +252,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -331,6 +343,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -405,6 +419,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -483,6 +499,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -498,6 +516,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -535,6 +555,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -599,6 +621,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -756,6 +780,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -793,6 +819,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -904,6 +932,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -938,6 +968,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -983,6 +1015,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1099,6 +1133,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1172,6 +1208,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1188,6 +1226,8 @@ server cluster FixedLabel = 64 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter index 491e50edea3090..3bec6b2cb078d1 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -162,6 +168,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -263,6 +271,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -293,6 +303,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -315,6 +327,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -387,6 +401,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -476,6 +492,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -550,6 +568,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -628,6 +648,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -643,6 +665,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -680,6 +704,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -744,6 +770,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -901,6 +929,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -938,6 +968,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1049,6 +1081,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1083,6 +1117,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1128,6 +1164,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1244,6 +1282,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1317,6 +1357,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; diff --git a/examples/chef/devices/rootnode_onofflight_samplemei.matter b/examples/chef/devices/rootnode_onofflight_samplemei.matter index bb63561efae3a3..219192be944c27 100644 --- a/examples/chef/devices/rootnode_onofflight_samplemei.matter +++ b/examples/chef/devices/rootnode_onofflight_samplemei.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -162,6 +168,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -263,6 +271,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -293,6 +303,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -315,6 +327,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -387,6 +401,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -476,6 +492,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -550,6 +568,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -628,6 +648,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -643,6 +665,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -680,6 +704,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -744,6 +770,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -901,6 +929,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -938,6 +968,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1049,6 +1081,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1083,6 +1117,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1128,6 +1164,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1244,6 +1282,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1317,6 +1357,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1333,6 +1375,8 @@ server cluster FixedLabel = 64 { /** The Sample MEI cluster showcases a cluster manufacturer extensions */ server cluster SampleMei = 4294048800 { + revision 1; // NOTE: Default/not specifically set + attribute boolean flipFlop = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter index 7990f876ec47ff..620a1a421215d0 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -182,6 +188,8 @@ client cluster OnOff = 6 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -228,6 +236,8 @@ server cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -258,6 +268,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -280,6 +292,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -352,6 +366,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -441,6 +457,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -515,6 +533,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -593,6 +613,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -608,6 +630,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -645,6 +669,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -709,6 +735,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -866,6 +894,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -903,6 +933,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1014,6 +1046,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1048,6 +1082,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1093,6 +1129,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1209,6 +1247,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1282,6 +1322,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter index 4aa4c41a77e0dc..7b8c7d2048be2f 100644 --- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter +++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -162,6 +168,8 @@ server cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -192,6 +200,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -214,6 +224,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -286,6 +298,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -375,6 +389,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -449,6 +465,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -527,6 +545,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -542,6 +562,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -579,6 +601,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -643,6 +667,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -800,6 +826,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -837,6 +865,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -948,6 +978,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -982,6 +1014,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1027,6 +1061,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1143,6 +1179,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1216,6 +1254,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter index b28c2b6286477d..ad10b0d7c5aa98 100644 --- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter +++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ client cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -148,6 +154,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -170,6 +178,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -242,6 +252,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -331,6 +343,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -405,6 +419,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -483,6 +499,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -498,6 +516,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -535,6 +555,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -599,6 +621,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -756,6 +780,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -793,6 +819,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -904,6 +932,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -938,6 +968,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -983,6 +1015,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1099,6 +1133,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1172,6 +1208,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1188,6 +1226,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1204,6 +1244,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } diff --git a/examples/chef/devices/rootnode_pump_5f904818cc.matter b/examples/chef/devices/rootnode_pump_5f904818cc.matter index 374b98fddf442c..341c49272dce06 100644 --- a/examples/chef/devices/rootnode_pump_5f904818cc.matter +++ b/examples/chef/devices/rootnode_pump_5f904818cc.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -95,6 +99,8 @@ server cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -128,6 +134,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -200,6 +208,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -285,6 +295,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -300,6 +312,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -338,6 +352,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -358,6 +374,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -422,6 +440,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -579,6 +599,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -685,6 +707,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -730,6 +754,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -846,6 +872,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -918,6 +946,8 @@ server cluster GroupKeyManagement = 63 { /** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -1029,6 +1059,8 @@ server cluster PumpConfigurationAndControl = 512 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1042,6 +1074,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -1059,6 +1093,8 @@ server cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; diff --git a/examples/chef/devices/rootnode_pump_a811bb33a0.matter b/examples/chef/devices/rootnode_pump_a811bb33a0.matter index a8c27e6215c259..a33a8283f77648 100644 --- a/examples/chef/devices/rootnode_pump_a811bb33a0.matter +++ b/examples/chef/devices/rootnode_pump_a811bb33a0.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -95,6 +99,8 @@ server cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -128,6 +134,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -200,6 +208,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -285,6 +295,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -300,6 +312,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -338,6 +352,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -358,6 +374,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -422,6 +440,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -579,6 +599,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -685,6 +707,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -730,6 +754,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -846,6 +872,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -918,6 +946,8 @@ server cluster GroupKeyManagement = 63 { /** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; diff --git a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter index ed1cad3db868eb..527d50ed0cbb37 100644 --- a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter +++ b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -82,6 +86,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -154,6 +160,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -247,6 +255,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -262,6 +272,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -300,6 +312,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -321,6 +335,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -385,6 +401,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -542,6 +560,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -653,6 +673,8 @@ server cluster GeneralDiagnostics = 51 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -727,6 +749,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -772,6 +796,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -888,6 +914,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -960,6 +988,8 @@ server cluster GroupKeyManagement = 63 { /** Attributes and commands for configuring the temperature control, and reporting temperature. */ server cluster TemperatureControl = 86 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kTemperatureNumber = 0x1; kTemperatureLevel = 0x2; diff --git a/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter b/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter index 09154e0b759f97..f9c8622f2f4656 100644 --- a/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter +++ b/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -151,6 +157,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -223,6 +231,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -312,6 +322,8 @@ server cluster BasicInformation = 40 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -376,6 +388,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -533,6 +547,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -570,6 +586,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -681,6 +699,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -726,6 +746,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -842,6 +864,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -914,6 +938,8 @@ server cluster GroupKeyManagement = 63 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster RvcRunMode = 84 { + revision 2; + enum ModeTag : enum16 { kIdle = 16384; kCleaning = 16385; @@ -969,6 +995,8 @@ server cluster RvcRunMode = 84 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster RvcCleanMode = 85 { + revision 2; + enum ModeTag : enum16 { kDeepClean = 16384; kVacuum = 16385; @@ -1018,6 +1046,8 @@ server cluster RvcCleanMode = 85 { /** This cluster supports remotely monitoring and, where supported, changing the operational state of a Robotic Vacuum. */ server cluster RvcOperationalState = 97 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kFailedToFindChargingDock = 64; kStuck = 65; diff --git a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter index 4c899818f54a7d..fd516663144de9 100644 --- a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter +++ b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -164,6 +170,8 @@ server cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -197,6 +205,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -269,6 +279,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -358,6 +370,8 @@ server cluster BasicInformation = 40 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -422,6 +436,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -579,6 +595,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -616,6 +634,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -727,6 +747,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -772,6 +794,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -888,6 +912,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -960,6 +986,8 @@ server cluster GroupKeyManagement = 63 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -1050,6 +1078,8 @@ server cluster Thermostat = 513 { /** An interface for controlling a fan in a heating/cooling system. */ provisional server cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -1113,6 +1143,8 @@ provisional server cluster FanControl = 514 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; diff --git a/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter b/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter index c489e13b5103ce..f35fe5c9784979 100644 --- a/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter +++ b/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -151,6 +157,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -223,6 +231,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -312,6 +322,8 @@ server cluster BasicInformation = 40 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -544,6 +556,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -608,6 +622,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -765,6 +781,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -802,6 +820,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -913,6 +933,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -958,6 +980,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1074,6 +1098,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1146,6 +1172,8 @@ server cluster GroupKeyManagement = 63 { /** This cluster provides an interface for observing and managing the state of smoke and CO alarms. */ server cluster SmokeCoAlarm = 92 { + revision 1; + enum AlarmStateEnum : enum8 { kNormal = 0; kWarning = 1; diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter index c3330f7e5eaba7..601fa08658bb54 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -89,6 +93,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -188,6 +194,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -218,6 +226,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -240,6 +250,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -312,6 +324,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -401,6 +415,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -475,6 +491,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -553,6 +571,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -568,6 +588,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -605,6 +627,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -669,6 +693,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -826,6 +852,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -863,6 +891,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -974,6 +1004,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1008,6 +1040,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1053,6 +1087,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1169,6 +1205,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1242,6 +1280,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter index c438d63c55ef0e..c23770638fa3ec 100644 --- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter +++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ client cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -148,6 +154,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -170,6 +178,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -242,6 +252,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -331,6 +343,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -405,6 +419,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -483,6 +499,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -498,6 +516,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -535,6 +555,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -599,6 +621,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -756,6 +780,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -793,6 +819,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -904,6 +932,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -938,6 +968,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -983,6 +1015,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1099,6 +1133,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1172,6 +1208,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1188,6 +1226,8 @@ server cluster FixedLabel = 64 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter index 2f3880ebf8bad4..7357b6b73b7f34 100644 --- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter +++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -142,6 +148,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -164,6 +172,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -236,6 +246,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -325,6 +337,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -399,6 +413,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -477,6 +493,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -492,6 +510,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -529,6 +549,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -593,6 +615,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -750,6 +774,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -787,6 +813,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -898,6 +926,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -932,6 +962,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -977,6 +1009,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1093,6 +1127,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1166,6 +1202,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1182,6 +1220,8 @@ server cluster FixedLabel = 64 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -1291,6 +1331,8 @@ server cluster Thermostat = 513 { /** An interface for controlling a fan in a heating/cooling system. */ provisional client cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -1371,6 +1413,8 @@ provisional client cluster FanControl = 514 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -1402,6 +1446,8 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1416,6 +1462,8 @@ client cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ client cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -1430,6 +1478,8 @@ client cluster RelativeHumidityMeasurement = 1029 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter index 8273d1559a610e..db3d5a58090813 100644 --- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter +++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -142,6 +148,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -164,6 +172,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -236,6 +246,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -325,6 +337,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -399,6 +413,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -477,6 +493,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -492,6 +510,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -529,6 +549,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -593,6 +615,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -750,6 +774,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -787,6 +813,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -898,6 +926,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -932,6 +962,8 @@ server cluster SoftwareDiagnostics = 52 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -977,6 +1009,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1093,6 +1127,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1166,6 +1202,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1182,6 +1220,8 @@ server cluster FixedLabel = 64 { /** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { + revision 5; + enum EndProductType : enum8 { kRollerShade = 0; kRomanShade = 1; diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter index 0e6f9891abfc4d..112ba2a89ddfd1 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -151,6 +157,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -223,6 +231,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -312,6 +322,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -386,6 +398,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -464,6 +478,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -479,6 +495,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -516,6 +534,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -580,6 +600,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -737,6 +759,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -774,6 +798,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -885,6 +911,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -919,6 +947,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1082,6 +1112,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1156,6 +1188,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1195,6 +1229,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1240,6 +1276,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1356,6 +1394,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1429,6 +1469,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1445,6 +1487,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1461,6 +1505,8 @@ server cluster UserLabel = 65 { /** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { + revision 1; + info event StateChange = 0 { boolean stateValue = 0; } @@ -1476,6 +1522,8 @@ server cluster BooleanState = 69 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; diff --git a/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter b/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter index 2b18f41c2b593c..4cc0f304729eb9 100644 --- a/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter +++ b/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -148,6 +154,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -170,6 +178,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -242,6 +252,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -335,6 +347,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -350,6 +364,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -388,6 +404,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -409,6 +427,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -473,6 +493,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -630,6 +652,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -741,6 +765,8 @@ server cluster GeneralDiagnostics = 51 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -815,6 +841,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -855,6 +883,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -971,6 +1001,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1043,6 +1075,8 @@ server cluster GroupKeyManagement = 63 { /** This cluster supports remotely monitoring and, where supported, changing the operational state of any device where a state machine is a part of the operation. */ server cluster OperationalState = 96 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kNoError = 0; kUnableToStartOrResume = 1; diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter index 3619291c024505..95f33981f5df7f 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.matter +++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -51,6 +53,8 @@ client cluster Identify = 3 { /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -97,6 +101,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -166,6 +172,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional client cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -357,6 +365,8 @@ provisional client cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -427,6 +437,8 @@ client cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -457,6 +469,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -479,6 +493,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -551,6 +567,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -640,6 +658,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -714,6 +734,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -792,6 +814,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -807,6 +831,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -844,6 +870,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -908,6 +936,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1065,6 +1095,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1102,6 +1134,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1213,6 +1247,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1247,6 +1283,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1410,6 +1448,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1484,6 +1524,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1523,6 +1565,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Accurate time is required for a number of reasons, including scheduling, display and validating security materials. */ server cluster TimeSynchronization = 56 { + revision 2; + enum GranularityEnum : enum8 { kNoTimeGranularity = 0; kMinutesGranularity = 1; @@ -1665,6 +1709,8 @@ server cluster TimeSynchronization = 56 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -1715,6 +1761,8 @@ server cluster Switch = 59 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1760,6 +1808,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1876,6 +1926,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1949,6 +2001,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1965,6 +2019,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1981,6 +2037,8 @@ server cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ server cluster IcdManagement = 70 { + revision 2; + bitmap Feature : bitmap32 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; @@ -2026,6 +2084,8 @@ server cluster IcdManagement = 70 { /** Attributes and commands for controlling the color properties of a color-capable light. */ client cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter index 3b9aead26244af..e240264c075ff1 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -182,6 +188,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -290,6 +298,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -323,6 +333,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -395,6 +407,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -484,6 +498,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -558,6 +574,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -636,6 +654,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -651,6 +671,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -688,6 +710,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -752,6 +776,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -909,6 +935,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -946,6 +974,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1057,6 +1087,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1090,6 +1122,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1129,6 +1163,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1174,6 +1210,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1290,6 +1328,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1363,6 +1403,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1379,6 +1421,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1395,6 +1439,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter index cddc0928db536d..6c9dd9e766b5f2 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -182,6 +188,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -290,6 +298,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -323,6 +333,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -395,6 +407,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -484,6 +498,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -558,6 +574,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -636,6 +654,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -651,6 +671,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -688,6 +710,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -752,6 +776,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -909,6 +935,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -946,6 +974,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1057,6 +1087,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1091,6 +1123,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1252,6 +1286,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1297,6 +1333,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1413,6 +1451,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1486,6 +1526,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1502,6 +1544,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1518,6 +1562,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter index 8a89f166b8f693..40e2a56a180b31 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -182,6 +188,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -290,6 +298,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -323,6 +333,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -395,6 +407,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -484,6 +498,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -558,6 +574,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -636,6 +654,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -651,6 +671,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -688,6 +710,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -752,6 +776,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -909,6 +935,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -946,6 +974,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1057,6 +1087,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1090,6 +1122,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1162,6 +1196,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1207,6 +1243,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1323,6 +1361,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1396,6 +1436,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1412,6 +1454,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1428,6 +1472,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index 9d5ac549470cbc..064abbb3432c75 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -274,6 +280,8 @@ provisional server cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -338,6 +346,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -446,6 +456,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -479,6 +491,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -551,6 +565,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -640,6 +656,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -714,6 +732,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -792,6 +812,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -807,6 +829,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -844,6 +868,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -908,6 +934,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1065,6 +1093,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1102,6 +1132,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1213,6 +1245,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1247,6 +1281,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1410,6 +1446,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1484,6 +1522,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1525,6 +1565,8 @@ server cluster EthernetNetworkDiagnostics = 55 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -1575,6 +1617,8 @@ server cluster Switch = 59 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1620,6 +1664,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1736,6 +1782,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1809,6 +1857,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1825,6 +1875,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1841,6 +1893,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -2109,6 +2163,8 @@ server cluster ColorControl = 768 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; diff --git a/examples/lighting-app/linux/BUILD.gn b/examples/lighting-app/linux/BUILD.gn index 47c14536d9a7c3..aac02352bacf40 100644 --- a/examples/lighting-app/linux/BUILD.gn +++ b/examples/lighting-app/linux/BUILD.gn @@ -82,6 +82,7 @@ executable("chip-lighting-app") { "$dir_pw_log", "$dir_pw_rpc:server", "$dir_pw_rpc/system_server:facade", + "$dir_pw_rpc/system_server:socket", "$dir_pw_stream:socket_stream", "$dir_pw_stream:sys_io_stream", "$dir_pw_sync:mutex", diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.matter b/examples/lighting-app/nxp/zap/lighting-on-off.matter index 351eaccf2b59ce..783bcd56a54587 100644 --- a/examples/lighting-app/nxp/zap/lighting-on-off.matter +++ b/examples/lighting-app/nxp/zap/lighting-on-off.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -182,6 +188,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -283,6 +291,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -316,6 +326,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -387,6 +399,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -469,6 +483,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -543,6 +559,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -618,6 +636,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -682,6 +702,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -829,6 +851,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -935,6 +959,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -969,6 +995,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1129,6 +1157,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1169,6 +1199,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1285,6 +1317,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; diff --git a/examples/lighting-app/qpg/zap/light.matter b/examples/lighting-app/qpg/zap/light.matter index 46c98d3638c1b8..9ad302c97de85b 100644 --- a/examples/lighting-app/qpg/zap/light.matter +++ b/examples/lighting-app/qpg/zap/light.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -182,6 +188,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -283,6 +291,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -316,6 +326,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -388,6 +400,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -477,6 +491,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -551,6 +567,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -626,6 +644,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -690,6 +710,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -837,6 +859,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -881,6 +905,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -991,6 +1017,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1025,6 +1053,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1185,6 +1215,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1230,6 +1262,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1346,6 +1380,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1419,6 +1455,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1435,6 +1473,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1451,6 +1491,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter index 0e86b5ec1dd408..622268ba3b8d4a 100644 --- a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter +++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -295,6 +301,8 @@ provisional server cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -359,6 +367,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -467,6 +477,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -500,6 +512,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -572,6 +586,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -661,6 +677,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -735,6 +753,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -813,6 +833,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -828,6 +850,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -865,6 +889,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -1101,6 +1127,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1165,6 +1193,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1249,6 +1279,8 @@ server cluster NetworkCommissioning = 49 { readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5; readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7; + readonly attribute ThreadCapabilitiesBitmap supportedThreadFeatures = 9; + readonly attribute int16u threadVersion = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1322,6 +1354,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1359,6 +1393,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1470,6 +1506,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1504,6 +1542,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1667,6 +1707,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1712,6 +1754,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1828,6 +1872,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1901,6 +1947,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1917,6 +1965,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1933,6 +1983,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -2304,6 +2356,8 @@ endpoint 0 { ram attribute lastNetworkingStatus; ram attribute lastNetworkID; ram attribute lastConnectErrorValue; + callback attribute supportedThreadFeatures; + callback attribute threadVersion; ram attribute featureMap default = 2; ram attribute clusterRevision default = 1; @@ -2531,15 +2585,15 @@ endpoint 1 { } server cluster Scenes { - callback attribute nameSupport default = 0x80; - callback attribute lastConfiguredBy; - callback attribute sceneTableSize default = 16; + ram attribute nameSupport default = 0x80; + ram attribute lastConfiguredBy; + ram attribute sceneTableSize default = 16; callback attribute fabricSceneInfo; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 15; + ram attribute featureMap default = 15; ram attribute clusterRevision default = 5; handle command AddScene; diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.zap b/examples/lighting-app/silabs/data_model/lighting-thread-app.zap index 850576d9647ba9..dc69ec278ff7ca 100644 --- a/examples/lighting-app/silabs/data_model/lighting-thread-app.zap +++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.zap @@ -1428,6 +1428,38 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SupportedThreadFeatures", + "code": 9, + "mfgCode": null, + "side": "server", + "type": "ThreadCapabilitiesBitmap", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ThreadVersion", + "code": 10, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "FeatureMap", "code": 65532, @@ -4111,7 +4143,7 @@ "side": "server", "type": "NameSupportBitmap", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "0x80", @@ -4127,7 +4159,7 @@ "side": "server", "type": "node_id", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4143,7 +4175,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "16", @@ -4239,7 +4271,7 @@ "side": "server", "type": "bitmap32", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "15", @@ -5902,5 +5934,3 @@ } ] } - - diff --git a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter index f853bf5e8e30ee..3ab26ccd8033dd 100644 --- a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter +++ b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -274,6 +280,8 @@ provisional server cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -338,6 +346,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -446,6 +456,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -479,6 +491,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -551,6 +565,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -640,6 +656,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -714,6 +732,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -792,6 +812,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -807,6 +829,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -844,6 +868,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -1080,6 +1106,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1144,6 +1172,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1301,6 +1331,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1338,6 +1370,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1449,6 +1483,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1483,6 +1519,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1557,6 +1595,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1602,6 +1642,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1718,6 +1760,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1791,6 +1835,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1807,6 +1853,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1823,6 +1871,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; diff --git a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter index 8a393f226e104b..851919351de21f 100644 --- a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter +++ b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -76,6 +80,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -148,6 +154,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -230,6 +238,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -304,6 +314,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -382,6 +394,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -402,6 +416,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -466,6 +482,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -623,6 +641,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -728,6 +748,8 @@ server cluster GeneralDiagnostics = 51 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -843,6 +865,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -907,6 +931,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -946,6 +972,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -986,6 +1014,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1102,6 +1132,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1175,6 +1207,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1191,6 +1225,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1207,6 +1243,8 @@ server cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ server cluster IcdManagement = 70 { + revision 2; + bitmap Feature : bitmap32 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index 91ca8528d179ad..22e1b16b9cca0c 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -82,6 +86,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -154,6 +160,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -243,6 +251,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -317,6 +327,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -395,6 +407,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -410,6 +424,8 @@ server cluster LocalizationConfiguration = 43 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -430,6 +446,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -666,6 +684,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -730,6 +750,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -887,6 +909,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -924,6 +948,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1035,6 +1061,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1069,6 +1097,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1232,6 +1262,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1306,6 +1338,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1345,6 +1379,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1385,6 +1421,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1501,6 +1539,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1574,6 +1614,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1590,6 +1632,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1606,6 +1650,8 @@ server cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ server cluster IcdManagement = 70 { + revision 2; + bitmap Feature : bitmap32 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; @@ -1651,6 +1697,8 @@ server cluster IcdManagement = 70 { /** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; diff --git a/examples/lock-app/nxp/zap/lock-app.matter b/examples/lock-app/nxp/zap/lock-app.matter index edc3b3adafea8f..8f0ad8c10e4efa 100644 --- a/examples/lock-app/nxp/zap/lock-app.matter +++ b/examples/lock-app/nxp/zap/lock-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -82,6 +86,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -153,6 +159,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -235,6 +243,8 @@ server cluster BasicInformation = 40 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -299,6 +309,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -446,6 +458,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -552,6 +566,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -586,6 +602,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -746,6 +764,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -786,6 +806,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -902,6 +924,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -974,6 +998,8 @@ server cluster GroupKeyManagement = 63 { /** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; diff --git a/examples/lock-app/qpg/zap/lock.matter b/examples/lock-app/qpg/zap/lock.matter index 40c69b8c583861..e0c6c561c59bff 100644 --- a/examples/lock-app/qpg/zap/lock.matter +++ b/examples/lock-app/qpg/zap/lock.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -151,6 +157,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -223,6 +231,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -312,6 +322,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -386,6 +398,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -461,6 +475,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -525,6 +541,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -672,6 +690,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -716,6 +736,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -826,6 +848,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -860,6 +884,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1020,6 +1046,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1065,6 +1093,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1181,6 +1211,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1254,6 +1286,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1270,6 +1304,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1286,6 +1322,8 @@ server cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ server cluster IcdManagement = 70 { + revision 2; + bitmap Feature : bitmap32 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; @@ -1331,6 +1369,8 @@ server cluster IcdManagement = 70 { /** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; diff --git a/examples/log-source-app/log-source-common/log-source-app.matter b/examples/log-source-app/log-source-common/log-source-app.matter index 320fbef7972df9..4459a659b2cee0 100644 --- a/examples/log-source-app/log-source-common/log-source-app.matter +++ b/examples/log-source-app/log-source-common/log-source-app.matter @@ -6,6 +6,8 @@ and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -76,6 +78,8 @@ server cluster AccessControl = 31 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -138,6 +142,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -287,6 +293,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -331,6 +339,8 @@ server cluster DiagnosticLogs = 50 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter index 694d7dfd23db47..182fab3bd3232b 100644 --- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter +++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter @@ -3,6 +3,8 @@ /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -36,6 +38,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ client cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -109,6 +113,8 @@ client cluster AccessControl = 31 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -181,6 +187,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -270,6 +278,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ server cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -344,6 +354,8 @@ server cluster OtaSoftwareUpdateProvider = 41 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -359,6 +371,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -396,6 +410,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -460,6 +476,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -617,6 +635,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -728,6 +748,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -773,6 +795,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -889,6 +913,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -962,6 +988,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -978,6 +1006,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter index a0016dd0adca29..96b2a8d2da9ad7 100644 --- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter +++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -182,6 +188,8 @@ server cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -215,6 +223,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -287,6 +297,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -376,6 +388,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -450,6 +464,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -528,6 +544,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -543,6 +561,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -580,6 +600,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -644,6 +666,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -801,6 +825,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -912,6 +938,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -957,6 +985,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1073,6 +1103,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1146,6 +1178,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1162,6 +1196,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index 14be472f374cae..6eca51cf360d29 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -51,6 +53,8 @@ client cluster Identify = 3 { /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -97,6 +101,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -166,6 +172,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -297,6 +305,8 @@ provisional server cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -367,6 +377,8 @@ client cluster OnOff = 6 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -431,6 +443,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ client cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -554,6 +568,8 @@ client cluster LevelControl = 8 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -662,6 +678,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -695,6 +713,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -765,6 +785,8 @@ server cluster AccessControl = 31 { /** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { + revision 1; // NOTE: Default/not specifically set + enum ActionErrorEnum : enum8 { kUnknown = 0; kInterrupted = 1; @@ -852,6 +874,8 @@ server cluster Actions = 37 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -943,6 +967,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ client cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -958,6 +984,8 @@ client cluster LocalizationConfiguration = 43 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -973,6 +1001,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -1013,6 +1043,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ client cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -1037,6 +1069,8 @@ client cluster UnitLocalization = 45 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -1058,6 +1092,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -1315,6 +1351,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ client cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1382,6 +1420,8 @@ client cluster GeneralCommissioning = 48 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1446,6 +1486,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1603,6 +1645,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1714,6 +1758,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1748,6 +1794,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ client cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1912,6 +1960,8 @@ client cluster ThreadNetworkDiagnostics = 53 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -2075,6 +2125,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -2149,6 +2201,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -2191,6 +2245,8 @@ server cluster EthernetNetworkDiagnostics = 55 { collection of attributes that the Node MAY collect to aid in conveying information regarding the Bridged Device to a user, such as the vendor name, the model name, or user-assigned name. */ server cluster BridgedDeviceBasicInformation = 57 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -2271,6 +2327,8 @@ server cluster BridgedDeviceBasicInformation = 57 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ client cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -2324,6 +2382,8 @@ client cluster Switch = 59 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -2375,6 +2435,8 @@ server cluster Switch = 59 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -2420,6 +2482,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ client cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -2544,6 +2608,8 @@ client cluster OperationalCredentials = 62 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -2660,6 +2726,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -2733,6 +2801,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ client cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2750,6 +2820,8 @@ client cluster FixedLabel = 64 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2766,6 +2838,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2782,6 +2856,8 @@ server cluster UserLabel = 65 { /** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { + revision 1; + info event StateChange = 0 { boolean stateValue = 0; } @@ -2797,6 +2873,8 @@ server cluster BooleanState = 69 { /** Attributes and commands for selecting a mode from a list of supported options. */ client cluster ModeSelect = 80 { + revision 2; + bitmap Feature : bitmap32 { kOnOff = 0x1; } @@ -2835,6 +2913,8 @@ client cluster ModeSelect = 80 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster ModeSelect = 80 { + revision 2; + bitmap Feature : bitmap32 { kOnOff = 0x1; } @@ -2871,6 +2951,8 @@ server cluster ModeSelect = 80 { /** An interface to a generic way to secure a door */ client cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; @@ -3491,6 +3573,8 @@ client cluster DoorLock = 257 { /** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; @@ -3991,6 +4075,8 @@ server cluster DoorLock = 257 { /** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { + revision 5; + enum EndProductType : enum8 { kRollerShade = 0; kRomanShade = 1; @@ -4131,6 +4217,8 @@ server cluster WindowCovering = 258 { /** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -4253,6 +4341,8 @@ server cluster PumpConfigurationAndControl = 512 { /** An interface for configuring and controlling the functionality of a thermostat. */ client cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -4410,6 +4500,8 @@ client cluster Thermostat = 513 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -4533,6 +4625,8 @@ server cluster Thermostat = 513 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ client cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -4565,6 +4659,8 @@ client cluster ThermostatUserInterfaceConfiguration = 516 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -4597,6 +4693,8 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ client cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -4915,6 +5013,8 @@ client cluster ColorControl = 768 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -5214,6 +5314,8 @@ server cluster ColorControl = 768 { /** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { + revision 3; + enum LightSensorTypeEnum : enum8 { kPhotodiode = 0; kCMOS = 1; @@ -5234,6 +5336,8 @@ server cluster IlluminanceMeasurement = 1024 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -5248,6 +5352,8 @@ client cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -5262,6 +5368,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -5285,6 +5393,8 @@ server cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -5299,6 +5409,8 @@ server cluster FlowMeasurement = 1028 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ client cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -5313,6 +5425,8 @@ client cluster RelativeHumidityMeasurement = 1029 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -5327,6 +5441,8 @@ server cluster RelativeHumidityMeasurement = 1029 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; @@ -5366,6 +5482,8 @@ server cluster OccupancySensing = 1030 { /** This cluster provides an interface for controlling the current Channel on a device. */ client cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -5434,6 +5552,8 @@ client cluster Channel = 1284 { /** This cluster provides an interface for controlling the current Channel on a device. */ server cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -5494,6 +5614,8 @@ server cluster Channel = 1284 { /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ client cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -5530,6 +5652,8 @@ client cluster TargetNavigator = 1285 { /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -5553,6 +5677,8 @@ server cluster TargetNavigator = 1285 { /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ client cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -5636,6 +5762,8 @@ client cluster MediaPlayback = 1286 { /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ server cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -5708,6 +5836,8 @@ server cluster MediaPlayback = 1286 { /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ client cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -5764,6 +5894,8 @@ client cluster MediaInput = 1287 { /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ server cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -5816,6 +5948,8 @@ server cluster MediaInput = 1287 { /** This cluster provides an interface for managing low power mode on a device. */ client cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -5829,6 +5963,8 @@ client cluster LowPower = 1288 { /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ client cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -5951,6 +6087,8 @@ client cluster KeypadInput = 1289 { /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -6062,6 +6200,8 @@ server cluster KeypadInput = 1289 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ContentLauncher = 1290 { + revision 1; // NOTE: Default/not specifically set + enum MetricTypeEnum : enum8 { kPixels = 0; kPercentage = 1; @@ -6170,6 +6310,8 @@ client cluster ContentLauncher = 1290 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ContentLauncher = 1290 { + revision 1; // NOTE: Default/not specifically set + enum MetricTypeEnum : enum8 { kPixels = 0; kPercentage = 1; @@ -6276,6 +6418,8 @@ server cluster ContentLauncher = 1290 { /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ client cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; @@ -6321,6 +6465,8 @@ client cluster AudioOutput = 1291 { /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ server cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; @@ -6364,6 +6510,8 @@ server cluster AudioOutput = 1291 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ApplicationLauncher = 1292 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kAppNotAvailable = 1; @@ -6421,6 +6569,8 @@ client cluster ApplicationLauncher = 1292 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ApplicationLauncher = 1292 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kAppNotAvailable = 1; @@ -6453,6 +6603,8 @@ server cluster ApplicationLauncher = 1292 { /** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ client cluster ApplicationBasic = 1293 { + revision 1; // NOTE: Default/not specifically set + enum ApplicationStatusEnum : enum8 { kStopped = 0; kActiveVisibleFocus = 1; @@ -6483,6 +6635,8 @@ client cluster ApplicationBasic = 1293 { /** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ server cluster ApplicationBasic = 1293 { + revision 1; // NOTE: Default/not specifically set + enum ApplicationStatusEnum : enum8 { kStopped = 0; kActiveVisibleFocus = 1; @@ -6513,6 +6667,8 @@ server cluster ApplicationBasic = 1293 { /** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ client cluster AccountLogin = 1294 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -6543,6 +6699,8 @@ client cluster AccountLogin = 1294 { /** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ server cluster AccountLogin = 1294 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index 12c47d5ad6f951..d7b0e66b4c88f9 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -51,6 +53,8 @@ client cluster Identify = 3 { /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -97,6 +101,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -166,6 +172,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -297,6 +305,8 @@ provisional server cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -367,6 +377,8 @@ client cluster OnOff = 6 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -431,6 +443,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ client cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -554,6 +568,8 @@ client cluster LevelControl = 8 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -660,6 +676,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -693,6 +711,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -763,6 +783,8 @@ server cluster AccessControl = 31 { /** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ server cluster Actions = 37 { + revision 1; // NOTE: Default/not specifically set + enum ActionErrorEnum : enum8 { kUnknown = 0; kInterrupted = 1; @@ -850,6 +872,8 @@ server cluster Actions = 37 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -941,6 +965,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -956,6 +982,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -996,6 +1024,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -1017,6 +1047,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -1274,6 +1306,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ client cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1341,6 +1375,8 @@ client cluster GeneralCommissioning = 48 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1405,6 +1441,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1562,6 +1600,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1673,6 +1713,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1707,6 +1749,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ client cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1871,6 +1915,8 @@ client cluster ThreadNetworkDiagnostics = 53 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -2034,6 +2080,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -2108,6 +2156,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -2150,6 +2200,8 @@ server cluster EthernetNetworkDiagnostics = 55 { collection of attributes that the Node MAY collect to aid in conveying information regarding the Bridged Device to a user, such as the vendor name, the model name, or user-assigned name. */ server cluster BridgedDeviceBasicInformation = 57 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -2230,6 +2282,8 @@ server cluster BridgedDeviceBasicInformation = 57 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ client cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -2283,6 +2337,8 @@ client cluster Switch = 59 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ server cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -2334,6 +2390,8 @@ server cluster Switch = 59 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -2379,6 +2437,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ client cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -2503,6 +2563,8 @@ client cluster OperationalCredentials = 62 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -2619,6 +2681,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -2692,6 +2756,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ client cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2709,6 +2775,8 @@ client cluster FixedLabel = 64 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2725,6 +2793,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2741,6 +2811,8 @@ server cluster UserLabel = 65 { /** This cluster provides an interface to a boolean state called StateValue. */ server cluster BooleanState = 69 { + revision 1; + info event StateChange = 0 { boolean stateValue = 0; } @@ -2756,6 +2828,8 @@ server cluster BooleanState = 69 { /** Attributes and commands for selecting a mode from a list of supported options. */ client cluster ModeSelect = 80 { + revision 2; + bitmap Feature : bitmap32 { kOnOff = 0x1; } @@ -2794,6 +2868,8 @@ client cluster ModeSelect = 80 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster ModeSelect = 80 { + revision 2; + bitmap Feature : bitmap32 { kOnOff = 0x1; } @@ -2830,6 +2906,8 @@ server cluster ModeSelect = 80 { /** An interface to a generic way to secure a door */ client cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; @@ -3450,6 +3528,8 @@ client cluster DoorLock = 257 { /** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; @@ -3950,6 +4030,8 @@ server cluster DoorLock = 257 { /** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { + revision 5; + enum EndProductType : enum8 { kRollerShade = 0; kRomanShade = 1; @@ -4090,6 +4172,8 @@ server cluster WindowCovering = 258 { /** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -4212,6 +4296,8 @@ server cluster PumpConfigurationAndControl = 512 { /** An interface for configuring and controlling the functionality of a thermostat. */ client cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -4369,6 +4455,8 @@ client cluster Thermostat = 513 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -4492,6 +4580,8 @@ server cluster Thermostat = 513 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ client cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -4524,6 +4614,8 @@ client cluster ThermostatUserInterfaceConfiguration = 516 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -4556,6 +4648,8 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ client cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -4874,6 +4968,8 @@ client cluster ColorControl = 768 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -5173,6 +5269,8 @@ server cluster ColorControl = 768 { /** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ server cluster IlluminanceMeasurement = 1024 { + revision 3; + enum LightSensorTypeEnum : enum8 { kPhotodiode = 0; kCMOS = 1; @@ -5193,6 +5291,8 @@ server cluster IlluminanceMeasurement = 1024 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -5207,6 +5307,8 @@ client cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -5221,6 +5323,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -5244,6 +5348,8 @@ server cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -5258,6 +5364,8 @@ server cluster FlowMeasurement = 1028 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ client cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -5272,6 +5380,8 @@ client cluster RelativeHumidityMeasurement = 1029 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -5286,6 +5396,8 @@ server cluster RelativeHumidityMeasurement = 1029 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ server cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; @@ -5325,6 +5437,8 @@ server cluster OccupancySensing = 1030 { /** This cluster provides an interface for controlling the current Channel on a device. */ client cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -5393,6 +5507,8 @@ client cluster Channel = 1284 { /** This cluster provides an interface for controlling the current Channel on a device. */ server cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -5453,6 +5569,8 @@ server cluster Channel = 1284 { /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ client cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -5489,6 +5607,8 @@ client cluster TargetNavigator = 1285 { /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -5512,6 +5632,8 @@ server cluster TargetNavigator = 1285 { /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ client cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -5595,6 +5717,8 @@ client cluster MediaPlayback = 1286 { /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ server cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -5667,6 +5791,8 @@ server cluster MediaPlayback = 1286 { /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ client cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -5723,6 +5849,8 @@ client cluster MediaInput = 1287 { /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ server cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -5775,6 +5903,8 @@ server cluster MediaInput = 1287 { /** This cluster provides an interface for managing low power mode on a device. */ client cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -5788,6 +5918,8 @@ client cluster LowPower = 1288 { /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ client cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -5910,6 +6042,8 @@ client cluster KeypadInput = 1289 { /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -6021,6 +6155,8 @@ server cluster KeypadInput = 1289 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ContentLauncher = 1290 { + revision 1; // NOTE: Default/not specifically set + enum MetricTypeEnum : enum8 { kPixels = 0; kPercentage = 1; @@ -6129,6 +6265,8 @@ client cluster ContentLauncher = 1290 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ContentLauncher = 1290 { + revision 1; // NOTE: Default/not specifically set + enum MetricTypeEnum : enum8 { kPixels = 0; kPercentage = 1; @@ -6235,6 +6373,8 @@ server cluster ContentLauncher = 1290 { /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ client cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; @@ -6280,6 +6420,8 @@ client cluster AudioOutput = 1291 { /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ server cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; @@ -6323,6 +6465,8 @@ server cluster AudioOutput = 1291 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ApplicationLauncher = 1292 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kAppNotAvailable = 1; @@ -6380,6 +6524,8 @@ client cluster ApplicationLauncher = 1292 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ApplicationLauncher = 1292 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kAppNotAvailable = 1; @@ -6412,6 +6558,8 @@ server cluster ApplicationLauncher = 1292 { /** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ client cluster ApplicationBasic = 1293 { + revision 1; // NOTE: Default/not specifically set + enum ApplicationStatusEnum : enum8 { kStopped = 0; kActiveVisibleFocus = 1; @@ -6442,6 +6590,8 @@ client cluster ApplicationBasic = 1293 { /** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ server cluster ApplicationBasic = 1293 { + revision 1; // NOTE: Default/not specifically set + enum ApplicationStatusEnum : enum8 { kStopped = 0; kActiveVisibleFocus = 1; @@ -6472,6 +6622,8 @@ server cluster ApplicationBasic = 1293 { /** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ client cluster AccountLogin = 1294 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -6502,6 +6654,8 @@ client cluster AccountLogin = 1294 { /** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ server cluster AccountLogin = 1294 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/platform/linux/AppMain.cpp b/examples/platform/linux/AppMain.cpp index b4eb6ecfd3baab..79e3e08edce718 100644 --- a/examples/platform/linux/AppMain.cpp +++ b/examples/platform/linux/AppMain.cpp @@ -431,7 +431,7 @@ int ChipLinuxAppInit(int argc, char * const argv[], OptionSet * customOptions, } #if defined(PW_RPC_ENABLED) - rpc::Init(); + rpc::Init(LinuxDeviceOptions::GetInstance().rpcServerPort); ChipLogProgress(NotSpecified, "PW_RPC initialized."); #endif // defined(PW_RPC_ENABLED) diff --git a/examples/platform/linux/Options.cpp b/examples/platform/linux/Options.cpp index d97566213a579e..c340f662df3269 100644 --- a/examples/platform/linux/Options.cpp +++ b/examples/platform/linux/Options.cpp @@ -84,6 +84,9 @@ enum kCommissionerOption_FabricID = 0x1020, kTraceTo = 0x1021, kOptionSimulateNoInternalTime = 0x1022, +#if defined(PW_RPC_ENABLED) + kOptionRpcServerPort = 0x1023, +#endif }; constexpr unsigned kAppUsageLength = 64; @@ -138,6 +141,9 @@ OptionDef sDeviceOptionDefs[] = { { "trace-to", kArgumentRequired, kTraceTo }, #endif { "simulate-no-internal-time", kNoArgument, kOptionSimulateNoInternalTime }, +#if defined(PW_RPC_ENABLED) + { "rpc-server-port", kArgumentRequired, kOptionRpcServerPort }, +#endif {} }; @@ -254,6 +260,10 @@ const char * sDeviceOptionHelp = #endif " --simulate-no-internal-time\n" " Time cluster does not use internal platform time\n" +#if defined(PW_RPC_ENABLED) + " --rpc-server-port\n" + " Start RPC server on specified port\n" +#endif "\n"; bool Base64ArgToVector(const char * arg, size_t maxSize, std::vector & outVector) @@ -507,6 +517,11 @@ bool HandleOption(const char * aProgram, OptionSet * aOptions, int aIdentifier, case kOptionSimulateNoInternalTime: LinuxDeviceOptions::GetInstance().mSimulateNoInternalTime = true; break; +#if defined(PW_RPC_ENABLED) + case kOptionRpcServerPort: + LinuxDeviceOptions::GetInstance().rpcServerPort = static_cast(atoi(aValue)); + break; +#endif default: PrintArgError("%s: INTERNAL ERROR: Unhandled option: %s\n", aProgram, aName); retval = false; diff --git a/examples/platform/linux/Options.h b/examples/platform/linux/Options.h index 8a080680cefbcf..0aedffb57dc76e 100644 --- a/examples/platform/linux/Options.h +++ b/examples/platform/linux/Options.h @@ -68,7 +68,9 @@ struct LinuxDeviceOptions chip::FabricId commissionerFabricId = chip::kUndefinedFabricId; std::vector traceTo; bool mSimulateNoInternalTime = false; - +#if defined(PW_RPC_ENABLED) + uint16_t rpcServerPort = 33000; +#endif static LinuxDeviceOptions & GetInstance(); }; diff --git a/examples/platform/linux/Rpc.cpp b/examples/platform/linux/Rpc.cpp index 3f81f0514fc17f..f45df32d750a81 100644 --- a/examples/platform/linux/Rpc.cpp +++ b/examples/platform/linux/Rpc.cpp @@ -18,6 +18,7 @@ #include "pw_rpc/server.h" #include "pw_rpc_system_server/rpc_server.h" +#include "pw_rpc_system_server/socket.h" #include @@ -116,9 +117,10 @@ void RunRpcService() pw::rpc::system_server::Start(); } -int Init() +int Init(uint16_t rpcServerPort) { int err = 0; + pw::rpc::system_server::set_socket_port(rpcServerPort); std::thread rpc_service(RunRpcService); rpc_service.detach(); return err; diff --git a/examples/platform/linux/Rpc.h b/examples/platform/linux/Rpc.h index 85495b2bf8fbaf..fbcfc6ed63f4f2 100644 --- a/examples/platform/linux/Rpc.h +++ b/examples/platform/linux/Rpc.h @@ -21,7 +21,7 @@ namespace chip { namespace rpc { -int Init(); +int Init(uint16_t rpcServerPort); } // namespace rpc } // namespace chip diff --git a/examples/platform/silabs/efr32/project_include/OpenThreadConfig.h b/examples/platform/silabs/efr32/project_include/OpenThreadConfig.h index e563f31d638b40..e906e48ab02684 100644 --- a/examples/platform/silabs/efr32/project_include/OpenThreadConfig.h +++ b/examples/platform/silabs/efr32/project_include/OpenThreadConfig.h @@ -86,7 +86,7 @@ #define OPENTHREAD_CONFIG_JOINER_ENABLE 0 #define OPENTHREAD_CONFIG_COMMISSIONER_ENABLE 0 #define OPENTHREAD_CONFIG_UDP_FORWARD_ENABLE 0 -#define OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE 0 +#define OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER #define OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE 0 #define OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE 0 #define OPENTHREAD_CONFIG_TCP_ENABLE 0 diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter index d14a2b76939d31..a0199d54baf41f 100644 --- a/examples/pump-app/pump-common/pump-app.matter +++ b/examples/pump-app/pump-common/pump-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -89,6 +93,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -188,6 +194,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -218,6 +226,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -240,6 +250,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -312,6 +324,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -399,6 +413,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -473,6 +489,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -548,6 +566,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -612,6 +632,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -759,6 +781,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -865,6 +889,8 @@ server cluster GeneralDiagnostics = 51 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -982,6 +1008,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1027,6 +1055,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1143,6 +1173,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1215,6 +1247,8 @@ server cluster GroupKeyManagement = 63 { /** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -1337,6 +1371,8 @@ server cluster PumpConfigurationAndControl = 512 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1351,6 +1387,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -1374,6 +1412,8 @@ server cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -1388,6 +1428,8 @@ server cluster FlowMeasurement = 1028 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; diff --git a/examples/pump-app/silabs/data_model/pump-thread-app.matter b/examples/pump-app/silabs/data_model/pump-thread-app.matter index 09c985bdd451d5..8a3fff69bc1624 100644 --- a/examples/pump-app/silabs/data_model/pump-thread-app.matter +++ b/examples/pump-app/silabs/data_model/pump-thread-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -89,6 +93,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -188,6 +194,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -218,6 +226,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -240,6 +250,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -312,6 +324,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -399,6 +413,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -473,6 +489,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -548,6 +566,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -612,6 +632,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -759,6 +781,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -865,6 +889,8 @@ server cluster GeneralDiagnostics = 51 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -982,6 +1008,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1027,6 +1055,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1143,6 +1173,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1215,6 +1247,8 @@ server cluster GroupKeyManagement = 63 { /** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -1337,6 +1371,8 @@ server cluster PumpConfigurationAndControl = 512 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1351,6 +1387,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -1374,6 +1412,8 @@ server cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -1388,6 +1428,8 @@ server cluster FlowMeasurement = 1028 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; diff --git a/examples/pump-app/silabs/data_model/pump-wifi-app.matter b/examples/pump-app/silabs/data_model/pump-wifi-app.matter index 09c985bdd451d5..8a3fff69bc1624 100644 --- a/examples/pump-app/silabs/data_model/pump-wifi-app.matter +++ b/examples/pump-app/silabs/data_model/pump-wifi-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -89,6 +93,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -188,6 +194,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -218,6 +226,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -240,6 +250,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -312,6 +324,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -399,6 +413,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -473,6 +489,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -548,6 +566,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -612,6 +632,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -759,6 +781,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -865,6 +889,8 @@ server cluster GeneralDiagnostics = 51 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -982,6 +1008,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1027,6 +1055,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1143,6 +1173,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1215,6 +1247,8 @@ server cluster GroupKeyManagement = 63 { /** An interface for configuring and controlling pumps. */ server cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -1337,6 +1371,8 @@ server cluster PumpConfigurationAndControl = 512 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1351,6 +1387,8 @@ server cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ server cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -1374,6 +1412,8 @@ server cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ server cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -1388,6 +1428,8 @@ server cluster FlowMeasurement = 1028 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter index fce972f5248c2d..a67089b8fa06b1 100644 --- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter +++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -113,6 +117,8 @@ client cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -143,6 +149,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -165,6 +173,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -237,6 +247,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -324,6 +336,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -398,6 +412,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -473,6 +489,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -537,6 +555,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -684,6 +704,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -790,6 +812,8 @@ server cluster GeneralDiagnostics = 51 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -907,6 +931,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -952,6 +978,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1068,6 +1096,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1140,6 +1170,8 @@ server cluster GroupKeyManagement = 63 { /** An interface for configuring and controlling pumps. */ client cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -1262,6 +1294,8 @@ client cluster PumpConfigurationAndControl = 512 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -1276,6 +1310,8 @@ client cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ client cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -1299,6 +1335,8 @@ client cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ client cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; diff --git a/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter b/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter index 4352e13bf71d13..afa708a1ae8320 100644 --- a/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter +++ b/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter @@ -3,6 +3,8 @@ /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -37,6 +39,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -109,6 +113,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -202,6 +208,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -217,6 +225,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -255,6 +265,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -276,6 +288,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -340,6 +354,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -497,6 +513,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -608,6 +626,8 @@ server cluster GeneralDiagnostics = 51 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -682,6 +702,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -722,6 +744,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -838,6 +862,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -910,6 +936,8 @@ server cluster GroupKeyManagement = 63 { /** Attributes and commands for configuring the temperature control, and reporting temperature. */ server cluster TemperatureControl = 86 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kTemperatureNumber = 0x1; kTemperatureLevel = 0x2; diff --git a/examples/resource-monitoring-app/linux/.gn b/examples/resource-monitoring-app/linux/.gn deleted file mode 100644 index 5d1ce757507582..00000000000000 --- a/examples/resource-monitoring-app/linux/.gn +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (c) 2020 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import("//build_overrides/build.gni") - -# The location of the build configuration file. -buildconfig = "${build_root}/config/BUILDCONFIG.gn" - -# CHIP uses angle bracket includes. -check_system_includes = true - -default_args = { - import("//args.gni") -} diff --git a/examples/resource-monitoring-app/linux/BUILD.gn b/examples/resource-monitoring-app/linux/BUILD.gn deleted file mode 100644 index b9a1e41f92b053..00000000000000 --- a/examples/resource-monitoring-app/linux/BUILD.gn +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright (c) 2020 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import("//build_overrides/chip.gni") - -import("${chip_root}/build/chip/tools.gni") -import("${chip_root}/src/app/common_flags.gni") - -assert(chip_build_tools) - -import("${chip_root}/examples/common/pigweed/pigweed_rpcs.gni") - -config("includes") { - include_dirs = [ - ".", - "include", - ] -} - -executable("chip-resource-monitoring-app") { - sources = [ - "${chip_root}/examples/resource-monitoring-app/resource-monitoring-common/src/ReplacementProductListManager.cpp", - "${chip_root}/examples/resource-monitoring-app/resource-monitoring-common/src/delegates/ActivatedCarbonFilterMonitoring.cpp", - "${chip_root}/examples/resource-monitoring-app/resource-monitoring-common/src/delegates/HepaFilterMonitoring.cpp", - "include/CHIPProjectAppConfig.h", - "src/main.cpp", - ] - - deps = [ - "${chip_root}/examples/platform/linux:app-main", - "${chip_root}/examples/resource-monitoring-app/resource-monitoring-common", - "${chip_root}/examples/resource-monitoring-app/resource-monitoring-common:delegates", - "${chip_root}/src/lib", - ] - - include_dirs = [ "include" ] - - # The system_rpc_server.cc file is in pigweed and doesn't compile with - # -Wconversion, remove check for RPC build only. - cflags = [ "-Wconversion" ] - - output_dir = root_out_dir -} - -group("linux") { - deps = [ ":chip-resource-monitoring-app" ] -} - -group("default") { - deps = [ ":linux" ] -} diff --git a/examples/resource-monitoring-app/linux/Dockerfile b/examples/resource-monitoring-app/linux/Dockerfile deleted file mode 100644 index 78f41ab73a9897..00000000000000 --- a/examples/resource-monitoring-app/linux/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -# -# Copyright (c) 2020-2021 Project CHIP Authors -# All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -ARG VERSION=1 -FROM connectedhomeip/chip-cirque-device-base:${VERSION} - -COPY out/debug/chip-resource-monitoring-app /usr/bin/ -COPY entrypoint.sh / - -ENTRYPOINT ["/entrypoint.sh", "server"] diff --git a/examples/resource-monitoring-app/linux/README.md b/examples/resource-monitoring-app/linux/README.md deleted file mode 100644 index ae025e1be261dc..00000000000000 --- a/examples/resource-monitoring-app/linux/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# CHIP Linux Resource Monitoring Example - -This is a example app showing the use of the resource monitoring clusters (HEPA -Filter Monitoring and Activated Carbon Filter Monitoring). - -## Building - -The application could be build in the same manner as `all-clusters-app`: - -``` -? scripts/examples/gn_build_example.sh examples/resource-monitoring-app/linux out/resource-monitoring-app -``` diff --git a/examples/resource-monitoring-app/linux/args.gni b/examples/resource-monitoring-app/linux/args.gni deleted file mode 100644 index 22c26955822720..00000000000000 --- a/examples/resource-monitoring-app/linux/args.gni +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2020 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# CHIPProjectConfig.h - -import("//build_overrides/chip.gni") - -import("${chip_root}/config/standalone/args.gni") - -chip_device_project_config_include = "" -chip_project_config_include = "" -chip_system_project_config_include = "" - -chip_project_config_include_dirs = - [ "${chip_root}/examples/lighting-app/linux/include" ] -chip_project_config_include_dirs += [ "${chip_root}/config/standalone" ] diff --git a/examples/resource-monitoring-app/linux/build_overrides b/examples/resource-monitoring-app/linux/build_overrides deleted file mode 120000 index e578e73312ebd1..00000000000000 --- a/examples/resource-monitoring-app/linux/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides \ No newline at end of file diff --git a/examples/resource-monitoring-app/linux/entrypoint.sh b/examples/resource-monitoring-app/linux/entrypoint.sh deleted file mode 100755 index 0fc9527c0cfb6d..00000000000000 --- a/examples/resource-monitoring-app/linux/entrypoint.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -service dbus start -sleep 1 -service avahi-daemon start -/usr/sbin/otbr-agent -I wpan0 spinel+hdlc+uart:///dev/ttyUSB0 & -sleep 1 -ot-ctl panid 0x1234 -ot-ctl ifconfig up -ot-ctl thread start - -chip-resource-monitoring-app --thread diff --git a/examples/resource-monitoring-app/linux/include/CHIPProjectAppConfig.h b/examples/resource-monitoring-app/linux/include/CHIPProjectAppConfig.h deleted file mode 100644 index 94b3c4dc2a79d5..00000000000000 --- a/examples/resource-monitoring-app/linux/include/CHIPProjectAppConfig.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - * Copyright (c) 2020 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file - * Example project configuration file for CHIP. - * - * This is a place to put application or project-specific overrides - * to the default configuration values for general CHIP features. - * - */ - -#pragma once - -// include the CHIPProjectConfig from config/standalone -#include - -#define CHIP_DEVICE_CONFIG_DEVICE_TYPE 45 // 0x002D = 45 == Air Purifer - -#define CHIP_DEVICE_CONFIG_DEVICE_NAME "Test Resource Monitoring Device" diff --git a/examples/resource-monitoring-app/linux/src/main.cpp b/examples/resource-monitoring-app/linux/src/main.cpp deleted file mode 100644 index b6059739ced19f..00000000000000 --- a/examples/resource-monitoring-app/linux/src/main.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * Copyright (c) 2020 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include -#include - -using namespace chip; -using namespace chip::app; -using namespace chip::app::Clusters; -using namespace chip::app::Clusters::ResourceMonitoring; - -constexpr std::bitset<4> gHepaFilterFeatureMap{ static_cast(Feature::kCondition) | - static_cast(Feature::kWarning) | - static_cast(Feature::kReplacementProductList) }; -constexpr std::bitset<4> gActivatedCarbonFeatureMap{ static_cast(Feature::kCondition) | - static_cast(Feature::kWarning) | - static_cast(Feature::kReplacementProductList) }; - -static HepaFilterMonitoringDelegate gHepaFilterDelegate; -static ResourceMonitoring::Instance gHepaFilterInstance(&gHepaFilterDelegate, 0x1, HepaFilterMonitoring::Id, - static_cast(gHepaFilterFeatureMap.to_ulong()), - Clusters::ResourceMonitoring::DegradationDirectionEnum::kDown, true); - -static ActivatedCarbonFilterMonitoringDelegate gActivatedCarbonFilterDelegate; -static ResourceMonitoring::Instance gActivatedCarbonFilterInstance(&gActivatedCarbonFilterDelegate, 0x1, - ActivatedCarbonFilterMonitoring::Id, - static_cast(gActivatedCarbonFeatureMap.to_ulong()), - Clusters::ResourceMonitoring::DegradationDirectionEnum::kDown, - true); - -void ApplicationInit() -{ - gHepaFilterInstance.Init(); - gActivatedCarbonFilterInstance.Init(); -} - -void ApplicationShutdown() {} - -int main(int argc, char * argv[]) -{ - if (ChipLinuxAppInit(argc, argv) != 0) - { - return -1; - } - - ChipLinuxAppMainLoop(); - - return 0; -} diff --git a/examples/resource-monitoring-app/linux/third_party/connectedhomeip b/examples/resource-monitoring-app/linux/third_party/connectedhomeip deleted file mode 120000 index 11a54ed360106c..00000000000000 --- a/examples/resource-monitoring-app/linux/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../../ \ No newline at end of file diff --git a/examples/resource-monitoring-app/resource-monitoring-common/BUILD.gn b/examples/resource-monitoring-app/resource-monitoring-common/BUILD.gn deleted file mode 100644 index 0d33513378e9c7..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/BUILD.gn +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 2020 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import("//build_overrides/chip.gni") -import("${chip_root}/src/app/chip_data_model.gni") - -config("config") { - include_dirs = [ "include" ] -} - -source_set("delegates") { - public_configs = [ ":config" ] -} - -chip_data_model("resource-monitoring-common") { - zap_file = "resource-monitoring-app.zap" - - zap_pregenerated_dir = - "${chip_root}/zzz_generated/resource-monitoring-app/zap-generated" - is_server = true -} diff --git a/examples/resource-monitoring-app/resource-monitoring-common/include/ImmutableReplacementProductListManager.h b/examples/resource-monitoring-app/resource-monitoring-common/include/ImmutableReplacementProductListManager.h deleted file mode 100644 index 2dcbff41372866..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/include/ImmutableReplacementProductListManager.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include -#include -#include - -namespace chip { -namespace app { -namespace Clusters { -namespace ResourceMonitoring { - -/** - * This implementation returns an immutable list of replacement products. - * It holds ReplacementProductListManager::kReplacementProductListMaxSize products in the list. - */ - -class ImmutableReplacementProductListManager : public ReplacementProductListManager -{ -public: - CHIP_ERROR Next(ReplacementProductStruct & item) override; -}; - -} // namespace ResourceMonitoring -} // namespace Clusters -} // namespace app -} // namespace chip diff --git a/examples/resource-monitoring-app/resource-monitoring-common/include/StaticReplacementProductListManager.h b/examples/resource-monitoring-app/resource-monitoring-common/include/StaticReplacementProductListManager.h deleted file mode 100644 index 26601a235fcb1d..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/include/StaticReplacementProductListManager.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include -#include -#include - -namespace chip { -namespace app { -namespace Clusters { -namespace ResourceMonitoring { - -/** - * This implementation statically defines the options. - */ - -class StaticReplacementProductListManager : public ReplacementProductListManager -{ -public: - CHIP_ERROR Next(ReplacementProductStruct & item) override; - - ~StaticReplacementProductListManager() {} - StaticReplacementProductListManager(ReplacementProductStruct * aReplacementProductsList, uint8_t aReplacementProductListSize) - { - mReplacementProductsList = aReplacementProductsList; - mReplacementProductListSize = aReplacementProductListSize; - } - -private: - ReplacementProductStruct * mReplacementProductsList; - uint8_t mReplacementProductListSize; -}; - -} // namespace ResourceMonitoring -} // namespace Clusters -} // namespace app -} // namespace chip diff --git a/examples/resource-monitoring-app/resource-monitoring-common/include/delegates/ActivatedCarbonFilterMonitoring.h b/examples/resource-monitoring-app/resource-monitoring-common/include/delegates/ActivatedCarbonFilterMonitoring.h deleted file mode 100644 index 9b064f8526906e..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/include/delegates/ActivatedCarbonFilterMonitoring.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace chip { -namespace app { -namespace Clusters { - -namespace ResourceMonitoring { - -/// This is an application level delegate to handle ActivatedCarbonFilterMonitoringDelegate commands according to the specific -/// business logic. -class ActivatedCarbonFilterMonitoringDelegate : public ResourceMonitoring::Delegate -{ -private: - CHIP_ERROR Init() override; - chip::Protocols::InteractionModel::Status PreResetCondition() override; - chip::Protocols::InteractionModel::Status PostResetCondition() override; - -public: - ~ActivatedCarbonFilterMonitoringDelegate() override = default; -}; - -} // namespace ResourceMonitoring -} // namespace Clusters -} // namespace app -} // namespace chip diff --git a/examples/resource-monitoring-app/resource-monitoring-common/include/delegates/HepaFilterMonitoring.h b/examples/resource-monitoring-app/resource-monitoring-common/include/delegates/HepaFilterMonitoring.h deleted file mode 100644 index ea7b4f76da973e..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/include/delegates/HepaFilterMonitoring.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace chip { -namespace app { -namespace Clusters { - -namespace ResourceMonitoring { - -/// This is an application level delegate to handle HepaFilterMonitoringDelegate commands according to the specific business logic. -class HepaFilterMonitoringDelegate : public ResourceMonitoring::Delegate -{ -private: - CHIP_ERROR Init() override; - chip::Protocols::InteractionModel::Status PreResetCondition() override; - chip::Protocols::InteractionModel::Status PostResetCondition() override; - -public: - ~HepaFilterMonitoringDelegate() override = default; -}; - -} // namespace ResourceMonitoring -} // namespace Clusters -} // namespace app -} // namespace chip diff --git a/examples/resource-monitoring-app/resource-monitoring-common/resource-monitoring-app.matter b/examples/resource-monitoring-app/resource-monitoring-common/resource-monitoring-app.matter deleted file mode 100644 index b5f769892d1dbe..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/resource-monitoring-app.matter +++ /dev/null @@ -1,2129 +0,0 @@ -// This IDL was generated automatically by ZAP. -// It is for view/code review purposes only. - -/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ -server cluster Identify = 3 { - enum EffectIdentifierEnum : enum8 { - kBlink = 0; - kBreathe = 1; - kOkay = 2; - kChannelChange = 11; - kFinishEffect = 254; - kStopEffect = 255; - } - - enum EffectVariantEnum : enum8 { - kDefault = 0; - } - - enum IdentifyTypeEnum : enum8 { - kNone = 0; - kLightOutput = 1; - kVisibleIndicator = 2; - kAudibleBeep = 3; - kDisplay = 4; - kActuator = 5; - } - - attribute int16u identifyTime = 0; - readonly attribute IdentifyTypeEnum identifyType = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct IdentifyRequest { - int16u identifyTime = 0; - } - - request struct TriggerEffectRequest { - EffectIdentifierEnum effectIdentifier = 0; - EffectVariantEnum effectVariant = 1; - } - - command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; - command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; -} - -/** Attributes and commands for group configuration and manipulation. */ -server cluster Groups = 4 { - bitmap Feature : bitmap32 { - kGroupNames = 0x1; - } - - bitmap NameSupportBitmap : bitmap8 { - kGroupNames = 0x80; - } - - readonly attribute NameSupportBitmap nameSupport = 0; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct AddGroupRequest { - group_id groupID = 0; - char_string<16> groupName = 1; - } - - request struct ViewGroupRequest { - group_id groupID = 0; - } - - request struct GetGroupMembershipRequest { - group_id groupList[] = 0; - } - - request struct RemoveGroupRequest { - group_id groupID = 0; - } - - request struct AddGroupIfIdentifyingRequest { - group_id groupID = 0; - char_string<16> groupName = 1; - } - - response struct AddGroupResponse = 0 { - enum8 status = 0; - group_id groupID = 1; - } - - response struct ViewGroupResponse = 1 { - enum8 status = 0; - group_id groupID = 1; - char_string<16> groupName = 2; - } - - response struct GetGroupMembershipResponse = 2 { - nullable int8u capacity = 0; - group_id groupList[] = 1; - } - - response struct RemoveGroupResponse = 3 { - enum8 status = 0; - group_id groupID = 1; - } - - fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; -} - -/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ -server cluster Descriptor = 29 { - bitmap Feature : bitmap32 { - kTagList = 0x1; - } - - struct DeviceTypeStruct { - devtype_id deviceType = 0; - int16u revision = 1; - } - - struct SemanticTagStruct { - nullable vendor_id mfgCode = 0; - enum8 namespaceID = 1; - enum8 tag = 2; - optional nullable char_string label = 3; - } - - readonly attribute DeviceTypeStruct deviceTypeList[] = 0; - readonly attribute cluster_id serverList[] = 1; - readonly attribute cluster_id clientList[] = 2; - readonly attribute endpoint_no partsList[] = 3; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** The Access Control Cluster exposes a data model view of a - Node's Access Control List (ACL), which codifies the rules used to manage - and enforce Access Control for the Node's endpoints and their associated - cluster instances. */ -server cluster AccessControl = 31 { - enum AccessControlEntryAuthModeEnum : enum8 { - kPASE = 1; - kCASE = 2; - kGroup = 3; - } - - enum AccessControlEntryPrivilegeEnum : enum8 { - kView = 1; - kProxyView = 2; - kOperate = 3; - kManage = 4; - kAdminister = 5; - } - - enum ChangeTypeEnum : enum8 { - kChanged = 0; - kAdded = 1; - kRemoved = 2; - } - - struct AccessControlTargetStruct { - nullable cluster_id cluster = 0; - nullable endpoint_no endpoint = 1; - nullable devtype_id deviceType = 2; - } - - fabric_scoped struct AccessControlEntryStruct { - fabric_sensitive AccessControlEntryPrivilegeEnum privilege = 1; - fabric_sensitive AccessControlEntryAuthModeEnum authMode = 2; - nullable fabric_sensitive int64u subjects[] = 3; - nullable fabric_sensitive AccessControlTargetStruct targets[] = 4; - fabric_idx fabricIndex = 254; - } - - fabric_scoped struct AccessControlExtensionStruct { - fabric_sensitive octet_string<128> data = 1; - fabric_idx fabricIndex = 254; - } - - fabric_sensitive info event access(read: administer) AccessControlEntryChanged = 0 { - nullable node_id adminNodeID = 1; - nullable int16u adminPasscodeID = 2; - ChangeTypeEnum changeType = 3; - nullable AccessControlEntryStruct latestValue = 4; - fabric_idx fabricIndex = 254; - } - - fabric_sensitive info event access(read: administer) AccessControlExtensionChanged = 1 { - nullable node_id adminNodeID = 1; - nullable int16u adminPasscodeID = 2; - ChangeTypeEnum changeType = 3; - nullable AccessControlExtensionStruct latestValue = 4; - fabric_idx fabricIndex = 254; - } - - attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; - attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1; - readonly attribute int16u subjectsPerAccessControlEntry = 2; - readonly attribute int16u targetsPerAccessControlEntry = 3; - readonly attribute int16u accessControlEntriesPerFabric = 4; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** This cluster provides attributes and events for determining basic information about Nodes, which supports both - Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, - which apply to the whole Node. Also allows setting user device information such as location. */ -server cluster BasicInformation = 40 { - enum ColorEnum : enum8 { - kBlack = 0; - kNavy = 1; - kGreen = 2; - kTeal = 3; - kMaroon = 4; - kPurple = 5; - kOlive = 6; - kGray = 7; - kBlue = 8; - kLime = 9; - kAqua = 10; - kRed = 11; - kFuchsia = 12; - kYellow = 13; - kWhite = 14; - kNickel = 15; - kChrome = 16; - kBrass = 17; - kCopper = 18; - kSilver = 19; - kGold = 20; - } - - enum ProductFinishEnum : enum8 { - kOther = 0; - kMatte = 1; - kSatin = 2; - kPolished = 3; - kRugged = 4; - kFabric = 5; - } - - struct CapabilityMinimaStruct { - int16u caseSessionsPerFabric = 0; - int16u subscriptionsPerFabric = 1; - } - - struct ProductAppearanceStruct { - ProductFinishEnum finish = 0; - nullable ColorEnum primaryColor = 1; - } - - critical event StartUp = 0 { - int32u softwareVersion = 0; - } - - critical event ShutDown = 1 { - } - - info event Leave = 2 { - fabric_idx fabricIndex = 0; - } - - info event ReachableChanged = 3 { - boolean reachableNewValue = 0; - } - - readonly attribute int16u dataModelRevision = 0; - readonly attribute char_string<32> vendorName = 1; - readonly attribute vendor_id vendorID = 2; - readonly attribute char_string<32> productName = 3; - readonly attribute int16u productID = 4; - attribute access(write: manage) char_string<32> nodeLabel = 5; - attribute access(write: administer) char_string<2> location = 6; - readonly attribute int16u hardwareVersion = 7; - readonly attribute char_string<64> hardwareVersionString = 8; - readonly attribute int32u softwareVersion = 9; - readonly attribute char_string<64> softwareVersionString = 10; - readonly attribute char_string<16> manufacturingDate = 11; - readonly attribute char_string<32> partNumber = 12; - readonly attribute long_char_string<256> productURL = 13; - readonly attribute char_string<64> productLabel = 14; - readonly attribute char_string<32> serialNumber = 15; - attribute access(write: manage) boolean localConfigDisabled = 16; - readonly attribute char_string<32> uniqueID = 18; - readonly attribute CapabilityMinimaStruct capabilityMinima = 19; - readonly attribute int32u specificationVersion = 21; - readonly attribute int16u maxPathsPerInvoke = 22; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Provides an interface for providing OTA software updates */ -client cluster OtaSoftwareUpdateProvider = 41 { - enum ApplyUpdateActionEnum : enum8 { - kProceed = 0; - kAwaitNextAction = 1; - kDiscontinue = 2; - } - - enum DownloadProtocolEnum : enum8 { - kBDXSynchronous = 0; - kBDXAsynchronous = 1; - kHTTPS = 2; - kVendorSpecific = 3; - } - - enum StatusEnum : enum8 { - kUpdateAvailable = 0; - kBusy = 1; - kNotAvailable = 2; - kDownloadProtocolNotSupported = 3; - } - - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct QueryImageRequest { - vendor_id vendorID = 0; - int16u productID = 1; - int32u softwareVersion = 2; - DownloadProtocolEnum protocolsSupported[] = 3; - optional int16u hardwareVersion = 4; - optional char_string<2> location = 5; - optional boolean requestorCanConsent = 6; - optional octet_string<512> metadataForProvider = 7; - } - - response struct QueryImageResponse = 1 { - StatusEnum status = 0; - optional int32u delayedActionTime = 1; - optional char_string<256> imageURI = 2; - optional int32u softwareVersion = 3; - optional char_string<64> softwareVersionString = 4; - optional octet_string<32> updateToken = 5; - optional boolean userConsentNeeded = 6; - optional octet_string<512> metadataForRequestor = 7; - } - - request struct ApplyUpdateRequestRequest { - octet_string<32> updateToken = 0; - int32u newVersion = 1; - } - - response struct ApplyUpdateResponse = 3 { - ApplyUpdateActionEnum action = 0; - int32u delayedActionTime = 1; - } - - request struct NotifyUpdateAppliedRequest { - octet_string<32> updateToken = 0; - int32u softwareVersion = 1; - } - - /** Determine availability of a new Software Image */ - command QueryImage(QueryImageRequest): QueryImageResponse = 0; - /** Determine next action to take for a downloaded Software Image */ - command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; - /** Notify OTA Provider that an update was applied */ - command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; -} - -/** Provides an interface for downloading and applying OTA software updates */ -server cluster OtaSoftwareUpdateRequestor = 42 { - enum AnnouncementReasonEnum : enum8 { - kSimpleAnnouncement = 0; - kUpdateAvailable = 1; - kUrgentUpdateAvailable = 2; - } - - enum ChangeReasonEnum : enum8 { - kUnknown = 0; - kSuccess = 1; - kFailure = 2; - kTimeOut = 3; - kDelayByProvider = 4; - } - - enum UpdateStateEnum : enum8 { - kUnknown = 0; - kIdle = 1; - kQuerying = 2; - kDelayedOnQuery = 3; - kDownloading = 4; - kApplying = 5; - kDelayedOnApply = 6; - kRollingBack = 7; - kDelayedOnUserConsent = 8; - } - - fabric_scoped struct ProviderLocation { - node_id providerNodeID = 1; - endpoint_no endpoint = 2; - fabric_idx fabricIndex = 254; - } - - info event StateTransition = 0 { - UpdateStateEnum previousState = 0; - UpdateStateEnum newState = 1; - ChangeReasonEnum reason = 2; - nullable int32u targetSoftwareVersion = 3; - } - - critical event VersionApplied = 1 { - int32u softwareVersion = 0; - int16u productID = 1; - } - - info event DownloadError = 2 { - int32u softwareVersion = 0; - int64u bytesDownloaded = 1; - nullable int8u progressPercent = 2; - nullable int64s platformCode = 3; - } - - attribute ProviderLocation defaultOTAProviders[] = 0; - readonly attribute boolean updatePossible = 1; - readonly attribute UpdateStateEnum updateState = 2; - readonly attribute nullable int8u updateStateProgress = 3; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct AnnounceOTAProviderRequest { - node_id providerNodeID = 0; - vendor_id vendorID = 1; - AnnouncementReasonEnum announcementReason = 2; - optional octet_string<512> metadataForNode = 3; - endpoint_no endpoint = 4; - } - - command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -server cluster LocalizationConfiguration = 43 { - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -server cluster TimeFormatLocalization = 44 { - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) CalendarTypeEnum activeCalendarType = 1; - readonly attribute CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** This cluster is used to manage global aspects of the Commissioning flow. */ -server cluster GeneralCommissioning = 48 { - enum CommissioningErrorEnum : enum8 { - kOK = 0; - kValueOutsideRange = 1; - kInvalidAuthentication = 2; - kNoFailSafe = 3; - kBusyWithOtherAdmin = 4; - } - - enum RegulatoryLocationTypeEnum : enum8 { - kIndoor = 0; - kOutdoor = 1; - kIndoorOutdoor = 2; - } - - struct BasicCommissioningInfo { - int16u failSafeExpiryLengthSeconds = 0; - int16u maxCumulativeFailsafeSeconds = 1; - } - - attribute access(write: administer) int64u breadcrumb = 0; - readonly attribute BasicCommissioningInfo basicCommissioningInfo = 1; - readonly attribute RegulatoryLocationTypeEnum regulatoryConfig = 2; - readonly attribute RegulatoryLocationTypeEnum locationCapability = 3; - readonly attribute boolean supportsConcurrentConnection = 4; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct ArmFailSafeRequest { - int16u expiryLengthSeconds = 0; - int64u breadcrumb = 1; - } - - request struct SetRegulatoryConfigRequest { - RegulatoryLocationTypeEnum newRegulatoryConfig = 0; - char_string<2> countryCode = 1; - int64u breadcrumb = 2; - } - - response struct ArmFailSafeResponse = 1 { - CommissioningErrorEnum errorCode = 0; - char_string<128> debugText = 1; - } - - response struct SetRegulatoryConfigResponse = 3 { - CommissioningErrorEnum errorCode = 0; - char_string debugText = 1; - } - - response struct CommissioningCompleteResponse = 5 { - CommissioningErrorEnum errorCode = 0; - char_string debugText = 1; - } - - command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; - command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; -} - -/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ -server cluster NetworkCommissioning = 49 { - enum NetworkCommissioningStatusEnum : enum8 { - kSuccess = 0; - kOutOfRange = 1; - kBoundsExceeded = 2; - kNetworkIDNotFound = 3; - kDuplicateNetworkID = 4; - kNetworkNotFound = 5; - kRegulatoryError = 6; - kAuthFailure = 7; - kUnsupportedSecurity = 8; - kOtherConnectionFailure = 9; - kIPV6Failed = 10; - kIPBindFailed = 11; - kUnknownError = 12; - } - - enum WiFiBandEnum : enum8 { - k2G4 = 0; - k3G65 = 1; - k5G = 2; - k6G = 3; - k60G = 4; - k1G = 5; - } - - bitmap Feature : bitmap32 { - kWiFiNetworkInterface = 0x1; - kThreadNetworkInterface = 0x2; - kEthernetNetworkInterface = 0x4; - kPerDeviceCredentials = 0x8; - } - - bitmap ThreadCapabilitiesBitmap : bitmap16 { - kIsBorderRouterCapable = 0x1; - kIsRouterCapable = 0x2; - kIsSleepyEndDeviceCapable = 0x4; - kIsFullThreadDevice = 0x8; - kIsSynchronizedSleepyEndDeviceCapable = 0x10; - } - - bitmap WiFiSecurityBitmap : bitmap8 { - kUnencrypted = 0x1; - kWEP = 0x2; - kWPAPersonal = 0x4; - kWPA2Personal = 0x8; - kWPA3Personal = 0x10; - kWPA3MatterPDC = 0x20; - } - - struct NetworkInfoStruct { - octet_string<32> networkID = 0; - boolean connected = 1; - optional nullable octet_string<20> networkIdentifier = 2; - optional nullable octet_string<20> clientIdentifier = 3; - } - - struct ThreadInterfaceScanResultStruct { - int16u panId = 0; - int64u extendedPanId = 1; - char_string<16> networkName = 2; - int16u channel = 3; - int8u version = 4; - octet_string<8> extendedAddress = 5; - int8s rssi = 6; - int8u lqi = 7; - } - - struct WiFiInterfaceScanResultStruct { - WiFiSecurityBitmap security = 0; - octet_string<32> ssid = 1; - octet_string<6> bssid = 2; - int16u channel = 3; - WiFiBandEnum wiFiBand = 4; - int8s rssi = 5; - } - - readonly attribute access(read: administer) int8u maxNetworks = 0; - readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1; - readonly attribute int8u scanMaxTimeSeconds = 2; - readonly attribute int8u connectMaxTimeSeconds = 3; - attribute access(write: administer) boolean interfaceEnabled = 4; - readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5; - readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; - readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct ScanNetworksRequest { - optional nullable octet_string<32> ssid = 0; - optional int64u breadcrumb = 1; - } - - request struct AddOrUpdateWiFiNetworkRequest { - octet_string<32> ssid = 0; - octet_string<64> credentials = 1; - optional int64u breadcrumb = 2; - optional octet_string<140> networkIdentity = 3; - optional octet_string<20> clientIdentifier = 4; - optional octet_string<32> possessionNonce = 5; - } - - request struct AddOrUpdateThreadNetworkRequest { - octet_string<254> operationalDataset = 0; - optional int64u breadcrumb = 1; - } - - request struct RemoveNetworkRequest { - octet_string<32> networkID = 0; - optional int64u breadcrumb = 1; - } - - request struct ConnectNetworkRequest { - octet_string<32> networkID = 0; - optional int64u breadcrumb = 1; - } - - request struct ReorderNetworkRequest { - octet_string<32> networkID = 0; - int8u networkIndex = 1; - optional int64u breadcrumb = 2; - } - - response struct ScanNetworksResponse = 1 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; - optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; - } - - response struct NetworkConfigResponse = 5 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string<512> debugText = 1; - optional int8u networkIndex = 2; - optional octet_string<140> clientIdentity = 3; - optional octet_string<64> possessionSignature = 4; - } - - response struct ConnectNetworkResponse = 7 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - nullable int32s errorValue = 2; - } - - command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; - command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; - command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; - command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; - command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; - command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; -} - -/** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ -server cluster DiagnosticLogs = 50 { - enum IntentEnum : enum8 { - kEndUserSupport = 0; - kNetworkDiag = 1; - kCrashLogs = 2; - } - - enum StatusEnum : enum8 { - kSuccess = 0; - kExhausted = 1; - kNoLogs = 2; - kBusy = 3; - kDenied = 4; - } - - enum TransferProtocolEnum : enum8 { - kResponsePayload = 0; - kBDX = 1; - } - - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct RetrieveLogsRequestRequest { - IntentEnum intent = 0; - TransferProtocolEnum requestedProtocol = 1; - optional char_string<32> transferFileDesignator = 2; - } - - command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; -} - -/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster GeneralDiagnostics = 51 { - enum BootReasonEnum : enum8 { - kUnspecified = 0; - kPowerOnReboot = 1; - kBrownOutReset = 2; - kSoftwareWatchdogReset = 3; - kHardwareWatchdogReset = 4; - kSoftwareUpdateCompleted = 5; - kSoftwareReset = 6; - } - - enum HardwareFaultEnum : enum8 { - kUnspecified = 0; - kRadio = 1; - kSensor = 2; - kResettableOverTemp = 3; - kNonResettableOverTemp = 4; - kPowerSource = 5; - kVisualDisplayFault = 6; - kAudioOutputFault = 7; - kUserInterfaceFault = 8; - kNonVolatileMemoryError = 9; - kTamperDetected = 10; - } - - enum InterfaceTypeEnum : enum8 { - kUnspecified = 0; - kWiFi = 1; - kEthernet = 2; - kCellular = 3; - kThread = 4; - } - - enum NetworkFaultEnum : enum8 { - kUnspecified = 0; - kHardwareFailure = 1; - kNetworkJammed = 2; - kConnectionFailed = 3; - } - - enum RadioFaultEnum : enum8 { - kUnspecified = 0; - kWiFiFault = 1; - kCellularFault = 2; - kThreadFault = 3; - kNFCFault = 4; - kBLEFault = 5; - kEthernetFault = 6; - } - - struct NetworkInterface { - char_string<32> name = 0; - boolean isOperational = 1; - nullable boolean offPremiseServicesReachableIPv4 = 2; - nullable boolean offPremiseServicesReachableIPv6 = 3; - octet_string<8> hardwareAddress = 4; - octet_string IPv4Addresses[] = 5; - octet_string IPv6Addresses[] = 6; - InterfaceTypeEnum type = 7; - } - - critical event HardwareFaultChange = 0 { - HardwareFaultEnum current[] = 0; - HardwareFaultEnum previous[] = 1; - } - - critical event RadioFaultChange = 1 { - RadioFaultEnum current[] = 0; - RadioFaultEnum previous[] = 1; - } - - critical event NetworkFaultChange = 2 { - NetworkFaultEnum current[] = 0; - NetworkFaultEnum previous[] = 1; - } - - critical event BootReason = 3 { - BootReasonEnum bootReason = 0; - } - - readonly attribute NetworkInterface networkInterfaces[] = 0; - readonly attribute int16u rebootCount = 1; - readonly attribute int64u upTime = 2; - readonly attribute int32u totalOperationalHours = 3; - readonly attribute BootReasonEnum bootReason = 4; - readonly attribute HardwareFaultEnum activeHardwareFaults[] = 5; - readonly attribute RadioFaultEnum activeRadioFaults[] = 6; - readonly attribute NetworkFaultEnum activeNetworkFaults[] = 7; - readonly attribute boolean testEventTriggersEnabled = 8; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct TestEventTriggerRequest { - octet_string<16> enableKey = 0; - int64u eventTrigger = 1; - } - - response struct TimeSnapshotResponse = 2 { - systime_us systemTimeUs = 0; - nullable epoch_us UTCTimeUs = 1; - } - - command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; - command TimeSnapshot(): TimeSnapshotResponse = 1; -} - -/** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster SoftwareDiagnostics = 52 { - bitmap Feature : bitmap32 { - kWatermarks = 0x1; - } - - struct ThreadMetricsStruct { - int64u id = 0; - optional char_string<8> name = 1; - optional int32u stackFreeCurrent = 2; - optional int32u stackFreeMinimum = 3; - optional int32u stackSize = 4; - } - - info event SoftwareFault = 0 { - int64u id = 0; - optional char_string name = 1; - optional octet_string faultRecording = 2; - } - - readonly attribute ThreadMetricsStruct threadMetrics[] = 0; - readonly attribute int64u currentHeapFree = 1; - readonly attribute int64u currentHeapUsed = 2; - readonly attribute int64u currentHeapHighWatermark = 3; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - command access(invoke: manage) ResetWatermarks(): DefaultSuccess = 0; -} - -/** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ -server cluster ThreadNetworkDiagnostics = 53 { - enum ConnectionStatusEnum : enum8 { - kConnected = 0; - kNotConnected = 1; - } - - enum NetworkFaultEnum : enum8 { - kUnspecified = 0; - kLinkDown = 1; - kHardwareFailure = 2; - kNetworkJammed = 3; - } - - enum RoutingRoleEnum : enum8 { - kUnspecified = 0; - kUnassigned = 1; - kSleepyEndDevice = 2; - kEndDevice = 3; - kREED = 4; - kRouter = 5; - kLeader = 6; - } - - bitmap Feature : bitmap32 { - kPacketCounts = 0x1; - kErrorCounts = 0x2; - kMLECounts = 0x4; - kMACCounts = 0x8; - } - - struct NeighborTableStruct { - int64u extAddress = 0; - int32u age = 1; - int16u rloc16 = 2; - int32u linkFrameCounter = 3; - int32u mleFrameCounter = 4; - int8u lqi = 5; - nullable int8s averageRssi = 6; - nullable int8s lastRssi = 7; - int8u frameErrorRate = 8; - int8u messageErrorRate = 9; - boolean rxOnWhenIdle = 10; - boolean fullThreadDevice = 11; - boolean fullNetworkData = 12; - boolean isChild = 13; - } - - struct OperationalDatasetComponents { - boolean activeTimestampPresent = 0; - boolean pendingTimestampPresent = 1; - boolean masterKeyPresent = 2; - boolean networkNamePresent = 3; - boolean extendedPanIdPresent = 4; - boolean meshLocalPrefixPresent = 5; - boolean delayPresent = 6; - boolean panIdPresent = 7; - boolean channelPresent = 8; - boolean pskcPresent = 9; - boolean securityPolicyPresent = 10; - boolean channelMaskPresent = 11; - } - - struct RouteTableStruct { - int64u extAddress = 0; - int16u rloc16 = 1; - int8u routerId = 2; - int8u nextHop = 3; - int8u pathCost = 4; - int8u LQIIn = 5; - int8u LQIOut = 6; - int8u age = 7; - boolean allocated = 8; - boolean linkEstablished = 9; - } - - struct SecurityPolicy { - int16u rotationTime = 0; - int16u flags = 1; - } - - info event ConnectionStatus = 0 { - ConnectionStatusEnum connectionStatus = 0; - } - - info event NetworkFaultChange = 1 { - NetworkFaultEnum current[] = 0; - NetworkFaultEnum previous[] = 1; - } - - readonly attribute nullable int16u channel = 0; - readonly attribute nullable RoutingRoleEnum routingRole = 1; - readonly attribute nullable char_string<16> networkName = 2; - readonly attribute nullable int16u panId = 3; - readonly attribute nullable int64u extendedPanId = 4; - readonly attribute nullable octet_string<17> meshLocalPrefix = 5; - readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTableStruct neighborTable[] = 7; - readonly attribute RouteTableStruct routeTable[] = 8; - readonly attribute nullable int32u partitionId = 9; - readonly attribute nullable int16u weighting = 10; - readonly attribute nullable int16u dataVersion = 11; - readonly attribute nullable int16u stableDataVersion = 12; - readonly attribute nullable int8u leaderRouterId = 13; - readonly attribute int16u detachedRoleCount = 14; - readonly attribute int16u childRoleCount = 15; - readonly attribute int16u routerRoleCount = 16; - readonly attribute int16u leaderRoleCount = 17; - readonly attribute int16u attachAttemptCount = 18; - readonly attribute int16u partitionIdChangeCount = 19; - readonly attribute int16u betterPartitionAttachAttemptCount = 20; - readonly attribute int16u parentChangeCount = 21; - readonly attribute int32u txTotalCount = 22; - readonly attribute int32u txUnicastCount = 23; - readonly attribute int32u txBroadcastCount = 24; - readonly attribute int32u txAckRequestedCount = 25; - readonly attribute int32u txAckedCount = 26; - readonly attribute int32u txNoAckRequestedCount = 27; - readonly attribute int32u txDataCount = 28; - readonly attribute int32u txDataPollCount = 29; - readonly attribute int32u txBeaconCount = 30; - readonly attribute int32u txBeaconRequestCount = 31; - readonly attribute int32u txOtherCount = 32; - readonly attribute int32u txRetryCount = 33; - readonly attribute int32u txDirectMaxRetryExpiryCount = 34; - readonly attribute int32u txIndirectMaxRetryExpiryCount = 35; - readonly attribute int32u txErrCcaCount = 36; - readonly attribute int32u txErrAbortCount = 37; - readonly attribute int32u txErrBusyChannelCount = 38; - readonly attribute int32u rxTotalCount = 39; - readonly attribute int32u rxUnicastCount = 40; - readonly attribute int32u rxBroadcastCount = 41; - readonly attribute int32u rxDataCount = 42; - readonly attribute int32u rxDataPollCount = 43; - readonly attribute int32u rxBeaconCount = 44; - readonly attribute int32u rxBeaconRequestCount = 45; - readonly attribute int32u rxOtherCount = 46; - readonly attribute int32u rxAddressFilteredCount = 47; - readonly attribute int32u rxDestAddrFilteredCount = 48; - readonly attribute int32u rxDuplicatedCount = 49; - readonly attribute int32u rxErrNoFrameCount = 50; - readonly attribute int32u rxErrUnknownNeighborCount = 51; - readonly attribute int32u rxErrInvalidSrcAddrCount = 52; - readonly attribute int32u rxErrSecCount = 53; - readonly attribute int32u rxErrFcsCount = 54; - readonly attribute int32u rxErrOtherCount = 55; - readonly attribute nullable int64u activeTimestamp = 56; - readonly attribute nullable int64u pendingTimestamp = 57; - readonly attribute nullable int32u delay = 58; - readonly attribute nullable SecurityPolicy securityPolicy = 59; - readonly attribute nullable octet_string<4> channelPage0Mask = 60; - readonly attribute nullable OperationalDatasetComponents operationalDatasetComponents = 61; - readonly attribute NetworkFaultEnum activeNetworkFaultsList[] = 62; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; -} - -/** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster WiFiNetworkDiagnostics = 54 { - enum AssociationFailureCauseEnum : enum8 { - kUnknown = 0; - kAssociationFailed = 1; - kAuthenticationFailed = 2; - kSsidNotFound = 3; - } - - enum ConnectionStatusEnum : enum8 { - kConnected = 0; - kNotConnected = 1; - } - - enum SecurityTypeEnum : enum8 { - kUnspecified = 0; - kNone = 1; - kWEP = 2; - kWPA = 3; - kWPA2 = 4; - kWPA3 = 5; - } - - enum WiFiVersionEnum : enum8 { - kA = 0; - kB = 1; - kG = 2; - kN = 3; - kAc = 4; - kAx = 5; - kAh = 6; - } - - bitmap Feature : bitmap32 { - kPacketCounts = 0x1; - kErrorCounts = 0x2; - } - - info event Disconnection = 0 { - int16u reasonCode = 0; - } - - info event AssociationFailure = 1 { - AssociationFailureCauseEnum associationFailureCause = 0; - int16u status = 1; - } - - info event ConnectionStatus = 2 { - ConnectionStatusEnum connectionStatus = 0; - } - - readonly attribute nullable octet_string<6> bssid = 0; - readonly attribute nullable SecurityTypeEnum securityType = 1; - readonly attribute nullable WiFiVersionEnum wiFiVersion = 2; - readonly attribute nullable int16u channelNumber = 3; - readonly attribute nullable int8s rssi = 4; - readonly attribute nullable int32u beaconLostCount = 5; - readonly attribute nullable int32u beaconRxCount = 6; - readonly attribute nullable int32u packetMulticastRxCount = 7; - readonly attribute nullable int32u packetMulticastTxCount = 8; - readonly attribute nullable int32u packetUnicastRxCount = 9; - readonly attribute nullable int32u packetUnicastTxCount = 10; - readonly attribute nullable int64u currentMaxRate = 11; - readonly attribute nullable int64u overrunCount = 12; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - command ResetCounts(): DefaultSuccess = 0; -} - -/** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster EthernetNetworkDiagnostics = 55 { - enum PHYRateEnum : enum8 { - kRate10M = 0; - kRate100M = 1; - kRate1G = 2; - kRate25G = 3; - kRate5G = 4; - kRate10G = 5; - kRate40G = 6; - kRate100G = 7; - kRate200G = 8; - kRate400G = 9; - } - - bitmap Feature : bitmap32 { - kPacketCounts = 0x1; - kErrorCounts = 0x2; - } - - readonly attribute nullable PHYRateEnum PHYRate = 0; - readonly attribute nullable boolean fullDuplex = 1; - readonly attribute int64u packetRxCount = 2; - readonly attribute int64u packetTxCount = 3; - readonly attribute int64u txErrCount = 4; - readonly attribute int64u collisionCount = 5; - readonly attribute int64u overrunCount = 6; - readonly attribute nullable boolean carrierDetect = 7; - readonly attribute int64u timeSinceReset = 8; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; -} - -/** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. -Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. -Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ -server cluster Switch = 59 { - bitmap Feature : bitmap32 { - kLatchingSwitch = 0x1; - kMomentarySwitch = 0x2; - kMomentarySwitchRelease = 0x4; - kMomentarySwitchLongPress = 0x8; - kMomentarySwitchMultiPress = 0x10; - } - - info event SwitchLatched = 0 { - int8u newPosition = 0; - } - - info event InitialPress = 1 { - int8u newPosition = 0; - } - - info event LongPress = 2 { - int8u newPosition = 0; - } - - info event ShortRelease = 3 { - int8u previousPosition = 0; - } - - info event LongRelease = 4 { - int8u previousPosition = 0; - } - - info event MultiPressOngoing = 5 { - int8u newPosition = 0; - int8u currentNumberOfPressesCounted = 1; - } - - info event MultiPressComplete = 6 { - int8u previousPosition = 0; - int8u totalNumberOfPressesCounted = 1; - } - - readonly attribute int8u numberOfPositions = 0; - readonly attribute int8u currentPosition = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Commands to trigger a Node to allow a new Administrator to commission it. */ -server cluster AdministratorCommissioning = 60 { - enum CommissioningWindowStatusEnum : enum8 { - kWindowNotOpen = 0; - kEnhancedWindowOpen = 1; - kBasicWindowOpen = 2; - } - - enum StatusCode : enum8 { - kBusy = 2; - kPAKEParameterError = 3; - kWindowNotOpen = 4; - } - - bitmap Feature : bitmap32 { - kBasic = 0x1; - } - - readonly attribute CommissioningWindowStatusEnum windowStatus = 0; - readonly attribute nullable fabric_idx adminFabricIndex = 1; - readonly attribute nullable vendor_id adminVendorId = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct OpenCommissioningWindowRequest { - int16u commissioningTimeout = 0; - octet_string PAKEPasscodeVerifier = 1; - int16u discriminator = 2; - int32u iterations = 3; - octet_string<32> salt = 4; - } - - request struct OpenBasicCommissioningWindowRequest { - int16u commissioningTimeout = 0; - } - - timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0; - timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1; - timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; -} - -/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ -server cluster OperationalCredentials = 62 { - enum CertificateChainTypeEnum : enum8 { - kDACCertificate = 1; - kPAICertificate = 2; - } - - enum NodeOperationalCertStatusEnum : enum8 { - kOK = 0; - kInvalidPublicKey = 1; - kInvalidNodeOpId = 2; - kInvalidNOC = 3; - kMissingCsr = 4; - kTableFull = 5; - kInvalidAdminSubject = 6; - kFabricConflict = 9; - kLabelConflict = 10; - kInvalidFabricIndex = 11; - } - - fabric_scoped struct FabricDescriptorStruct { - octet_string<65> rootPublicKey = 1; - vendor_id vendorID = 2; - fabric_id fabricID = 3; - node_id nodeID = 4; - char_string<32> label = 5; - fabric_idx fabricIndex = 254; - } - - fabric_scoped struct NOCStruct { - fabric_sensitive octet_string noc = 1; - nullable fabric_sensitive octet_string icac = 2; - fabric_idx fabricIndex = 254; - } - - readonly attribute access(read: administer) NOCStruct NOCs[] = 0; - readonly attribute FabricDescriptorStruct fabrics[] = 1; - readonly attribute int8u supportedFabrics = 2; - readonly attribute int8u commissionedFabrics = 3; - readonly attribute octet_string trustedRootCertificates[] = 4; - readonly attribute int8u currentFabricIndex = 5; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct AttestationRequestRequest { - octet_string<32> attestationNonce = 0; - } - - request struct CertificateChainRequestRequest { - CertificateChainTypeEnum certificateType = 0; - } - - request struct CSRRequestRequest { - octet_string<32> CSRNonce = 0; - optional boolean isForUpdateNOC = 1; - } - - request struct AddNOCRequest { - octet_string<400> NOCValue = 0; - optional octet_string<400> ICACValue = 1; - octet_string<16> IPKValue = 2; - int64u caseAdminSubject = 3; - vendor_id adminVendorId = 4; - } - - request struct UpdateNOCRequest { - octet_string NOCValue = 0; - optional octet_string ICACValue = 1; - } - - request struct UpdateFabricLabelRequest { - char_string<32> label = 0; - } - - request struct RemoveFabricRequest { - fabric_idx fabricIndex = 0; - } - - request struct AddTrustedRootCertificateRequest { - octet_string rootCACertificate = 0; - } - - response struct AttestationResponse = 1 { - octet_string<900> attestationElements = 0; - octet_string<64> attestationSignature = 1; - } - - response struct CertificateChainResponse = 3 { - octet_string<600> certificate = 0; - } - - response struct CSRResponse = 5 { - octet_string NOCSRElements = 0; - octet_string attestationSignature = 1; - } - - response struct NOCResponse = 8 { - NodeOperationalCertStatusEnum statusCode = 0; - optional fabric_idx fabricIndex = 1; - optional char_string<128> debugText = 2; - } - - command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; - command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; - command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; - command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; - command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; - command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; -} - -/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ -server cluster GroupKeyManagement = 63 { - enum GroupKeySecurityPolicyEnum : enum8 { - kTrustFirst = 0; - kCacheAndSync = 1; - } - - bitmap Feature : bitmap32 { - kCacheAndSync = 0x1; - } - - fabric_scoped struct GroupInfoMapStruct { - group_id groupId = 1; - endpoint_no endpoints[] = 2; - optional char_string<16> groupName = 3; - fabric_idx fabricIndex = 254; - } - - fabric_scoped struct GroupKeyMapStruct { - group_id groupId = 1; - int16u groupKeySetID = 2; - fabric_idx fabricIndex = 254; - } - - struct GroupKeySetStruct { - int16u groupKeySetID = 0; - GroupKeySecurityPolicyEnum groupKeySecurityPolicy = 1; - nullable octet_string<16> epochKey0 = 2; - nullable epoch_us epochStartTime0 = 3; - nullable octet_string<16> epochKey1 = 4; - nullable epoch_us epochStartTime1 = 5; - nullable octet_string<16> epochKey2 = 6; - nullable epoch_us epochStartTime2 = 7; - } - - attribute access(write: manage) GroupKeyMapStruct groupKeyMap[] = 0; - readonly attribute GroupInfoMapStruct groupTable[] = 1; - readonly attribute int16u maxGroupsPerFabric = 2; - readonly attribute int16u maxGroupKeysPerFabric = 3; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct KeySetWriteRequest { - GroupKeySetStruct groupKeySet = 0; - } - - request struct KeySetReadRequest { - int16u groupKeySetID = 0; - } - - request struct KeySetRemoveRequest { - int16u groupKeySetID = 0; - } - - response struct KeySetReadResponse = 2 { - GroupKeySetStruct groupKeySet = 0; - } - - response struct KeySetReadAllIndicesResponse = 5 { - int16u groupKeySetIDs[] = 0; - } - - fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4; -} - -/** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only -labels. */ -server cluster FixedLabel = 64 { - struct LabelStruct { - char_string<16> label = 0; - char_string<16> value = 1; - } - - readonly attribute LabelStruct labelList[] = 0; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ -server cluster UserLabel = 65 { - struct LabelStruct { - char_string<16> label = 0; - char_string<16> value = 1; - } - - attribute access(write: manage) LabelStruct labelList[] = 0; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Attributes and commands for monitoring HEPA filters in a device */ -server cluster HepaFilterMonitoring = 113 { - enum ChangeIndicationEnum : enum8 { - kOK = 0; - kWarning = 1; - kCritical = 2; - } - - enum DegradationDirectionEnum : enum8 { - kUp = 0; - kDown = 1; - } - - enum ProductIdentifierTypeEnum : enum8 { - kUPC = 0; - kGTIN8 = 1; - kEAN = 2; - kGTIN14 = 3; - kOEM = 4; - } - - bitmap Feature : bitmap32 { - kCondition = 0x1; - kWarning = 0x2; - kReplacementProductList = 0x4; - } - - struct ReplacementProductStruct { - ProductIdentifierTypeEnum productIdentifierType = 0; - char_string<20> productIdentifierValue = 1; - } - - readonly attribute percent condition = 0; - readonly attribute DegradationDirectionEnum degradationDirection = 1; - readonly attribute ChangeIndicationEnum changeIndication = 2; - readonly attribute boolean inPlaceIndicator = 3; - attribute nullable epoch_s lastChangedTime = 4; - readonly attribute ReplacementProductStruct replacementProductList[] = 5; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - command ResetCondition(): DefaultSuccess = 0; -} - -/** Attributes and commands for monitoring activated carbon filters in a device */ -server cluster ActivatedCarbonFilterMonitoring = 114 { - enum ChangeIndicationEnum : enum8 { - kOK = 0; - kWarning = 1; - kCritical = 2; - } - - enum DegradationDirectionEnum : enum8 { - kUp = 0; - kDown = 1; - } - - enum ProductIdentifierTypeEnum : enum8 { - kUPC = 0; - kGTIN8 = 1; - kEAN = 2; - kGTIN14 = 3; - kOEM = 4; - } - - bitmap Feature : bitmap32 { - kCondition = 0x1; - kWarning = 0x2; - kReplacementProductList = 0x4; - } - - struct ReplacementProductStruct { - ProductIdentifierTypeEnum productIdentifierType = 0; - char_string<20> productIdentifierValue = 1; - } - - readonly attribute percent condition = 0; - readonly attribute DegradationDirectionEnum degradationDirection = 1; - readonly attribute ChangeIndicationEnum changeIndication = 2; - readonly attribute boolean inPlaceIndicator = 3; - attribute nullable epoch_s lastChangedTime = 4; - readonly attribute ReplacementProductStruct replacementProductList[] = 5; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - command ResetCondition(): DefaultSuccess = 0; -} - -/** An interface for controlling a fan in a heating/cooling system. */ -provisional server cluster FanControl = 514 { - enum AirflowDirectionEnum : enum8 { - kForward = 0; - kReverse = 1; - } - - enum FanModeEnum : enum8 { - kOff = 0; - kLow = 1; - kMedium = 2; - kHigh = 3; - kOn = 4; - kAuto = 5; - kSmart = 6; - } - - enum FanModeSequenceEnum : enum8 { - kOffLowMedHigh = 0; - kOffLowHigh = 1; - kOffLowMedHighAuto = 2; - kOffLowHighAuto = 3; - kOffHighAuto = 4; - kOffHigh = 5; - } - - enum StepDirectionEnum : enum8 { - kIncrease = 0; - kDecrease = 1; - } - - bitmap Feature : bitmap32 { - kMultiSpeed = 0x1; - kAuto = 0x2; - kRocking = 0x4; - kWind = 0x8; - kStep = 0x10; - kAirflowDirection = 0x20; - } - - bitmap RockBitmap : bitmap8 { - kRockLeftRight = 0x1; - kRockUpDown = 0x2; - kRockRound = 0x4; - } - - bitmap WindBitmap : bitmap8 { - kSleepWind = 0x1; - kNaturalWind = 0x2; - } - - attribute FanModeEnum fanMode = 0; - readonly attribute FanModeSequenceEnum fanModeSequence = 1; - attribute nullable percent percentSetting = 2; - readonly attribute percent percentCurrent = 3; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -endpoint 0 { - device type ma_rootdevice = 22, version 1; - - binding cluster OtaSoftwareUpdateProvider; - - server cluster Groups { - ram attribute nameSupport; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 4; - - handle command AddGroup; - handle command AddGroupResponse; - handle command ViewGroup; - handle command ViewGroupResponse; - handle command GetGroupMembership; - handle command GetGroupMembershipResponse; - handle command RemoveGroup; - handle command RemoveGroupResponse; - handle command RemoveAllGroups; - handle command AddGroupIfIdentifying; - } - - server cluster Descriptor { - callback attribute deviceTypeList; - callback attribute serverList; - callback attribute clientList; - callback attribute partsList; - ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; - } - - server cluster AccessControl { - emits event AccessControlEntryChanged; - emits event AccessControlExtensionChanged; - callback attribute acl; - callback attribute extension; - callback attribute subjectsPerAccessControlEntry default = 4; - callback attribute targetsPerAccessControlEntry default = 3; - callback attribute accessControlEntriesPerFabric default = 4; - callback attribute attributeList; - ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; - } - - server cluster BasicInformation { - emits event StartUp; - emits event ShutDown; - emits event Leave; - callback attribute dataModelRevision default = 10; - callback attribute vendorName; - callback attribute vendorID; - callback attribute productName; - callback attribute productID; - persist attribute nodeLabel; - callback attribute location default = "XX"; - callback attribute hardwareVersion default = 0; - callback attribute hardwareVersionString; - callback attribute softwareVersion default = 0; - callback attribute softwareVersionString; - callback attribute manufacturingDate default = "20210614123456ZZ"; - callback attribute partNumber; - callback attribute productURL; - callback attribute productLabel; - callback attribute serialNumber; - persist attribute localConfigDisabled default = 0; - callback attribute uniqueID; - callback attribute capabilityMinima; - callback attribute specificationVersion; - callback attribute maxPathsPerInvoke; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 3; - } - - server cluster OtaSoftwareUpdateRequestor { - emits event StateTransition; - emits event VersionApplied; - emits event DownloadError; - callback attribute defaultOTAProviders default = 0; - ram attribute updatePossible default = 1; - ram attribute updateState default = 0; - ram attribute updateStateProgress default = 0; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - - handle command AnnounceOTAProvider; - } - - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster GeneralCommissioning { - ram attribute breadcrumb default = 0x0000000000000000; - callback attribute basicCommissioningInfo; - callback attribute regulatoryConfig default = 0; - callback attribute locationCapability default = 0; - callback attribute supportsConcurrentConnection default = 1; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - - handle command ArmFailSafe; - handle command ArmFailSafeResponse; - handle command SetRegulatoryConfig; - handle command SetRegulatoryConfigResponse; - handle command CommissioningComplete; - handle command CommissioningCompleteResponse; - } - - server cluster NetworkCommissioning { - ram attribute maxNetworks; - callback attribute networks; - ram attribute scanMaxTimeSeconds; - ram attribute connectMaxTimeSeconds; - ram attribute interfaceEnabled; - ram attribute lastNetworkingStatus; - ram attribute lastNetworkID; - ram attribute lastConnectErrorValue; - ram attribute featureMap default = 2; - ram attribute clusterRevision default = 1; - - handle command ScanNetworks; - handle command ScanNetworksResponse; - handle command AddOrUpdateWiFiNetwork; - handle command AddOrUpdateThreadNetwork; - handle command RemoveNetwork; - handle command NetworkConfigResponse; - handle command ConnectNetwork; - handle command ConnectNetworkResponse; - handle command ReorderNetwork; - } - - server cluster DiagnosticLogs { - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - - handle command RetrieveLogsRequest; - } - - server cluster GeneralDiagnostics { - emits event HardwareFaultChange; - emits event RadioFaultChange; - emits event NetworkFaultChange; - emits event BootReason; - callback attribute networkInterfaces; - callback attribute rebootCount default = 0x0000; - callback attribute upTime default = 0x0000000000000000; - callback attribute totalOperationalHours default = 0x00000000; - callback attribute bootReason; - callback attribute activeHardwareFaults; - callback attribute activeRadioFaults; - callback attribute activeNetworkFaults; - callback attribute testEventTriggersEnabled default = false; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 0x0002; - - handle command TestEventTrigger; - handle command TimeSnapshot; - handle command TimeSnapshotResponse; - } - - server cluster SoftwareDiagnostics { - callback attribute threadMetrics; - callback attribute currentHeapFree default = 0x0000000000000000; - callback attribute currentHeapUsed default = 0x0000000000000000; - callback attribute currentHeapHighWatermark default = 0x0000000000000000; - callback attribute featureMap default = 1; - ram attribute clusterRevision default = 1; - - handle command ResetWatermarks; - } - - server cluster ThreadNetworkDiagnostics { - callback attribute channel; - callback attribute routingRole; - callback attribute networkName default = "0"; - callback attribute panId default = 0x0000; - callback attribute extendedPanId default = 0x0000000000000000; - callback attribute meshLocalPrefix; - callback attribute overrunCount default = 0x0000000000000000; - callback attribute neighborTable; - callback attribute routeTable; - callback attribute partitionId; - callback attribute weighting; - callback attribute dataVersion; - callback attribute stableDataVersion; - callback attribute leaderRouterId; - callback attribute detachedRoleCount default = 0x0000; - callback attribute childRoleCount default = 0x0000; - callback attribute routerRoleCount default = 0x0000; - callback attribute leaderRoleCount default = 0x0000; - callback attribute attachAttemptCount default = 0x0000; - callback attribute partitionIdChangeCount default = 0x0000; - callback attribute betterPartitionAttachAttemptCount default = 0x0000; - callback attribute parentChangeCount default = 0x0000; - callback attribute txTotalCount default = 0x0000; - callback attribute txUnicastCount default = 0x0000; - callback attribute txBroadcastCount default = 0x0000; - callback attribute txAckRequestedCount default = 0x0000; - callback attribute txAckedCount default = 0x0000; - callback attribute txNoAckRequestedCount default = 0x0000; - callback attribute txDataCount default = 0x0000; - callback attribute txDataPollCount default = 0x0000; - callback attribute txBeaconCount default = 0x0000; - callback attribute txBeaconRequestCount default = 0x0000; - callback attribute txOtherCount default = 0x0000; - callback attribute txRetryCount default = 0x0000; - callback attribute txDirectMaxRetryExpiryCount default = 0x0000; - callback attribute txIndirectMaxRetryExpiryCount default = 0x0000; - callback attribute txErrCcaCount default = 0x0000; - callback attribute txErrAbortCount default = 0x0000; - callback attribute txErrBusyChannelCount default = 0x0000; - callback attribute rxTotalCount default = 0x0000; - callback attribute rxUnicastCount default = 0x0000; - callback attribute rxBroadcastCount default = 0x0000; - callback attribute rxDataCount default = 0x0000; - callback attribute rxDataPollCount default = 0x0000; - callback attribute rxBeaconCount default = 0x0000; - callback attribute rxBeaconRequestCount default = 0x0000; - callback attribute rxOtherCount default = 0x0000; - callback attribute rxAddressFilteredCount default = 0x0000; - callback attribute rxDestAddrFilteredCount default = 0x0000; - callback attribute rxDuplicatedCount default = 0x0000; - callback attribute rxErrNoFrameCount default = 0x0000; - callback attribute rxErrUnknownNeighborCount default = 0x0000; - callback attribute rxErrInvalidSrcAddrCount default = 0x0000; - callback attribute rxErrSecCount default = 0x0000; - callback attribute rxErrFcsCount default = 0x0000; - callback attribute rxErrOtherCount default = 0x0000; - callback attribute activeTimestamp default = 0x0000000000000000; - callback attribute pendingTimestamp default = 0x0000000000000000; - callback attribute delay default = 0x0000; - callback attribute securityPolicy; - callback attribute channelPage0Mask default = "0x0000"; - callback attribute operationalDatasetComponents; - callback attribute activeNetworkFaultsList; - ram attribute featureMap default = 0x000F; - ram attribute clusterRevision default = 1; - - handle command ResetCounts; - } - - server cluster WiFiNetworkDiagnostics { - emits event Disconnection; - emits event AssociationFailure; - emits event ConnectionStatus; - callback attribute bssid; - callback attribute securityType; - callback attribute wiFiVersion; - callback attribute channelNumber default = 0x0000; - callback attribute rssi default = 0x00; - callback attribute beaconLostCount default = 0x00000000; - callback attribute beaconRxCount default = 0x00000000; - callback attribute packetMulticastRxCount default = 0x00000000; - callback attribute packetMulticastTxCount default = 0x00000000; - callback attribute packetUnicastRxCount default = 0x00000000; - callback attribute packetUnicastTxCount default = 0x00000000; - callback attribute currentMaxRate default = 0x0000000000000000; - callback attribute overrunCount default = 0x0000000000000000; - ram attribute featureMap default = 3; - ram attribute clusterRevision default = 1; - - handle command ResetCounts; - } - - server cluster EthernetNetworkDiagnostics { - callback attribute PHYRate; - callback attribute fullDuplex default = 0x00; - callback attribute packetRxCount default = 0x0000000000000000; - callback attribute packetTxCount default = 0x0000000000000000; - callback attribute txErrCount default = 0x0000000000000000; - callback attribute collisionCount default = 0x0000000000000000; - callback attribute overrunCount default = 0x0000000000000000; - callback attribute carrierDetect default = 0x00; - callback attribute timeSinceReset default = 0x0000000000000000; - ram attribute featureMap default = 3; - ram attribute clusterRevision default = 1; - - handle command ResetCounts; - } - - server cluster Switch { - ram attribute numberOfPositions default = 2; - ram attribute currentPosition; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster AdministratorCommissioning { - callback attribute windowStatus default = 0; - callback attribute adminFabricIndex default = 1; - callback attribute adminVendorId default = 0; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - - handle command OpenCommissioningWindow; - handle command OpenBasicCommissioningWindow; - handle command RevokeCommissioning; - } - - server cluster OperationalCredentials { - callback attribute NOCs; - callback attribute fabrics; - callback attribute supportedFabrics; - callback attribute commissionedFabrics; - callback attribute trustedRootCertificates; - callback attribute currentFabricIndex; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - - handle command AttestationRequest; - handle command AttestationResponse; - handle command CertificateChainRequest; - handle command CertificateChainResponse; - handle command CSRRequest; - handle command CSRResponse; - handle command AddNOC; - handle command UpdateNOC; - handle command NOCResponse; - handle command UpdateFabricLabel; - handle command RemoveFabric; - handle command AddTrustedRootCertificate; - } - - server cluster GroupKeyManagement { - callback attribute groupKeyMap; - callback attribute groupTable; - callback attribute maxGroupsPerFabric; - callback attribute maxGroupKeysPerFabric; - callback attribute featureMap default = 0; - callback attribute clusterRevision default = 1; - - handle command KeySetWrite; - handle command KeySetRead; - handle command KeySetReadResponse; - handle command KeySetRemove; - handle command KeySetReadAllIndices; - handle command KeySetReadAllIndicesResponse; - } - - server cluster FixedLabel { - callback attribute labelList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster UserLabel { - callback attribute labelList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } -} -endpoint 1 { - device type ma_fan = 43, version 1; - - - server cluster Identify { - ram attribute identifyTime default = 0x0; - ram attribute identifyType default = 0x0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 4; - - handle command Identify; - handle command TriggerEffect; - } - - server cluster Groups { - ram attribute nameSupport; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 4; - - handle command AddGroup; - handle command AddGroupResponse; - handle command ViewGroup; - handle command ViewGroupResponse; - handle command GetGroupMembership; - handle command GetGroupMembershipResponse; - handle command RemoveGroup; - handle command RemoveGroupResponse; - handle command RemoveAllGroups; - handle command AddGroupIfIdentifying; - } - - server cluster Descriptor { - callback attribute deviceTypeList; - callback attribute serverList; - callback attribute clientList; - callback attribute partsList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; - } - - server cluster HepaFilterMonitoring { - callback attribute condition; - callback attribute degradationDirection; - callback attribute changeIndication default = 0; - callback attribute inPlaceIndicator; - callback attribute lastChangedTime; - callback attribute replacementProductList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - callback attribute featureMap default = 7; - ram attribute clusterRevision default = 1; - - handle command ResetCondition; - } - - server cluster ActivatedCarbonFilterMonitoring { - callback attribute condition; - callback attribute degradationDirection; - callback attribute changeIndication default = 0; - callback attribute inPlaceIndicator; - callback attribute lastChangedTime; - callback attribute replacementProductList; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - callback attribute featureMap default = 7; - ram attribute clusterRevision default = 1; - - handle command ResetCondition; - } - - server cluster FanControl { - ram attribute fanMode default = 0; - ram attribute fanModeSequence default = 2; - ram attribute percentSetting default = 0; - ram attribute percentCurrent default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } -} - - diff --git a/examples/resource-monitoring-app/resource-monitoring-common/resource-monitoring-app.zap b/examples/resource-monitoring-app/resource-monitoring-common/resource-monitoring-app.zap deleted file mode 100644 index 76c0e5ae655023..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/resource-monitoring-app.zap +++ /dev/null @@ -1,5376 +0,0 @@ -{ - "fileFormat": 2, - "featureLevel": 99, - "creator": "zap", - "keyValuePairs": [ - { - "key": "commandDiscovery", - "value": "1" - }, - { - "key": "defaultResponsePolicy", - "value": "always" - }, - { - "key": "manufacturerCodes", - "value": "0x1002" - } - ], - "package": [ - { - "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/zcl/zcl.json", - "type": "zcl-properties", - "category": "matter", - "version": 1, - "description": "Matter SDK ZCL data" - }, - { - "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/app-templates.json", - "type": "gen-templates-json", - "version": "chip-v1" - } - ], - "endpointTypes": [ - { - "id": 1, - "name": "MA-rootdevice", - "deviceTypeRef": { - "code": 22, - "profileId": 259, - "label": "MA-rootdevice", - "name": "MA-rootdevice" - }, - "deviceTypes": [ - { - "code": 22, - "profileId": 259, - "label": "MA-rootdevice", - "name": "MA-rootdevice" - } - ], - "deviceVersions": [ - 1 - ], - "deviceIdentifiers": [ - 22 - ], - "deviceTypeName": "MA-rootdevice", - "deviceTypeCode": 22, - "deviceTypeProfileId": 259, - "clusters": [ - { - "name": "Groups", - "code": 4, - "mfgCode": null, - "define": "GROUPS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "AddGroup", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "AddGroupResponse", - "code": 0, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "ViewGroup", - "code": 1, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "ViewGroupResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "GetGroupMembership", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "GetGroupMembershipResponse", - "code": 2, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "RemoveGroup", - "code": 3, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "RemoveGroupResponse", - "code": 3, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "RemoveAllGroups", - "code": 4, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "AddGroupIfIdentifying", - "code": 5, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "NameSupport", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "NameSupportBitmap", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "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": "4", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "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": "", - "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": "", - "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": "", - "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": "", - "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": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Access Control", - "code": 31, - "mfgCode": null, - "define": "ACCESS_CONTROL_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ACL", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Extension", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SubjectsPerAccessControlEntry", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "4", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "TargetsPerAccessControlEntry", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "3", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AccessControlEntriesPerFabric", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "4", - "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": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ], - "events": [ - { - "name": "AccessControlEntryChanged", - "code": 0, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "AccessControlExtensionChanged", - "code": 1, - "mfgCode": null, - "side": "server", - "included": 1 - } - ] - }, - { - "name": "Basic Information", - "code": 40, - "mfgCode": null, - "define": "BASIC_INFORMATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "DataModelRevision", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "10", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "VendorName", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "VendorID", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "vendor_id", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ProductName", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ProductID", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "NodeLabel", - "code": 5, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "Location", - "code": 6, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "XX", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "HardwareVersion", - "code": 7, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "HardwareVersionString", - "code": 8, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "SoftwareVersion", - "code": 9, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "SoftwareVersionString", - "code": 10, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ManufacturingDate", - "code": 11, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "20210614123456ZZ", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "PartNumber", - "code": 12, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ProductURL", - "code": 13, - "mfgCode": null, - "side": "server", - "type": "long_char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ProductLabel", - "code": 14, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "SerialNumber", - "code": 15, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "LocalConfigDisabled", - "code": 16, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "NVM", - "singleton": 1, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "UniqueID", - "code": 18, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CapabilityMinima", - "code": 19, - "mfgCode": null, - "side": "server", - "type": "CapabilityMinimaStruct", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SpecificationVersion", - "code": 21, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 1, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "MaxPathsPerInvoke", - "code": 22, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 1, - "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": 1, - "bounded": 0, - "defaultValue": "3", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ], - "events": [ - { - "name": "StartUp", - "code": 0, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "ShutDown", - "code": 1, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "Leave", - "code": 2, - "mfgCode": null, - "side": "server", - "included": 1 - } - ] - }, - { - "name": "OTA Software Update Provider", - "code": 41, - "mfgCode": null, - "define": "OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER", - "side": "client", - "enabled": 1, - "commands": [ - { - "name": "QueryImage", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "QueryImageResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "ApplyUpdateRequest", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "ApplyUpdateResponse", - "code": 3, - "mfgCode": null, - "source": "server", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "NotifyUpdateApplied", - "code": 4, - "mfgCode": null, - "source": "client", - "isIncoming": 0, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "client", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ] - }, - { - "name": "OTA Software Update Requestor", - "code": 42, - "mfgCode": null, - "define": "OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "AnnounceOTAProvider", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "DefaultOTAProviders", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "UpdatePossible", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "UpdateState", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "UpdateStateEnum", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "UpdateStateProgress", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "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": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ], - "events": [ - { - "name": "StateTransition", - "code": 0, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "VersionApplied", - "code": 1, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "DownloadError", - "code": 2, - "mfgCode": null, - "side": "server", - "included": 1 - } - ] - }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "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": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "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": "General Commissioning", - "code": 48, - "mfgCode": null, - "define": "GENERAL_COMMISSIONING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ArmFailSafe", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "ArmFailSafeResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "SetRegulatoryConfig", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "SetRegulatoryConfigResponse", - "code": 3, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "CommissioningComplete", - "code": 4, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "CommissioningCompleteResponse", - "code": 5, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "Breadcrumb", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "BasicCommissioningInfo", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "BasicCommissioningInfo", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RegulatoryConfig", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "RegulatoryLocationTypeEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "LocationCapability", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "RegulatoryLocationTypeEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportsConcurrentConnection", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "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": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ] - }, - { - "name": "Network Commissioning", - "code": 49, - "mfgCode": null, - "define": "NETWORK_COMMISSIONING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ScanNetworks", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "ScanNetworksResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "AddOrUpdateWiFiNetwork", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "AddOrUpdateThreadNetwork", - "code": 3, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "RemoveNetwork", - "code": 4, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "NetworkConfigResponse", - "code": 5, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "ConnectNetwork", - "code": 6, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "ConnectNetworkResponse", - "code": 7, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "ReorderNetwork", - "code": 8, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "MaxNetworks", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Networks", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ScanMaxTimeSeconds", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ConnectMaxTimeSeconds", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "InterfaceEnabled", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "LastNetworkingStatus", - "code": 5, - "mfgCode": null, - "side": "server", - "type": "NetworkCommissioningStatusEnum", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "LastNetworkID", - "code": 6, - "mfgCode": null, - "side": "server", - "type": "octet_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "LastConnectErrorValue", - "code": 7, - "mfgCode": null, - "side": "server", - "type": "int32s", - "included": 1, - "storageOption": "RAM", - "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": "2", - "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": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ] - }, - { - "name": "Diagnostic Logs", - "code": 50, - "mfgCode": null, - "define": "DIAGNOSTIC_LOGS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "RetrieveLogsRequest", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "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": "General Diagnostics", - "code": 51, - "mfgCode": null, - "define": "GENERAL_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "TestEventTrigger", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "TimeSnapshot", - "code": 1, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "TimeSnapshotResponse", - "code": 2, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "NetworkInterfaces", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RebootCount", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "UpTime", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "TotalOperationalHours", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "BootReason", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "BootReasonEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveHardwareFaults", - "code": 5, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveRadioFaults", - "code": 6, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveNetworkFaults", - "code": 7, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "TestEventTriggersEnabled", - "code": 8, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "false", - "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": "0x0002", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ], - "events": [ - { - "name": "HardwareFaultChange", - "code": 0, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "RadioFaultChange", - "code": 1, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "NetworkFaultChange", - "code": 2, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "BootReason", - "code": 3, - "mfgCode": null, - "side": "server", - "included": 1 - } - ] - }, - { - "name": "Software Diagnostics", - "code": 52, - "mfgCode": null, - "define": "SOFTWARE_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ResetWatermarks", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "ThreadMetrics", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "CurrentHeapFree", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "CurrentHeapUsed", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "CurrentHeapHighWatermark", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "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": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ] - }, - { - "name": "Thread Network Diagnostics", - "code": 53, - "mfgCode": null, - "define": "THREAD_NETWORK_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ResetCounts", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "Channel", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RoutingRole", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "RoutingRoleEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "NetworkName", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "PanId", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ExtendedPanId", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "MeshLocalPrefix", - "code": 5, - "mfgCode": null, - "side": "server", - "type": "octet_string", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "OverrunCount", - "code": 6, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "NeighborTable", - "code": 7, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RouteTable", - "code": 8, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "PartitionId", - "code": 9, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "Weighting", - "code": 10, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "DataVersion", - "code": 11, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "StableDataVersion", - "code": 12, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "LeaderRouterId", - "code": 13, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "DetachedRoleCount", - "code": 14, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ChildRoleCount", - "code": 15, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RouterRoleCount", - "code": 16, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "LeaderRoleCount", - "code": 17, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "AttachAttemptCount", - "code": 18, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "PartitionIdChangeCount", - "code": 19, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "BetterPartitionAttachAttemptCount", - "code": 20, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ParentChangeCount", - "code": 21, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxTotalCount", - "code": 22, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxUnicastCount", - "code": 23, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxBroadcastCount", - "code": 24, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxAckRequestedCount", - "code": 25, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxAckedCount", - "code": 26, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxNoAckRequestedCount", - "code": 27, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxDataCount", - "code": 28, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxDataPollCount", - "code": 29, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxBeaconCount", - "code": 30, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxBeaconRequestCount", - "code": 31, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxOtherCount", - "code": 32, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxRetryCount", - "code": 33, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxDirectMaxRetryExpiryCount", - "code": 34, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxIndirectMaxRetryExpiryCount", - "code": 35, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxErrCcaCount", - "code": 36, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxErrAbortCount", - "code": 37, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxErrBusyChannelCount", - "code": 38, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxTotalCount", - "code": 39, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxUnicastCount", - "code": 40, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxBroadcastCount", - "code": 41, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxDataCount", - "code": 42, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxDataPollCount", - "code": 43, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxBeaconCount", - "code": 44, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxBeaconRequestCount", - "code": 45, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxOtherCount", - "code": 46, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxAddressFilteredCount", - "code": 47, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxDestAddrFilteredCount", - "code": 48, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxDuplicatedCount", - "code": 49, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxErrNoFrameCount", - "code": 50, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxErrUnknownNeighborCount", - "code": 51, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxErrInvalidSrcAddrCount", - "code": 52, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxErrSecCount", - "code": 53, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxErrFcsCount", - "code": 54, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RxErrOtherCount", - "code": 55, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ActiveTimestamp", - "code": 56, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "PendingTimestamp", - "code": 57, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Delay", - "code": 58, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SecurityPolicy", - "code": 59, - "mfgCode": null, - "side": "server", - "type": "SecurityPolicy", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ChannelPage0Mask", - "code": 60, - "mfgCode": null, - "side": "server", - "type": "octet_string", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "OperationalDatasetComponents", - "code": 61, - "mfgCode": null, - "side": "server", - "type": "OperationalDatasetComponents", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ActiveNetworkFaultsList", - "code": 62, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x000F", - "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": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ] - }, - { - "name": "WiFi Network Diagnostics", - "code": 54, - "mfgCode": null, - "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ResetCounts", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "BSSID", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "octet_string", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "SecurityType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "SecurityTypeEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "WiFiVersion", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "WiFiVersionEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "ChannelNumber", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "RSSI", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "int8s", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "BeaconLostCount", - "code": 5, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "BeaconRxCount", - "code": 6, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "PacketMulticastRxCount", - "code": 7, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "PacketMulticastTxCount", - "code": 8, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "PacketUnicastRxCount", - "code": 9, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "PacketUnicastTxCount", - "code": 10, - "mfgCode": null, - "side": "server", - "type": "int32u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "CurrentMaxRate", - "code": 11, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "OverrunCount", - "code": 12, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "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": "3", - "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": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ], - "events": [ - { - "name": "Disconnection", - "code": 0, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "AssociationFailure", - "code": 1, - "mfgCode": null, - "side": "server", - "included": 1 - }, - { - "name": "ConnectionStatus", - "code": 2, - "mfgCode": null, - "side": "server", - "included": 1 - } - ] - }, - { - "name": "Ethernet Network Diagnostics", - "code": 55, - "mfgCode": null, - "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ResetCounts", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "PHYRate", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "PHYRateEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FullDuplex", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "PacketRxCount", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "PacketTxCount", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TxErrCount", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CollisionCount", - "code": 5, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "OverrunCount", - "code": 6, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CarrierDetect", - "code": 7, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "TimeSinceReset", - "code": 8, - "mfgCode": null, - "side": "server", - "type": "int64u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000000000000000", - "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": "3", - "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": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ] - }, - { - "name": "Switch", - "code": 59, - "mfgCode": null, - "define": "SWITCH_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "NumberOfPositions", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "2", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CurrentPosition", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "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": "Administrator Commissioning", - "code": 60, - "mfgCode": null, - "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "OpenCommissioningWindow", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "OpenBasicCommissioningWindow", - "code": 1, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "RevokeCommissioning", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "WindowStatus", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "CommissioningWindowStatusEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AdminFabricIndex", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "fabric_idx", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AdminVendorId", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "vendor_id", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "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": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ] - }, - { - "name": "Operational Credentials", - "code": 62, - "mfgCode": null, - "define": "OPERATIONAL_CREDENTIALS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "AttestationRequest", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "AttestationResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "CertificateChainRequest", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "CertificateChainResponse", - "code": 3, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "CSRRequest", - "code": 4, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "CSRResponse", - "code": 5, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "AddNOC", - "code": 6, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "UpdateNOC", - "code": 7, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "NOCResponse", - "code": 8, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "UpdateFabricLabel", - "code": 9, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "RemoveFabric", - "code": 10, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "AddTrustedRootCertificate", - "code": 11, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "NOCs", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Fabrics", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "SupportedFabrics", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CommissionedFabrics", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "TrustedRootCertificates", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CurrentFabricIndex", - "code": 5, - "mfgCode": null, - "side": "server", - "type": "int8u", - "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": 0, - "maxInterval": 65344, - "reportableChange": 0 - } - ] - }, - { - "name": "Group Key Management", - "code": 63, - "mfgCode": null, - "define": "GROUP_KEY_MANAGEMENT_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "KeySetWrite", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "KeySetRead", - "code": 1, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "KeySetReadResponse", - "code": 2, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "KeySetRemove", - "code": 3, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "KeySetReadAllIndices", - "code": 4, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "KeySetReadAllIndicesResponse", - "code": 5, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "GroupKeyMap", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GroupTable", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "MaxGroupsPerFabric", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "MaxGroupKeysPerFabric", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "int16u", - "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": "External", - "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": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Fixed Label", - "code": 64, - "mfgCode": null, - "define": "FIXED_LABEL_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "LabelList", - "code": 0, - "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": "User Label", - "code": 65, - "mfgCode": null, - "define": "USER_LABEL_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "LabelList", - "code": 0, - "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 - } - ] - } - ] - }, - { - "id": 2, - "name": "Anonymous Endpoint Type", - "deviceTypeRef": { - "code": 43, - "profileId": 259, - "label": "MA-fan", - "name": "MA-fan" - }, - "deviceTypes": [ - { - "code": 43, - "profileId": 259, - "label": "MA-fan", - "name": "MA-fan" - } - ], - "deviceVersions": [ - 1 - ], - "deviceIdentifiers": [ - 43 - ], - "deviceTypeName": "MA-fan", - "deviceTypeCode": 43, - "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 - }, - { - "name": "TriggerEffect", - "code": 64, - "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": "0x0", - "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": "", - "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": "4", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Groups", - "code": 4, - "mfgCode": null, - "define": "GROUPS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "AddGroup", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "AddGroupResponse", - "code": 0, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "ViewGroup", - "code": 1, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "ViewGroupResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "GetGroupMembership", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "GetGroupMembershipResponse", - "code": 2, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "RemoveGroup", - "code": 3, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "RemoveGroupResponse", - "code": 3, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - }, - { - "name": "RemoveAllGroups", - "code": 4, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "AddGroupIfIdentifying", - "code": 5, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "NameSupport", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "NameSupportBitmap", - "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": "", - "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": "4", - "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": "", - "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": "", - "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": "", - "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": "", - "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": "", - "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": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "HEPA Filter Monitoring", - "code": 113, - "mfgCode": null, - "define": "HEPA_FILTER_MONITORING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ResetCondition", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "Condition", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "percent", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "DegradationDirection", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "DegradationDirectionEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ChangeIndication", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "ChangeIndicationEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "InPlaceIndicator", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "LastChangedTime", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "epoch_s", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ReplacementProductList", - "code": 5, - "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": "", - "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": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "7", - "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": "Activated Carbon Filter Monitoring", - "code": 114, - "mfgCode": null, - "define": "ACTIVATED_CARBON_FILTER_MONITORING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ResetCondition", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "Condition", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "percent", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "DegradationDirection", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "DegradationDirectionEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ChangeIndication", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "ChangeIndicationEnum", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "InPlaceIndicator", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "LastChangedTime", - "code": 4, - "mfgCode": null, - "side": "server", - "type": "epoch_s", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ReplacementProductList", - "code": 5, - "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": "", - "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": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "7", - "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": "Fan Control", - "code": 514, - "mfgCode": null, - "define": "FAN_CONTROL_CLUSTER", - "side": "server", - "enabled": 1, - "apiMaturity": "provisional", - "attributes": [ - { - "name": "FanMode", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "FanModeEnum", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FanModeSequence", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "FanModeSequenceEnum", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "2", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "PercentSetting", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "percent", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "PercentCurrent", - "code": 3, - "mfgCode": null, - "side": "server", - "type": "percent", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "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": "", - "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 - } - ] - } - ] - } - ], - "endpoints": [ - { - "endpointTypeName": "MA-rootdevice", - "endpointTypeIndex": 0, - "profileId": 259, - "endpointId": 0, - "networkId": 0 - }, - { - "endpointTypeName": "Anonymous Endpoint Type", - "endpointTypeIndex": 1, - "profileId": 259, - "endpointId": 1, - "networkId": 0 - } - ], - "log": [] -} \ No newline at end of file diff --git a/examples/resource-monitoring-app/resource-monitoring-common/src/ReplacementProductListManager.cpp b/examples/resource-monitoring-app/resource-monitoring-common/src/ReplacementProductListManager.cpp deleted file mode 100644 index f450df6f380ef3..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/src/ReplacementProductListManager.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include - -using namespace chip::app::Clusters; -using namespace chip::app::Clusters::ResourceMonitoring; - -CHIP_ERROR StaticReplacementProductListManager::Next(ReplacementProductStruct & item) -{ - if (mIndex < mReplacementProductListSize) - { - item = mReplacementProductsList[mIndex]; - mIndex++; - return CHIP_NO_ERROR; - } - - return CHIP_ERROR_PROVIDER_LIST_EXHAUSTED; -} - -CHIP_ERROR ImmutableReplacementProductListManager::Next(ReplacementProductStruct & item) -{ - if (mIndex >= kReplacementProductListMaxSize) - { - return CHIP_ERROR_PROVIDER_LIST_EXHAUSTED; - } - - switch (mIndex) - { - case 0: { - item.SetProductIdentifierType(ResourceMonitoring::ProductIdentifierTypeEnum::kUpc); - item.SetProductIdentifierValue(CharSpan::fromCharString("111112222233")); - break; - case 1: - item.SetProductIdentifierType(ResourceMonitoring::ProductIdentifierTypeEnum::kGtin8); - item.SetProductIdentifierValue(CharSpan::fromCharString("gtin8xxx")); - break; - case 2: - item.SetProductIdentifierType(ResourceMonitoring::ProductIdentifierTypeEnum::kEan); - item.SetProductIdentifierValue(CharSpan::fromCharString("4444455555666")); - break; - case 3: - item.SetProductIdentifierType(ResourceMonitoring::ProductIdentifierTypeEnum::kGtin14); - item.SetProductIdentifierValue(CharSpan::fromCharString("gtin14xxxxxxxx")); - break; - case 4: - item.SetProductIdentifierType(ResourceMonitoring::ProductIdentifierTypeEnum::kOem); - item.SetProductIdentifierValue(CharSpan::fromCharString("oem20xxxxxxxxxxxxxxx")); - break; - default: - return CHIP_ERROR_PROVIDER_LIST_EXHAUSTED; - break; - } - } - mIndex++; - return CHIP_NO_ERROR; -} diff --git a/examples/resource-monitoring-app/resource-monitoring-common/src/delegates/ActivatedCarbonFilterMonitoring.cpp b/examples/resource-monitoring-app/resource-monitoring-common/src/delegates/ActivatedCarbonFilterMonitoring.cpp deleted file mode 100644 index 2c00ee8b80a115..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/src/delegates/ActivatedCarbonFilterMonitoring.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace chip; -using namespace chip::app::Clusters; -using namespace chip::app::Clusters::ActivatedCarbonFilterMonitoring; -using namespace chip::app::Clusters::ResourceMonitoring; -using namespace chip::app::Clusters::ResourceMonitoring::Attributes; -using chip::Protocols::InteractionModel::Status; - -static ReplacementProductStruct sActivatedCarbonFilterReplacementProductsList[] = { - { ResourceMonitoring::ProductIdentifierTypeEnum::kUpc, CharSpan::fromCharString("111112222233") }, - { ResourceMonitoring::ProductIdentifierTypeEnum::kGtin8, CharSpan::fromCharString("gtin8xca") }, - { ResourceMonitoring::ProductIdentifierTypeEnum::kEan, CharSpan::fromCharString("4444455555666") }, - { ResourceMonitoring::ProductIdentifierTypeEnum::kGtin14, CharSpan::fromCharString("gtin14xcarbonx") }, - { ResourceMonitoring::ProductIdentifierTypeEnum::kOem, CharSpan::fromCharString("oem20xcarbonxxxxxxxx") }, -}; -StaticReplacementProductListManager - sActivatedCarbonFilterReplacementProductListManager(&sActivatedCarbonFilterReplacementProductsList[0], - ArraySize(sActivatedCarbonFilterReplacementProductsList)); - -//-- Activated carbon filter Monitoring Delegate methods -CHIP_ERROR ActivatedCarbonFilterMonitoringDelegate::Init() -{ - ChipLogDetail(Zcl, "ActivatedCarbonFilterMonitoringDelegate::Init()"); - - GetInstance()->SetReplacementProductListManagerInstance(&sActivatedCarbonFilterReplacementProductListManager); - - return CHIP_NO_ERROR; -} - -Status ActivatedCarbonFilterMonitoringDelegate::PreResetCondition() -{ - ChipLogDetail(Zcl, "ActivatedCarbonFilterMonitoringDelegate::PreResetCondition()"); - return Status::Success; -} - -Status ActivatedCarbonFilterMonitoringDelegate::PostResetCondition() -{ - ChipLogDetail(Zcl, "ActivatedCarbonFilterMonitoringDelegate::PostResetCondition()"); - return Status::Success; -} diff --git a/examples/resource-monitoring-app/resource-monitoring-common/src/delegates/HepaFilterMonitoring.cpp b/examples/resource-monitoring-app/resource-monitoring-common/src/delegates/HepaFilterMonitoring.cpp deleted file mode 100644 index 31a7a478093d99..00000000000000 --- a/examples/resource-monitoring-app/resource-monitoring-common/src/delegates/HepaFilterMonitoring.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace chip; -using namespace chip::app::Clusters; -using namespace chip::app::Clusters::ResourceMonitoring; -using namespace chip::app::Clusters::ResourceMonitoring::Attributes; -using chip::Protocols::InteractionModel::Status; - -static ImmutableReplacementProductListManager sHepaFilterReplacementProductListManager; - -//-- Hepa filter Monitoring Delegate methods -CHIP_ERROR HepaFilterMonitoringDelegate::Init() -{ - ChipLogDetail(Zcl, "HepaFilterMonitoringDelegate::Init()"); - - GetInstance()->SetReplacementProductListManagerInstance(&sHepaFilterReplacementProductListManager); - - return CHIP_NO_ERROR; -} - -Status HepaFilterMonitoringDelegate::PreResetCondition() -{ - ChipLogDetail(Zcl, "HepaFilterMonitoringDelegate::PreResetCondition()"); - return Status::Success; -} - -Status HepaFilterMonitoringDelegate::PostResetCondition() -{ - ChipLogDetail(Zcl, "HepaFilterMonitoringDelegate::PostResetCondition()"); - return Status::Success; -} diff --git a/examples/resource-monitoring-app/telink/.gitignore b/examples/resource-monitoring-app/telink/.gitignore deleted file mode 100644 index 84c048a73cc2e5..00000000000000 --- a/examples/resource-monitoring-app/telink/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build/ diff --git a/examples/resource-monitoring-app/telink/CMakeLists.txt b/examples/resource-monitoring-app/telink/CMakeLists.txt deleted file mode 100644 index dde35e61e378b8..00000000000000 --- a/examples/resource-monitoring-app/telink/CMakeLists.txt +++ /dev/null @@ -1,95 +0,0 @@ -# -# Copyright (c) 2023 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -cmake_minimum_required(VERSION 3.13.1) - -get_filename_component(CHIP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/third_party/connectedhomeip REALPATH) -get_filename_component(TELINK_COMMON ${CHIP_ROOT}/examples/platform/telink REALPATH) -get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH) - -if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}.overlay") - set(LOCAL_DTC_OVERLAY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}.overlay") -else() - unset(LOCAL_DTC_OVERLAY_FILE) -endif() - -if(EXISTS "${CHIP_ROOT}/src/platform/telink/${BOARD}.overlay") - set(GLOBAL_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}.overlay") -else() - unset(GLOBAL_DTC_OVERLAY_FILE) -endif() - -if(EXISTS "${CHIP_ROOT}/src/platform/telink/${FLASH_SIZE}_flash.overlay") - set(FLASH_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${FLASH_SIZE}_flash.overlay") - message(STATUS "Flash memory size is set to: " ${FLASH_SIZE} "b") -else() - set(FLASH_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/2m_flash.overlay") - message(STATUS "Flash memory size is set to: 2mb") -endif() - -if(DTC_OVERLAY_FILE) - set(DTC_OVERLAY_FILE - "${DTC_OVERLAY_FILE} ${GLOBAL_DTC_OVERLAY_FILE} ${FLASH_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE}" - CACHE STRING "" FORCE - ) -else() - set(DTC_OVERLAY_FILE ${GLOBAL_DTC_OVERLAY_FILE} ${FLASH_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE}) -endif() - -set(CONF_FILE prj.conf) - -# Load NCS/Zephyr build system -list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/telink/chip-module) -find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) - -project(chip-telink-resource-monitoring-example) - -include(${CHIP_ROOT}/config/telink/app/enable-gnu-std.cmake) -include(${CHIP_ROOT}/src/app/chip_data_model.cmake) - -target_compile_options(app PRIVATE -fpermissive) - -target_include_directories(app PRIVATE - include - ${GEN_DIR}/app-common - ${GEN_DIR}/resource-monitoring-app - ${TELINK_COMMON}/common/include - ${TELINK_COMMON}/util/include - ${CMAKE_CURRENT_SOURCE_DIR}/../resource-monitoring-common/include - ${CMAKE_CURRENT_SOURCE_DIR}/../resource-monitoring-common/include/delegates - ) - -add_definitions( - "-DCHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER=" -) - -target_sources(app PRIVATE - src/AppTask.cpp - src/ZclCallbacks.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/../resource-monitoring-common/src/ReplacementProductListManager.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/../resource-monitoring-common/src/delegates/ActivatedCarbonFilterMonitoring.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/../resource-monitoring-common/src/delegates/HepaFilterMonitoring.cpp - ${TELINK_COMMON}/common/src/mainCommon.cpp - ${TELINK_COMMON}/common/src/AppTaskCommon.cpp - ${TELINK_COMMON}/util/src/LEDWidget.cpp - ${TELINK_COMMON}/util/src/ButtonManager.cpp - ${TELINK_COMMON}/util/src/ThreadUtil.cpp - ${TELINK_COMMON}/util/src/PWMDevice.cpp - ) - -chip_configure_data_model(app - INCLUDE_SERVER - ZAP_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../resource-monitoring-common/resource-monitoring-app.zap -) diff --git a/examples/resource-monitoring-app/telink/Kconfig b/examples/resource-monitoring-app/telink/Kconfig deleted file mode 100644 index c1e18dcb761bac..00000000000000 --- a/examples/resource-monitoring-app/telink/Kconfig +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (c) 2023 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -mainmenu "Matter Telink Resource Monitoring Example Application" - -rsource "../../../config/telink/chip-module/Kconfig.defaults" -source "Kconfig.zephyr" diff --git a/examples/resource-monitoring-app/telink/README.md b/examples/resource-monitoring-app/telink/README.md deleted file mode 100644 index e418ad345911d1..00000000000000 --- a/examples/resource-monitoring-app/telink/README.md +++ /dev/null @@ -1,179 +0,0 @@ -# Matter Telink Resource Monitoring Example Application - -You can use this example as a reference for creating your own application. - -![Telink B91 EVK](http://wiki.telink-semi.cn/wiki/assets/Hardware/B91_Generic_Starter_Kit_Hardware_Guide/connection_chart.png) - -## Build and flash - -1. Run the Docker container: - - ```bash - $ docker run -it --rm -v $PWD:/host -w /host ghcr.io/project-chip/chip-build-telink:$(wget -q -O - https://raw.githubusercontent.com/project-chip/connectedhomeip/master/.github/workflows/examples-telink.yaml 2> /dev/null | grep chip-build-telink | awk -F: '{print $NF}') - ``` - - Compatible docker image version can be found in next file: - - ```bash - $ .github/workflows/examples-telink.yaml - ``` - -2. Activate the build environment: - - ```bash - $ source ./scripts/activate.sh -p all,telink - ``` - -3. In the example dir run (replace __ with your board name, for - example, `tlsr9518adk80d` or `tlsr9528a`): - - ```bash - $ west build -b - ``` - - Also use key `-DFLASH_SIZE`, if your board has memory size different from 2 - MB, for example, `-DFLASH_SIZE=1m` or `-DFLASH_SIZE=1m`: - - ```bash - $ west build -b tlsr9518adk80d -- -DFLASH_SIZE=4m - ``` - -4. Flash binary: - - ``` - $ west flash --erase - ``` - -## Usage - -### UART - -To get output from device, connect UART to following pins: - -| Name | Pin | -| :--: | :---------------------------- | -| RX | PB3 (pin 17 of J34 connector) | -| TX | PB2 (pin 16 of J34 connector) | -| GND | GND | - -### Buttons - -The following buttons are available on **tlsr9518adk80d** board: - -| Name | Function | Description | -| :------- | :--------------------- | :----------------------------------------------------------------------------------------------------- | -| Button 1 | Factory reset | Perform factory reset to forget currently commissioned Thread network and back to uncommissioned state | -| Button 2 | NA | NA | -| Button 3 | Thread start | Commission thread with static credentials and enables the Thread on device | -| Button 4 | Open commission window | The button is opening commissioning window to perform commissioning over BLE | - -### LEDs - -#### Indicate current state of Thread network - -**Red** LED indicates current state of Thread network. It is able to be in -following states: - -| State | Description | -| :-------------------------- | :--------------------------------------------------------------------------- | -| Blinks with short pulses | Device is not commissioned to Thread, Thread is disabled | -| Blinks with frequent pulses | Device is commissioned, Thread enabled. Device trying to JOIN thread network | -| Blinks with wide pulses | Device commissioned and joined to thread network as CHILD | - -#### Indicate identify of device - -**Green** LED used to identify the device. The LED starts blinking when the -Identify command of the Identify cluster is received. The command's argument can -be used to specify the the effect. It is able to be in following effects: - -| Effect | Description | -| :------------------------------ | :--------------------------------------------------------------------------- | -| Blinks (200 ms on/200 ms off) | Blink (`Clusters::Identify::EffectIdentifierEnum::kBlink`) | -| Breathe (during 1000 ms) | Breathe (`Clusters::Identify::EffectIdentifierEnum::kBreathe`) | -| Blinks (50 ms on/950 ms off) | Okay (`Clusters::Identify::EffectIdentifierEnum::kOkay`) | -| Blinks (1000 ms on/1000 ms off) | Channel Change ( `Clusters::Identify::EffectIdentifierEnum::kChannelChange`) | -| Blinks (950 ms on/50 ms off) | Finish ( `Clusters::Identify::EffectIdentifierEnum::kFinishEffect`) | -| LED off | Stop (`Clusters::Identify::EffectIdentifierEnum::kStopEffect`) | - -### CHIP tool commands - -1. Build - [chip-tool cli](https://github.com/project-chip/connectedhomeip/blob/master/examples/chip-tool/README.md) - -2. Pair with device - - ``` - ${CHIP_TOOL_DIR}/chip-tool pairing ble-thread ${NODE_ID} hex:${DATASET} ${PIN_CODE} ${DISCRIMINATOR} - ``` - - Example: - - ``` - ./chip-tool pairing ble-thread 1234 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd61f77bd3df233e051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f010212340410445f2b5ca6f2a93a55ce570a70efeecb0c0402a0fff8 20202021 3840 - ``` - -### OTA with Linux OTA Provider - -OTA feature enabled by default only for ota-requestor-app example. To enable OTA -feature for another Telink example: - -- set CONFIG_CHIP_OTA_REQUESTOR=y in corresponding "prj.conf" configuration - file. - -After build application with enabled OTA feature, use next binary files: - -- zephyr.bin - main binary to flash PCB (Use at least 2MB PCB). -- zephyr-ota.bin - binary for OTA Provider - -All binaries has the same SW version. To test OTA “zephyr-ota.bin” should have -higher SW version than base SW. Set CONFIG_CHIP_DEVICE_SOFTWARE_VERSION=2 in -corresponding “prj.conf” configuration file. - -Usage of OTA: - -- Build the [Linux OTA Provider](../../ota-provider-app/linux) - - ``` - ./scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/ota-provider-app chip_config_network_layer_ble=false - ``` - -- Run the Linux OTA Provider with OTA image. - - ``` - ./chip-ota-provider-app -f zephyr-ota.bin - ``` - -- Provision the Linux OTA Provider using chip-tool - - ``` - ./chip-tool pairing onnetwork ${OTA_PROVIDER_NODE_ID} 20202021 - ``` - - here: - - - \${OTA_PROVIDER_NODE_ID} is the node id of Linux OTA Provider - -- Configure the ACL of the ota-provider-app to allow access - - ``` - ./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' ${OTA_PROVIDER_NODE_ID} 0 - ``` - - here: - - - \${OTA_PROVIDER_NODE_ID} is the node id of Linux OTA Provider - -- Use the chip-tool to announce the ota-provider-app to start the OTA process - - ``` - ./chip-tool otasoftwareupdaterequestor announce-otaprovider ${OTA_PROVIDER_NODE_ID} 0 0 0 ${DEVICE_NODE_ID} 0 - ``` - - here: - - - \${OTA_PROVIDER_NODE_ID} is the node id of Linux OTA Provider - - \${DEVICE_NODE_ID} is the node id of paired device - -Once the transfer is complete, OTA requestor sends ApplyUpdateRequest command to -OTA provider for applying the image. Device will restart on successful -application of OTA image. diff --git a/examples/resource-monitoring-app/telink/include/AppConfig.h b/examples/resource-monitoring-app/telink/include/AppConfig.h deleted file mode 100644 index f0149868a699b9..00000000000000 --- a/examples/resource-monitoring-app/telink/include/AppConfig.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -// ---- Air Quality Example App Config ---- - -#define APP_USE_EXAMPLE_START_BUTTON 0 -#define APP_USE_BLE_START_BUTTON 0 -#define APP_USE_THREAD_START_BUTTON 0 -#define APP_SET_DEVICE_INFO_PROVIDER 1 -#define APP_SET_NETWORK_COMM_ENDPOINT_SEC 0 -#define APP_USE_IDENTIFY_PWM 1 diff --git a/examples/resource-monitoring-app/telink/include/AppTask.h b/examples/resource-monitoring-app/telink/include/AppTask.h deleted file mode 100644 index c0e6c9080143e6..00000000000000 --- a/examples/resource-monitoring-app/telink/include/AppTask.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "AppTaskCommon.h" - -class AppTask : public AppTaskCommon -{ -private: - friend AppTask & GetAppTask(void); - friend class AppTaskCommon; - - CHIP_ERROR Init(void); - - static AppTask sAppTask; -}; - -inline AppTask & GetAppTask(void) -{ - return AppTask::sAppTask; -} diff --git a/examples/resource-monitoring-app/telink/include/CHIPProjectConfig.h b/examples/resource-monitoring-app/telink/include/CHIPProjectConfig.h deleted file mode 100644 index 8465c19cdd0537..00000000000000 --- a/examples/resource-monitoring-app/telink/include/CHIPProjectConfig.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file - * Example project configuration file for CHIP. - * - * This is a place to put application or project-specific overrides - * to the default configuration values for general CHIP features. - * - */ - -#pragma once - -// Use a default pairing code if one hasn't been provisioned in flash. -#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 -#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 diff --git a/examples/resource-monitoring-app/telink/prj.conf b/examples/resource-monitoring-app/telink/prj.conf deleted file mode 100644 index 5fdb933b8ff327..00000000000000 --- a/examples/resource-monitoring-app/telink/prj.conf +++ /dev/null @@ -1,52 +0,0 @@ -# -# Copyright (c) 2023 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This sample uses sample-defaults.conf to set options common for all -# samples. This file should contain only options specific for this sample -# or overrides of default values. - -# Enable CHIP -CONFIG_CHIP=y -CONFIG_STD_CPP17=y - -# CHIP configuration -CONFIG_CHIP_PROJECT_CONFIG="include/CHIPProjectConfig.h" -CONFIG_CHIP_OPENTHREAD_CONFIG="../../platform/telink/project_include/OpenThreadConfig.h" - -# CHIP PID: 32769 == 0x8001 (all-clusters-app) -CONFIG_CHIP_DEVICE_PRODUCT_ID=32769 - -# Bluetooth Low Energy configuration -CONFIG_BT_DEVICE_NAME="TelinkResMon" - -# Disable Matter OTA DFU -CONFIG_CHIP_OTA_REQUESTOR=n -CONFIG_CHIP_DEVICE_SOFTWARE_VERSION=1 - -# Enable CHIP pairing automatically on application start. -CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y - -# Disable CHIP shell support -CONFIG_CHIP_LIB_SHELL=n - -# Disable factory data support. -CONFIG_CHIP_FACTORY_DATA=n -CONFIG_CHIP_FACTORY_DATA_BUILD=n -CONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE=n -CONFIG_CHIP_CERTIFICATION_DECLARATION_STORAGE=n - -# Enable Power Management -CONFIG_PM=y diff --git a/examples/resource-monitoring-app/telink/src/AppTask.cpp b/examples/resource-monitoring-app/telink/src/AppTask.cpp deleted file mode 100644 index 634de778321475..00000000000000 --- a/examples/resource-monitoring-app/telink/src/AppTask.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "AppTask.h" - -#include -#include -#include -#include -#include -#include -#include - -LOG_MODULE_DECLARE(app, CONFIG_CHIP_APP_LOG_LEVEL); - -using namespace chip; -using namespace chip::app; -using namespace chip::app::Clusters; -using namespace chip::app::Clusters::ResourceMonitoring; - -AppTask AppTask::sAppTask; - -constexpr std::bitset<4> gHepaFilterFeatureMap{ static_cast(Feature::kCondition) | - static_cast(Feature::kWarning) | - static_cast(Feature::kReplacementProductList) }; -constexpr std::bitset<4> gActivatedCarbonFeatureMap{ static_cast(Feature::kCondition) | - static_cast(Feature::kWarning) | - static_cast(Feature::kReplacementProductList) }; - -static HepaFilterMonitoringDelegate gHepaFilterDelegate; -static ResourceMonitoring::Instance gHepaFilterInstance(&gHepaFilterDelegate, 0x1, HepaFilterMonitoring::Id, - static_cast(gHepaFilterFeatureMap.to_ulong()), - Clusters::ResourceMonitoring::DegradationDirectionEnum::kDown, true); - -static ActivatedCarbonFilterMonitoringDelegate gActivatedCarbonFilterDelegate; -static ResourceMonitoring::Instance gActivatedCarbonFilterInstance(&gActivatedCarbonFilterDelegate, 0x1, - ActivatedCarbonFilterMonitoring::Id, - static_cast(gActivatedCarbonFeatureMap.to_ulong()), - Clusters::ResourceMonitoring::DegradationDirectionEnum::kDown, - true); - -CHIP_ERROR AppTask::Init(void) -{ - InitCommonParts(); - - gHepaFilterInstance.Init(); - gActivatedCarbonFilterInstance.Init(); - - return CHIP_NO_ERROR; -} diff --git a/examples/resource-monitoring-app/telink/src/ZclCallbacks.cpp b/examples/resource-monitoring-app/telink/src/ZclCallbacks.cpp deleted file mode 100644 index d622dcbe664407..00000000000000 --- a/examples/resource-monitoring-app/telink/src/ZclCallbacks.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file - * This file implements the handler for data model messages. - */ - -#include "AppConfig.h" - -#include -#include -#include -#include -#include - -using namespace ::chip; -using namespace ::chip::app::Clusters; - -LOG_MODULE_DECLARE(app, CONFIG_CHIP_APP_LOG_LEVEL); - -void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & attributePath, uint8_t type, uint16_t size, - uint8_t * value) -{ - ClusterId clusterId = attributePath.mClusterId; - AttributeId attributeId = attributePath.mAttributeId; - ChipLogProgress(Zcl, "Cluster callback: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); - - if (clusterId == HepaFilterMonitoring::Id && attributeId == HepaFilterMonitoring::Attributes::DegradationDirection::Id) - { - static_assert(sizeof(HepaFilterMonitoring::DegradationDirectionEnum) == 1, "Wrong size"); - HepaFilterMonitoring::DegradationDirectionEnum HepaFilterState = - *(reinterpret_cast(value)); - ChipLogProgress(Zcl, "Hepa Filter Monitoring cluster: " ChipLogFormatMEI " state %d", ChipLogValueMEI(clusterId), - to_underlying(HepaFilterState)); - } - else if (clusterId == ActivatedCarbonFilterMonitoring::Id && - attributeId == ActivatedCarbonFilterMonitoring::Attributes::DegradationDirection::Id) - { - static_assert(sizeof(ActivatedCarbonFilterMonitoring::DegradationDirectionEnum) == 1, "Wrong size"); - ActivatedCarbonFilterMonitoring::DegradationDirectionEnum CarbonFilterState = - *(reinterpret_cast(value)); - ChipLogProgress(Zcl, "Activated Carbon Filter cluster: " ChipLogFormatMEI " state %d", ChipLogValueMEI(clusterId), - to_underlying(CarbonFilterState)); - } -} - -/** @brief Hepa Filter Monitoring Cluster Init - * - * This function is called when a specific cluster is initialized. It gives the - * application an opportunity to take care of cluster initialization procedures. - * It is called exactly once for each endpoint where cluster is present. - * - * @param endpoint Ver.: always - * - */ -void emberAfHepaFilterMonitoringClusterInitCallback(EndpointId endpoint) -{ - // TODO: implement any additional Cluster Server init actions -} - -/** @brief Activated Carbon Filter Monitoring Cluster Init - * - * This function is called when a specific cluster is initialized. It gives the - * application an opportunity to take care of cluster initialization procedures. - * It is called exactly once for each endpoint where cluster is present. - * - * @param endpoint Ver.: always - * - */ -void emberAfActivatedCarbonFilterMonitoringClusterInitCallback(EndpointId endpoint) -{ - // TODO: implement any additional Cluster Server init actions -} diff --git a/examples/resource-monitoring-app/telink/third_party/connectedhomeip b/examples/resource-monitoring-app/telink/third_party/connectedhomeip deleted file mode 120000 index c866b86874994d..00000000000000 --- a/examples/resource-monitoring-app/telink/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../.. \ No newline at end of file diff --git a/examples/rvc-app/rvc-common/rvc-app.matter b/examples/rvc-app/rvc-common/rvc-app.matter index 224a8462ea9e7e..03773df659e16b 100644 --- a/examples/rvc-app/rvc-common/rvc-app.matter +++ b/examples/rvc-app/rvc-common/rvc-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -82,6 +86,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -154,6 +160,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -243,6 +251,8 @@ server cluster BasicInformation = 40 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -307,6 +317,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -464,6 +476,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -501,6 +515,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -612,6 +628,8 @@ server cluster GeneralDiagnostics = 51 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -657,6 +675,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -773,6 +793,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -845,6 +867,8 @@ server cluster GroupKeyManagement = 63 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster RvcRunMode = 84 { + revision 2; + enum ModeTag : enum16 { kIdle = 16384; kCleaning = 16385; @@ -899,6 +923,8 @@ server cluster RvcRunMode = 84 { /** Attributes and commands for selecting a mode from a list of supported options. */ server cluster RvcCleanMode = 85 { + revision 2; + enum ModeTag : enum16 { kDeepClean = 16384; kVacuum = 16385; @@ -947,6 +973,8 @@ server cluster RvcCleanMode = 85 { /** This cluster supports remotely monitoring and, where supported, changing the operational state of a Robotic Vacuum. */ server cluster RvcOperationalState = 97 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kFailedToFindChargingDock = 64; kStuck = 65; diff --git a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter index 38f42d6178b908..88bcba64554ddc 100644 --- a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter +++ b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -151,6 +157,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -223,6 +231,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -312,6 +322,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -386,6 +398,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -464,6 +478,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -479,6 +495,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -516,6 +534,8 @@ server cluster TimeFormatLocalization = 44 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -748,6 +768,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -812,6 +834,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -969,6 +993,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1006,6 +1032,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1117,6 +1145,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1151,6 +1181,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1314,6 +1346,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1359,6 +1393,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1475,6 +1511,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1548,6 +1586,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1564,6 +1604,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1580,6 +1622,8 @@ server cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ server cluster IcdManagement = 70 { + revision 2; + bitmap Feature : bitmap32 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; @@ -1648,6 +1692,8 @@ server cluster IcdManagement = 70 { /** This cluster provides an interface for observing and managing the state of smoke and CO alarms. */ server cluster SmokeCoAlarm = 92 { + revision 1; + enum AlarmStateEnum : enum8 { kNormal = 0; kWarning = 1; diff --git a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter index 74c4af426c3abc..b143f6f1eeae04 100644 --- a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter +++ b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter @@ -3,6 +3,8 @@ /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -36,6 +38,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -108,6 +112,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -197,6 +203,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -271,6 +279,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -349,6 +359,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -364,6 +376,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -404,6 +418,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -425,6 +441,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -489,6 +507,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -640,6 +660,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -677,6 +699,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -788,6 +812,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -817,6 +843,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -889,6 +917,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -928,6 +958,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -973,6 +1005,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1089,6 +1123,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1162,6 +1198,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1178,6 +1216,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1194,6 +1234,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ server cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; diff --git a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter index 0120c82d54af9d..e41f8fc45f88c9 100644 --- a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter +++ b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -51,6 +53,8 @@ client cluster Identify = 3 { /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -91,6 +95,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -160,6 +166,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -291,6 +299,8 @@ provisional server cluster Scenes = 5 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -321,6 +331,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -343,6 +355,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -415,6 +429,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -505,6 +521,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -579,6 +597,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -657,6 +677,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -672,6 +694,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -712,6 +736,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -733,6 +759,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -963,6 +991,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1027,6 +1057,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1184,6 +1216,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1295,6 +1329,8 @@ server cluster GeneralDiagnostics = 51 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1458,6 +1494,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1503,6 +1541,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1619,6 +1659,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1692,6 +1734,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1708,6 +1752,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1724,6 +1770,8 @@ server cluster UserLabel = 65 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; diff --git a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter index c97af9e72e22da..95fd9225885c95 100644 --- a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter +++ b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -51,6 +53,8 @@ client cluster Identify = 3 { /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -91,6 +95,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -160,6 +166,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -291,6 +299,8 @@ provisional server cluster Scenes = 5 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -321,6 +331,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -343,6 +355,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -415,6 +429,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -505,6 +521,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -579,6 +597,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -657,6 +677,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -672,6 +694,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -712,6 +736,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -733,6 +759,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -963,6 +991,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1027,6 +1057,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1184,6 +1216,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1295,6 +1329,8 @@ server cluster GeneralDiagnostics = 51 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1367,6 +1403,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1412,6 +1450,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1528,6 +1568,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1601,6 +1643,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1617,6 +1661,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1633,6 +1679,8 @@ server cluster UserLabel = 65 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index 82dff269065247..6db895f284557e 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -51,6 +53,8 @@ client cluster Identify = 3 { /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -97,6 +101,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -166,6 +172,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -196,6 +204,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -218,6 +228,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -290,6 +302,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -379,6 +393,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -453,6 +469,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -531,6 +549,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -546,6 +566,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -586,6 +608,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -607,6 +631,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -671,6 +697,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -828,6 +856,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -865,6 +895,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -976,6 +1008,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1008,6 +1042,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1171,6 +1207,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1245,6 +1283,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1282,6 +1322,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1327,6 +1369,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1443,6 +1487,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1516,6 +1562,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1532,6 +1580,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1548,6 +1598,8 @@ server cluster UserLabel = 65 { /** An interface for configuring and controlling the functionality of a thermostat. */ server cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -1644,6 +1696,8 @@ server cluster Thermostat = 513 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ server cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index 6fdb3513292735..75462f51dced59 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -49,6 +51,8 @@ server cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ server cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -157,6 +161,8 @@ server cluster LevelControl = 8 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -187,6 +193,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -206,6 +214,8 @@ client cluster Binding = 30 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -228,6 +238,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -300,6 +312,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -389,6 +403,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ server cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -463,6 +479,8 @@ server cluster OtaSoftwareUpdateProvider = 41 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -478,6 +496,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -518,6 +538,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -539,6 +561,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ client cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -606,6 +630,8 @@ client cluster GeneralCommissioning = 48 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -670,6 +696,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ client cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -848,6 +876,8 @@ client cluster NetworkCommissioning = 49 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1005,6 +1035,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1042,6 +1074,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1153,6 +1187,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1185,6 +1221,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1346,6 +1384,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1418,6 +1458,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1457,6 +1499,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1502,6 +1546,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ client cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1626,6 +1672,8 @@ client cluster OperationalCredentials = 62 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1742,6 +1790,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1815,6 +1865,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1831,6 +1883,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1847,6 +1901,8 @@ server cluster UserLabel = 65 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ server cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -1860,6 +1916,8 @@ server cluster RelativeHumidityMeasurement = 1029 { /** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ server cluster WakeOnLan = 1283 { + revision 1; // NOTE: Default/not specifically set + readonly attribute char_string<12> MACAddress = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1871,6 +1929,8 @@ server cluster WakeOnLan = 1283 { /** This cluster provides an interface for controlling the current Channel on a device. */ server cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -1936,6 +1996,8 @@ server cluster Channel = 1284 { /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ server cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -1971,6 +2033,8 @@ server cluster TargetNavigator = 1285 { /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ server cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -2043,6 +2107,8 @@ server cluster MediaPlayback = 1286 { /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ server cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -2095,6 +2161,8 @@ server cluster MediaInput = 1287 { /** This cluster provides an interface for managing low power mode on a device. */ server cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2107,6 +2175,8 @@ server cluster LowPower = 1288 { /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ server cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -2228,6 +2298,8 @@ server cluster KeypadInput = 1289 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ContentLauncher = 1290 { + revision 1; // NOTE: Default/not specifically set + enum MetricTypeEnum : enum8 { kPixels = 0; kPercentage = 1; @@ -2334,6 +2406,8 @@ server cluster ContentLauncher = 1290 { /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ server cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; @@ -2377,6 +2451,8 @@ server cluster AudioOutput = 1291 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ server cluster ApplicationLauncher = 1292 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kAppNotAvailable = 1; @@ -2431,6 +2507,8 @@ server cluster ApplicationLauncher = 1292 { /** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ server cluster ApplicationBasic = 1293 { + revision 1; // NOTE: Default/not specifically set + enum ApplicationStatusEnum : enum8 { kStopped = 0; kActiveVisibleFocus = 1; @@ -2461,6 +2539,8 @@ server cluster ApplicationBasic = 1293 { /** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ server cluster AccountLogin = 1294 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter index dabf87dce4771a..fadcb2ca00ce4e 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,6 +45,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -112,6 +116,8 @@ server cluster Groups = 4 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -182,6 +188,8 @@ client cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ client cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -305,6 +313,8 @@ client cluster LevelControl = 8 { /** An interface for reading the value of a binary measurement and accessing various characteristics of that measurement. */ server cluster BinaryInputBasic = 15 { + revision 1; // NOTE: Default/not specifically set + attribute boolean outOfService = 81; attribute boolean presentValue = 85; readonly attribute bitmap8 statusFlags = 111; @@ -318,6 +328,8 @@ server cluster BinaryInputBasic = 15 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ client cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -349,6 +361,8 @@ client cluster Descriptor = 29 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -379,6 +393,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -401,6 +417,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -473,6 +491,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -565,6 +585,8 @@ server cluster BasicInformation = 40 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -580,6 +602,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -620,6 +644,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -641,6 +667,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -705,6 +733,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -862,6 +892,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -973,6 +1005,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1005,6 +1039,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1077,6 +1113,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1116,6 +1154,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1161,6 +1201,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1277,6 +1319,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1342,6 +1386,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1358,6 +1404,8 @@ server cluster FixedLabel = 64 { /** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ client cluster WakeOnLan = 1283 { + revision 1; // NOTE: Default/not specifically set + readonly attribute optional char_string<12> MACAddress = 0; readonly attribute optional octet_string<16> linkLocalAddress = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -1370,6 +1418,8 @@ client cluster WakeOnLan = 1283 { /** This cluster provides an interface for controlling the current Channel on a device. */ client cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -1438,6 +1488,8 @@ client cluster Channel = 1284 { /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ client cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -1474,6 +1526,8 @@ client cluster TargetNavigator = 1285 { /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ client cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -1557,6 +1611,8 @@ client cluster MediaPlayback = 1286 { /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ client cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -1613,6 +1669,8 @@ client cluster MediaInput = 1287 { /** This cluster provides an interface for managing low power mode on a device. */ client cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1626,6 +1684,8 @@ client cluster LowPower = 1288 { /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ client cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -1748,6 +1808,8 @@ client cluster KeypadInput = 1289 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ContentLauncher = 1290 { + revision 1; // NOTE: Default/not specifically set + enum MetricTypeEnum : enum8 { kPixels = 0; kPercentage = 1; @@ -1856,6 +1918,8 @@ client cluster ContentLauncher = 1290 { /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ client cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; @@ -1901,6 +1965,8 @@ client cluster AudioOutput = 1291 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ApplicationLauncher = 1292 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kAppNotAvailable = 1; @@ -1958,6 +2024,8 @@ client cluster ApplicationLauncher = 1292 { /** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ client cluster ApplicationBasic = 1293 { + revision 1; // NOTE: Default/not specifically set + enum ApplicationStatusEnum : enum8 { kStopped = 0; kActiveVisibleFocus = 1; @@ -1988,6 +2056,8 @@ client cluster ApplicationBasic = 1293 { /** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ client cluster AccountLogin = 1294 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepository.kt b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepository.kt index cdc7e380a94699..1896289d5fda5b 100644 --- a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepository.kt +++ b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepository.kt @@ -1,11 +1,12 @@ package com.matter.virtual.device.app.core.data.repository.cluster +import com.matter.virtual.device.app.core.model.matter.LockState import kotlinx.coroutines.flow.StateFlow interface DoorLockManagerRepository { - fun getLockStateFlow(): StateFlow + fun getLockStateFlow(): StateFlow - suspend fun setLockState(value: Boolean) + suspend fun setLockState(lockState: LockState) suspend fun sendLockAlarmEvent() } diff --git a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepositoryImpl.kt b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepositoryImpl.kt index 4dfa15a01717e3..e6bf968ad2cd11 100644 --- a/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepositoryImpl.kt +++ b/examples/virtual-device-app/android/App/core/data/src/main/java/com/matter/virtual/device/app/core/data/repository/cluster/DoorLockManagerRepositoryImpl.kt @@ -1,6 +1,7 @@ package com.matter.virtual.device.app.core.data.repository.cluster import com.matter.virtual.device.app.core.matter.manager.DoorLockManagerStub +import com.matter.virtual.device.app.core.model.matter.LockState import javax.inject.Inject import kotlinx.coroutines.flow.StateFlow import timber.log.Timber @@ -9,13 +10,13 @@ internal class DoorLockManagerRepositoryImpl @Inject constructor(private val doorLockManagerStub: DoorLockManagerStub) : DoorLockManagerRepository { - override fun getLockStateFlow(): StateFlow { + override fun getLockStateFlow(): StateFlow { return doorLockManagerStub.lockState } - override suspend fun setLockState(value: Boolean) { - Timber.d("setLockState():$value") - doorLockManagerStub.setLockState(value) + override suspend fun setLockState(lockState: LockState) { + Timber.d("setLockState():$lockState") + doorLockManagerStub.setLockState(lockState) } override suspend fun sendLockAlarmEvent() { diff --git a/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/GetLockStateFlowUseCase.kt b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/GetLockStateFlowUseCase.kt index b167997c0294e2..d8fd4cf8bbbb5a 100644 --- a/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/GetLockStateFlowUseCase.kt +++ b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/GetLockStateFlowUseCase.kt @@ -1,6 +1,7 @@ package com.matter.virtual.device.app.core.domain.usecase.matter.cluster.doorlock import com.matter.virtual.device.app.core.data.repository.cluster.DoorLockManagerRepository +import com.matter.virtual.device.app.core.model.matter.LockState import javax.inject.Inject import kotlinx.coroutines.flow.StateFlow @@ -8,5 +9,5 @@ class GetLockStateFlowUseCase @Inject constructor(private val doorLockManagerRepository: DoorLockManagerRepository) { - operator fun invoke(): StateFlow = doorLockManagerRepository.getLockStateFlow() + operator fun invoke(): StateFlow = doorLockManagerRepository.getLockStateFlow() } diff --git a/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SetLockStateUseCase.kt b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SetLockStateUseCase.kt index 3bec41f20a59f8..02e5cdb3c16b72 100644 --- a/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SetLockStateUseCase.kt +++ b/examples/virtual-device-app/android/App/core/domain/src/main/java/com/matter/virtual/device/app/core/domain/usecase/matter/cluster/doorlock/SetLockStateUseCase.kt @@ -3,6 +3,7 @@ package com.matter.virtual.device.app.core.domain.usecase.matter.cluster.doorloc import com.matter.virtual.device.app.core.common.di.IoDispatcher import com.matter.virtual.device.app.core.data.repository.cluster.DoorLockManagerRepository import com.matter.virtual.device.app.core.domain.CoroutineUseCase +import com.matter.virtual.device.app.core.model.matter.LockState import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher @@ -11,9 +12,9 @@ class SetLockStateUseCase constructor( private val doorLockManagerRepository: DoorLockManagerRepository, @IoDispatcher dispatcher: CoroutineDispatcher -) : CoroutineUseCase(dispatcher) { +) : CoroutineUseCase(dispatcher) { - override suspend fun execute(param: Boolean) { + override suspend fun execute(param: LockState) { doorLockManagerRepository.setLockState(param) } } diff --git a/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/manager/DoorLockManagerStub.kt b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/manager/DoorLockManagerStub.kt index 11320142e1d89d..a1d050eb4fa570 100644 --- a/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/manager/DoorLockManagerStub.kt +++ b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/manager/DoorLockManagerStub.kt @@ -3,6 +3,7 @@ package com.matter.virtual.device.app.core.matter.manager import com.matter.virtual.device.app.DeviceApp import com.matter.virtual.device.app.DoorLockManager import com.matter.virtual.device.app.core.common.MatterConstants +import com.matter.virtual.device.app.core.model.matter.LockState import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.flow.MutableStateFlow @@ -12,14 +13,14 @@ import timber.log.Timber @Singleton class DoorLockManagerStub @Inject constructor(private val deviceApp: DeviceApp) : DoorLockManager { - private val _lockState = MutableStateFlow(false) - val lockState: StateFlow + private val _lockState = MutableStateFlow(LockState.LOCKED) + val lockState: StateFlow get() = _lockState override fun initAttributeValue() { Timber.d("initAttributeValue()") deviceApp.setLockType(MatterConstants.DEFAULT_ENDPOINT, DoorLockManager.DlLockType_kMagnetic) - deviceApp.setLockState(MatterConstants.DEFAULT_ENDPOINT, lockState.value.asLockState()) + deviceApp.setLockState(MatterConstants.DEFAULT_ENDPOINT, DoorLockManager.DlLockState_kLocked) deviceApp.setActuatorEnabled(MatterConstants.DEFAULT_ENDPOINT, true) deviceApp.setOperatingMode( MatterConstants.DEFAULT_ENDPOINT, @@ -33,12 +34,12 @@ class DoorLockManagerStub @Inject constructor(private val deviceApp: DeviceApp) override fun handleLockStateChanged(value: Int) { Timber.d("handleLockStateChanged():$value") - _lockState.value = value.asBooleanLockState() + _lockState.value = value.asLockStateEnum() } - fun setLockState(value: Boolean) { - Timber.d("setLockState():$value") - deviceApp.setLockState(MatterConstants.DEFAULT_ENDPOINT, value.asLockState()) + fun setLockState(lockState: LockState) { + Timber.d("setLockState():$lockState") + deviceApp.setLockState(MatterConstants.DEFAULT_ENDPOINT, lockState.asLockState()) } fun sendLockAlarmEvent() { @@ -46,16 +47,21 @@ class DoorLockManagerStub @Inject constructor(private val deviceApp: DeviceApp) deviceApp.sendLockAlarmEvent(MatterConstants.DEFAULT_ENDPOINT) } - private fun Boolean.asLockState() = + private fun LockState.asLockState() = when (this) { - true -> DoorLockManager.DlLockState_kUnlocked - false -> DoorLockManager.DlLockState_kLocked + LockState.NOT_FULLY_LOCKED -> DoorLockManager.DlLockState_kNotFullyLocked + LockState.LOCKED -> DoorLockManager.DlLockState_kLocked + LockState.UNLOCKED -> DoorLockManager.DlLockState_kUnlocked + LockState.UNLATCHED -> DoorLockManager.DlLockState_kUnlatched + else -> DoorLockManager.DlLockState_kUnknownEnumValue } - private fun Int.asBooleanLockState() = + private fun Int.asLockStateEnum() = when (this) { - DoorLockManager.DlLockState_kUnlocked -> true - DoorLockManager.DlLockState_kLocked -> false - else -> false + DoorLockManager.DlLockState_kNotFullyLocked -> LockState.NOT_FULLY_LOCKED + DoorLockManager.DlLockState_kLocked -> LockState.LOCKED + DoorLockManager.DlLockState_kUnlocked -> LockState.UNLOCKED + DoorLockManager.DlLockState_kUnlatched -> LockState.UNLATCHED + else -> LockState.UNKNOWN_ENUM_VALUE } } diff --git a/examples/virtual-device-app/android/App/core/model/src/main/java/com/matter/virtual/device/app/core/model/matter/LockState.kt b/examples/virtual-device-app/android/App/core/model/src/main/java/com/matter/virtual/device/app/core/model/matter/LockState.kt new file mode 100644 index 00000000000000..b9ce0a8dbe77b2 --- /dev/null +++ b/examples/virtual-device-app/android/App/core/model/src/main/java/com/matter/virtual/device/app/core/model/matter/LockState.kt @@ -0,0 +1,9 @@ +package com.matter.virtual.device.app.core.model.matter + +enum class LockState { + NOT_FULLY_LOCKED, + LOCKED, + UNLOCKED, + UNLATCHED, + UNKNOWN_ENUM_VALUE +} diff --git a/examples/virtual-device-app/android/App/feature/closure/build.gradle.kts b/examples/virtual-device-app/android/App/feature/closure/build.gradle.kts index 455f2013f3935e..044d998e28535a 100644 --- a/examples/virtual-device-app/android/App/feature/closure/build.gradle.kts +++ b/examples/virtual-device-app/android/App/feature/closure/build.gradle.kts @@ -47,12 +47,14 @@ dependencies { implementation(project(":core:common")) implementation(project(":core:domain")) + implementation(project(":core:model")) implementation(project(":core:ui")) implementation(Deps.AndroidX.core) implementation(Deps.AndroidX.appcompat) implementation(Deps.AndroidX.fragment) implementation(Deps.AndroidX.Lifecycle.viewmodel) + implementation(Deps.AndroidX.Lifecycle.livedata) implementation(Deps.Kotlin.serialization) diff --git a/examples/virtual-device-app/android/App/feature/closure/src/main/java/com/matter/virtual/device/app/feature/closure/DoorLockViewModel.kt b/examples/virtual-device-app/android/App/feature/closure/src/main/java/com/matter/virtual/device/app/feature/closure/DoorLockViewModel.kt index 35a9a19ff634f4..4f9b0b3a48ce55 100644 --- a/examples/virtual-device-app/android/App/feature/closure/src/main/java/com/matter/virtual/device/app/feature/closure/DoorLockViewModel.kt +++ b/examples/virtual-device-app/android/App/feature/closure/src/main/java/com/matter/virtual/device/app/feature/closure/DoorLockViewModel.kt @@ -1,17 +1,100 @@ package com.matter.virtual.device.app.feature.closure +import androidx.lifecycle.LiveData import androidx.lifecycle.SavedStateHandle +import androidx.lifecycle.asLiveData +import androidx.lifecycle.viewModelScope +import com.matter.virtual.device.app.core.common.successOr +import com.matter.virtual.device.app.core.domain.usecase.matter.IsFabricRemovedUseCase +import com.matter.virtual.device.app.core.domain.usecase.matter.StartMatterAppServiceUseCase +import com.matter.virtual.device.app.core.domain.usecase.matter.cluster.doorlock.GetLockStateFlowUseCase +import com.matter.virtual.device.app.core.domain.usecase.matter.cluster.doorlock.SendLockAlarmEventUseCase +import com.matter.virtual.device.app.core.domain.usecase.matter.cluster.doorlock.SetLockStateUseCase +import com.matter.virtual.device.app.core.domain.usecase.matter.cluster.powersource.GetBatPercentRemainingUseCase +import com.matter.virtual.device.app.core.domain.usecase.matter.cluster.powersource.SetBatPercentRemainingUseCase +import com.matter.virtual.device.app.core.model.matter.LockState import com.matter.virtual.device.app.core.ui.BaseViewModel import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch import timber.log.Timber @HiltViewModel -class DoorLockViewModel @Inject constructor(savedStateHandle: SavedStateHandle) : - BaseViewModel(savedStateHandle) { +class DoorLockViewModel +@Inject +constructor( + getLockStateFlowUseCase: GetLockStateFlowUseCase, + getBatPercentRemainingUseCase: GetBatPercentRemainingUseCase, + private val setLockStateUseCase: SetLockStateUseCase, + private val sendLockAlarmEventUseCase: SendLockAlarmEventUseCase, + private val setBatPercentRemainingUseCase: SetBatPercentRemainingUseCase, + private val startMatterAppServiceUseCase: StartMatterAppServiceUseCase, + private val isFabricRemovedUseCase: IsFabricRemovedUseCase, + savedStateHandle: SavedStateHandle +) : BaseViewModel(savedStateHandle) { + + private val _lockState: StateFlow = getLockStateFlowUseCase() + val lockState: LiveData + get() = _lockState.asLiveData() + + private val _batteryRemainingPercentage: MutableStateFlow = + getBatPercentRemainingUseCase() as MutableStateFlow + val batteryRemainingPercentage: LiveData + get() = _batteryRemainingPercentage.asLiveData() + + init { + viewModelScope.launch { startMatterAppServiceUseCase(matterSettings) } + + viewModelScope.launch { + val isFabricRemoved = isFabricRemovedUseCase().successOr(false) + if (isFabricRemoved) { + Timber.d("Fabric Removed") + onFabricRemoved() + } + } + } override fun onCleared() { Timber.d("onCleared()") super.onCleared() } + + fun onClickButton() { + Timber.d("onClickButton()") + viewModelScope.launch { + Timber.d("current lockState value = ${_lockState.value}") + if (_lockState.value == LockState.LOCKED) { + Timber.d("set value = unlocked") + setLockStateUseCase(LockState.UNLOCKED) + } else { + Timber.d("set value = locked") + setLockStateUseCase(LockState.LOCKED) + } + } + } + + fun onClickSendLockAlarmEventButton() { + Timber.d("onClickSendLockAlarmEventButton()") + viewModelScope.launch { + if (_lockState.value == LockState.LOCKED) { + // if lockState == locked, send alarm event and change the lockState to unlocked + sendLockAlarmEventUseCase() + setLockStateUseCase(LockState.UNLOCKED) + } + } + } + + fun updateBatterySeekbarProgress(progress: Int) { + _batteryRemainingPercentage.value = progress + } + + fun updateBatteryStatusToCluster(progress: Int) { + Timber.d("progress:$progress") + viewModelScope.launch { + updateBatterySeekbarProgress(progress) + setBatPercentRemainingUseCase(progress) + } + } } diff --git a/examples/virtual-device-app/android/java/src/com/matter/virtual/device/app/DoorLockManager.java b/examples/virtual-device-app/android/java/src/com/matter/virtual/device/app/DoorLockManager.java index 6e0366791c082a..3dacb3ff452db4 100644 --- a/examples/virtual-device-app/android/java/src/com/matter/virtual/device/app/DoorLockManager.java +++ b/examples/virtual-device-app/android/java/src/com/matter/virtual/device/app/DoorLockManager.java @@ -6,6 +6,7 @@ public interface DoorLockManager { int DlLockState_kLocked = 1; int DlLockState_kUnlocked = 2; int DlLockState_kUnlatched = 3; + int DlLockState_kUnknownEnumValue = 4; int DlLockType_kDeadBolt = 0; int DlLockType_kMagnetic = 1; diff --git a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter index 0ac18cb306965c..5453bdcd574f55 100644 --- a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter +++ b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional server cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -249,6 +255,8 @@ provisional server cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ server cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -313,6 +321,8 @@ server cluster OnOff = 6 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -343,6 +353,8 @@ server cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ server cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -365,6 +377,8 @@ server cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -437,6 +451,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -527,6 +543,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ server cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -601,6 +619,8 @@ server cluster OtaSoftwareUpdateProvider = 41 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -616,6 +636,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -656,6 +678,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -677,6 +701,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -907,6 +933,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -971,6 +999,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1128,6 +1158,8 @@ server cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ server cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1165,6 +1197,8 @@ server cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1276,6 +1310,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1308,6 +1344,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1469,6 +1507,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1541,6 +1581,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1580,6 +1622,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1625,6 +1669,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1741,6 +1787,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1814,6 +1862,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1830,6 +1880,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1846,6 +1898,8 @@ server cluster UserLabel = 65 { /** An interface to a generic way to secure a door */ server cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; @@ -2404,6 +2458,8 @@ server cluster DoorLock = 257 { /** Attributes and commands for controlling the color properties of a color-capable light. */ server cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index 7d67b87aadcb3e..09ab8c4dae19a0 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ server cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -49,6 +51,8 @@ server cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ server cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -118,6 +122,8 @@ server cluster Groups = 4 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ server cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -151,6 +157,8 @@ server cluster Descriptor = 29 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ server cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -223,6 +231,8 @@ server cluster AccessControl = 31 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ server cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -312,6 +322,8 @@ server cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -386,6 +398,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ server cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -464,6 +478,8 @@ server cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ server cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -479,6 +495,8 @@ server cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ server cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -519,6 +537,8 @@ server cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ server cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -539,6 +559,8 @@ server cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ server cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -774,6 +796,8 @@ server cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ server cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -838,6 +862,8 @@ server cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ server cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -995,6 +1021,8 @@ server cluster NetworkCommissioning = 49 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1106,6 +1134,8 @@ server cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1140,6 +1170,8 @@ server cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ server cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1303,6 +1335,8 @@ server cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1377,6 +1411,8 @@ server cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ server cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1414,6 +1450,8 @@ server cluster EthernetNetworkDiagnostics = 55 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ server cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1459,6 +1497,8 @@ server cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ server cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1575,6 +1615,8 @@ server cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ server cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1648,6 +1690,8 @@ server cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ server cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1664,6 +1708,8 @@ server cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ server cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -1680,6 +1726,8 @@ server cluster UserLabel = 65 { /** Provides an interface for controlling and adjusting automatic window coverings. */ server cluster WindowCovering = 258 { + revision 5; + enum EndProductType : enum8 { kRollerShade = 0; kRomanShade = 1; diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index 025a9debcd82c1..1a3f6c8973c149 100755 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -137,7 +137,8 @@ def BuildHostTarget(): TargetPart('refrigerator', app=HostApp.REFRIGERATOR), TargetPart('rvc', app=HostApp.RVC), TargetPart('air-purifier', app=HostApp.AIR_PURIFIER), - TargetPart('lit-icd', app=HostApp.LIT_ICD) + TargetPart('lit-icd', app=HostApp.LIT_ICD), + TargetPart('air-quality-sensor', app=HostApp.AIR_QUALITY_SENSOR), ] if (HostBoard.NATIVE.PlatformName() == 'darwin'): @@ -719,7 +720,6 @@ def BuildTelinkTarget(): TargetPart('ota-requestor', app=TelinkApp.OTA_REQUESTOR), TargetPart('pump', app=TelinkApp.PUMP), TargetPart('pump-controller', app=TelinkApp.PUMP_CONTROLLER), - TargetPart('resource-monitoring', app=TelinkApp.RESOURCE_MONITORING), TargetPart('shell', app=TelinkApp.SHELL), TargetPart('smoke-co-alarm', app=TelinkApp.SMOKE_CO_ALARM), TargetPart('temperature-measurement', diff --git a/scripts/build/builders/host.py b/scripts/build/builders/host.py index 32b437c3553d0f..ae388b9c4044de 100644 --- a/scripts/build/builders/host.py +++ b/scripts/build/builders/host.py @@ -75,6 +75,7 @@ class HostApp(Enum): RVC = auto() AIR_PURIFIER = auto() LIT_ICD = auto() + AIR_QUALITY_SENSOR = auto() def ExamplePath(self): if self == HostApp.ALL_CLUSTERS: @@ -133,6 +134,8 @@ def ExamplePath(self): return 'air-purifier-app/linux' elif self == HostApp.LIT_ICD: return 'lit-icd-app/linux' + elif self == HostApp.AIR_QUALITY_SENSOR: + return 'air-quality-sensor-app/linux' else: raise Exception('Unknown app type: %r' % self) diff --git a/scripts/build/builders/telink.py b/scripts/build/builders/telink.py index 72ba965c69b1f5..4eb7b3f1ff4005 100644 --- a/scripts/build/builders/telink.py +++ b/scripts/build/builders/telink.py @@ -32,7 +32,6 @@ class TelinkApp(Enum): OTA_REQUESTOR = auto() PUMP = auto() PUMP_CONTROLLER = auto() - RESOURCE_MONITORING = auto() SHELL = auto() SMOKE_CO_ALARM = auto() TEMPERATURE_MEASUREMENT = auto() @@ -62,8 +61,6 @@ def ExampleName(self): return 'pump-app' elif self == TelinkApp.PUMP_CONTROLLER: return 'pump-controller-app' - elif self == TelinkApp.RESOURCE_MONITORING: - return 'resource-monitoring-app' elif self == TelinkApp.SHELL: return 'shell' elif self == TelinkApp.SMOKE_CO_ALARM: diff --git a/scripts/build/testdata/all_targets_linux_x64.txt b/scripts/build/testdata/all_targets_linux_x64.txt index 499be44e7f8b4b..b9e6a64896108e 100644 --- a/scripts/build/testdata/all_targets_linux_x64.txt +++ b/scripts/build/testdata/all_targets_linux_x64.txt @@ -10,7 +10,7 @@ efr32-{brd4161a,brd4187c,brd4186c,brd4163a,brd4164a,brd4166a,brd4170a,brd4186a,b esp32-{m5stack,c3devkit,devkitc,qemu}-{all-clusters,all-clusters-minimal,ota-provider,ota-requestor,shell,light,lock,bridge,temperature-measurement,ota-requestor,tests}[-rpc][-ipv6only][-tracing] genio-lighting-app linux-fake-tests[-mbedtls][-boringssl][-asan][-tsan][-ubsan][-libfuzzer][-ossfuzz][-coverage][-dmalloc][-clang] -linux-{x64,arm64}-{rpc-console,all-clusters,all-clusters-minimal,chip-tool,thermostat,java-matter-controller,kotlin-matter-controller,minmdns,light,lock,shell,ota-provider,ota-requestor,simulated-app1,simulated-app2,python-bindings,tv-app,tv-casting-app,bridge,tests,chip-cert,address-resolve-tool,contact-sensor,dishwasher,microwave-oven,refrigerator,rvc,air-purifier,lit-icd}[-nodeps][-platform-mdns][-minmdns-verbose][-libnl][-same-event-loop][-no-interactive][-ipv6only][-no-ble][-no-wifi][-no-thread][-mbedtls][-boringssl][-asan][-tsan][-ubsan][-libfuzzer][-ossfuzz][-coverage][-dmalloc][-clang][-test][-rpc][-with-ui] +linux-{x64,arm64}-{rpc-console,all-clusters,all-clusters-minimal,chip-tool,thermostat,java-matter-controller,kotlin-matter-controller,minmdns,light,lock,shell,ota-provider,ota-requestor,simulated-app1,simulated-app2,python-bindings,tv-app,tv-casting-app,bridge,tests,chip-cert,address-resolve-tool,contact-sensor,dishwasher,microwave-oven,refrigerator,rvc,air-purifier,lit-icd,air-quality-sensor}[-nodeps][-platform-mdns][-minmdns-verbose][-libnl][-same-event-loop][-no-interactive][-ipv6only][-no-ble][-no-wifi][-no-thread][-mbedtls][-boringssl][-asan][-tsan][-ubsan][-libfuzzer][-ossfuzz][-coverage][-dmalloc][-clang][-test][-rpc][-with-ui] linux-x64-efr32-test-runner[-clang] imx-{chip-tool,lighting-app,thermostat,all-clusters-app,all-clusters-minimal-app,ota-provider-app}[-release] infineon-psoc6-{lock,light,all-clusters,all-clusters-minimal}[-ota][-updateimage] @@ -22,5 +22,5 @@ nrf-native-posix-64-tests qpg-qpg6105-{lock,light,shell,persistent-storage}[-updateimage] stm32-stm32wb5mm-dk-light tizen-arm-{all-clusters,all-clusters-minimal,chip-tool,light,tests}[-no-ble][-no-thread][-no-wifi][-asan][-ubsan][-with-ui] -telink-{tlsr9518adk80d,tlsr9528a,tlsr9528a_retention}-{air-quality-sensor,all-clusters,all-clusters-minimal,bridge,contact-sensor,light,light-switch,lock,ota-requestor,pump,pump-controller,resource-monitoring,shell,smoke-co-alarm,temperature-measurement,thermostat,window-covering}[-ota][-dfu][-shell][-rpc][-factory-data][-4mb][-mars] +telink-{tlsr9518adk80d,tlsr9528a,tlsr9528a_retention}-{air-quality-sensor,all-clusters,all-clusters-minimal,bridge,contact-sensor,light,light-switch,lock,ota-requestor,pump,pump-controller,shell,smoke-co-alarm,temperature-measurement,thermostat,window-covering}[-ota][-dfu][-shell][-rpc][-factory-data][-4mb][-mars] openiotsdk-{shell,lock}[-mbedtls][-psa] diff --git a/scripts/checkout_submodules.py b/scripts/checkout_submodules.py index e1c8eb888fcc99..ad9417212b3438 100755 --- a/scripts/checkout_submodules.py +++ b/scripts/checkout_submodules.py @@ -33,7 +33,7 @@ 'cc13xx_26xx', 'cc32xx', 'darwin', - 'efr32', + 'silabs', 'esp32', 'infineon', 'k32w', diff --git a/scripts/flashing/esp32_firmware_utils.py b/scripts/flashing/esp32_firmware_utils.py index a61e93097a174e..74c07cfa81a433 100755 --- a/scripts/flashing/esp32_firmware_utils.py +++ b/scripts/flashing/esp32_firmware_utils.py @@ -86,7 +86,7 @@ # Tool configuration options. 'esptool': { 'help': 'File name of the esptool executable', - 'default': None, + 'default': 'esptool.py', 'argparse': { 'metavar': 'FILE', }, @@ -103,9 +103,8 @@ """\ Unable to execute {esptool}. - Please ensure that this tool is installed and - that $IDF_PATH is set. See the ESP32 example - README for installation instructions. + Please ensure that the esptool Python package is available. + See the ESP32 setup guide for instructions. """, }, 'parttool': { @@ -308,7 +307,6 @@ def read_sdkconfig(self, filename): return result IDF_PATH_TOOLS = { - 'esptool': 'components/esptool_py/esptool/esptool.py', 'parttool': 'components/partition_table/parttool.py', } diff --git a/scripts/py_matter_idl/matter_idl/README.md b/scripts/py_matter_idl/matter_idl/README.md index 1cd4a28cc325bb..5bb8b40da087bc 100644 --- a/scripts/py_matter_idl/matter_idl/README.md +++ b/scripts/py_matter_idl/matter_idl/README.md @@ -39,6 +39,10 @@ struct LabelStruct { // Every cluster has an identifier that is defined by the matter spec (31 in this case) server cluster AccessControl = 31 { + // Revision of the cluster being described here + // If not specified, it is assumed to be 1 + revision 3; + // Enums and structs can be defined globally or be cluster specific. // IDL generation rules will take into account scoping (i.e. pick local defined // name first, things defined in one cluster are not visible in another). diff --git a/scripts/py_matter_idl/matter_idl/generators/idl/MatterIdl.jinja b/scripts/py_matter_idl/matter_idl/generators/idl/MatterIdl.jinja index 91e978a44c7b07..edfb2989668e84 100644 --- a/scripts/py_matter_idl/matter_idl/generators/idl/MatterIdl.jinja +++ b/scripts/py_matter_idl/matter_idl/generators/idl/MatterIdl.jinja @@ -36,53 +36,42 @@ {% if cluster.description %}/** {{cluster.description}} */ {% endif %} {{cluster.api_maturity | idltxt}}{{cluster.side | idltxt}} cluster {{cluster.name}} = {{cluster.code}} { - {%- for enum in cluster.enums %} + revision {{cluster.revision}}; + {% for enum in cluster.enums %} enum {{enum.name}} : {{ enum.base_type}} { {% for entry in enum.entries %} {{entry.name}} = {{entry.code}}; {% endfor %} } + {% endfor %} {%- for bitmap in cluster.bitmaps %} - bitmap {{bitmap.name}} : {{ bitmap.base_type}} { {% for entry in bitmap.entries %} {{entry.name}} = 0x{{"%X" | format(entry.code)}}; {% endfor %} } + {% endfor %} {%- for s in cluster.structs | rejectattr("tag") %} - {% if loop.first %} - - {% endif %} {{render_struct(s)}} - {% if not loop.last %} - {% endif %} {% endfor %} {%- for e in cluster.events %} - {% if loop.first %} - - {% endif %} {##} {##}{% if e.qualities %}{{e.qualities | idltxt}} {% endif -%} {{e.priority | idltxt}} event {{e | event_access}}{{e.name}} = {{e.code}} { {% for field in e.fields %} {{render_field(field)}} {% endfor %} } - {% if not loop.last %} - {% endif %} {% endfor %} {%- for a in cluster.attributes %} - {% if loop.first %} - - {% endif %} {{a.qualities | idltxt}}attribute {{a | attribute_access}}{{render_field(a.definition)}} {% endfor %} diff --git a/scripts/py_matter_idl/matter_idl/matter_grammar.lark b/scripts/py_matter_idl/matter_idl/matter_grammar.lark index 35581dca4e6ea6..f498ce4f484fc2 100644 --- a/scripts/py_matter_idl/matter_idl/matter_grammar.lark +++ b/scripts/py_matter_idl/matter_idl/matter_grammar.lark @@ -61,11 +61,14 @@ command_with_access: "command"i command_access? id command: command_qualities command_with_access "(" id? ")" ":" id "=" positive_integer ";" -cluster: [maturity] cluster_side "cluster"i id "=" positive_integer "{" cluster_content* "}" +cluster_revision: "revision"i positive_integer ";" + +cluster: [maturity] cluster_side "cluster"i id "=" positive_integer "{" [cluster_revision] cluster_content* "}" ?cluster_side: "server"i -> server_cluster | "client"i -> client_cluster ?cluster_content: [maturity] (enum|bitmap|event|attribute|struct|request_struct|response_struct|command) + endpoint: "endpoint"i positive_integer "{" endpoint_content* "}" ?endpoint_content: endpoint_cluster_binding | endpoint_server_cluster | endpoint_device_type diff --git a/scripts/py_matter_idl/matter_idl/matter_idl_parser.py b/scripts/py_matter_idl/matter_idl/matter_idl_parser.py index ba909cb8fd24a8..967eb6ecc19a37 100755 --- a/scripts/py_matter_idl/matter_idl/matter_idl_parser.py +++ b/scripts/py_matter_idl/matter_idl/matter_idl_parser.py @@ -343,6 +343,10 @@ def event_with_access(self, args): return init_args + @v_args(inline=True) + def cluster_revision(self, revision): + return revision + def event(self, args): return Event(qualities=args[0], priority=args[1], code=args[3], fields=args[4:], **args[2]) @@ -485,7 +489,7 @@ def cluster_content(self, api_maturity, element): return element @v_args(inline=True, meta=True) - def cluster(self, meta, api_maturity, side, name, code, *content): + def cluster(self, meta, api_maturity, side, name, code, revision, *content): meta = None if self.skip_meta else ParseMetaData(meta) # shift actual starting position where the doc comment would start @@ -495,8 +499,11 @@ def cluster(self, meta, api_maturity, side, name, code, *content): if api_maturity is None: api_maturity = ApiMaturity.STABLE + if not revision: + revision = 1 + result = Cluster(parse_meta=meta, side=side, name=name, - code=code, api_maturity=api_maturity) + code=code, revision=revision, api_maturity=api_maturity) for item in content: if isinstance(item, Enum): diff --git a/scripts/py_matter_idl/matter_idl/matter_idl_types.py b/scripts/py_matter_idl/matter_idl/matter_idl_types.py index 2067cc4c58dab6..4be2ff20b85880 100644 --- a/scripts/py_matter_idl/matter_idl/matter_idl_types.py +++ b/scripts/py_matter_idl/matter_idl/matter_idl_types.py @@ -232,6 +232,7 @@ class Cluster: side: ClusterSide name: str code: int + revision: int = 1 enums: List[Enum] = field(default_factory=list) bitmaps: List[Bitmap] = field(default_factory=list) events: List[Event] = field(default_factory=list) diff --git a/scripts/py_matter_idl/matter_idl/test_idl_generator.py b/scripts/py_matter_idl/matter_idl/test_idl_generator.py index ea1347fb0e7d4c..9f40b111bff96f 100755 --- a/scripts/py_matter_idl/matter_idl/test_idl_generator.py +++ b/scripts/py_matter_idl/matter_idl/test_idl_generator.py @@ -17,7 +17,8 @@ import os import sys import unittest -from typing import Optional +from difflib import unified_diff +from typing import List, Optional try: from matter_idl.matter_idl_parser import CreateParser @@ -43,11 +44,12 @@ def get_existing_data(self, relative_path: str): def write_new_data(self, relative_path: str, content: str): if self.content: - raise Exception("Unexpected extra data: single file generation expected") + raise Exception( + "Unexpected extra data: single file generation expected") self.content = content -def ReadMatterIdl(repo_path: str) -> Idl: +def ReadMatterIdl(repo_path: str) -> str: path = os.path.join(os.path.dirname(__file__), "../../..", repo_path) with open(path, "rt") as stream: return stream.read() @@ -60,19 +62,38 @@ def ParseMatterIdl(repo_path: str, skip_meta: bool) -> Idl: def RenderAsIdlTxt(idl: Idl) -> str: storage = TestCaseStorage() IdlGenerator(storage=storage, idl=idl).render(dry_run=False) - return storage.content + return storage.content or "" -def SkipLeadingComments(txt: str) -> str: +def SkipLeadingComments(txt: str, also_strip: List[str] = list()) -> str: """Skips leading lines starting with // in a file. """ lines = txt.split("\n") idx = 0 while lines[idx].startswith("//") or not lines[idx]: idx = idx + 1 - return "\n".join(lines[idx:]) + + result = "\n".join(lines[idx:]) + + for s in also_strip: + result = result.replace(s, "") + + return result class TestIdlRendering(unittest.TestCase): + def assertTextEqual(self, a: str, b: str): + if a == b: + # seems the same. This will just pass + self.assertEqual(a, b) + return + + delta = unified_diff(a.splitlines(keepends=True), + b.splitlines(keepends=True), + fromfile='actual.matter', + tofile='expected.matter', + ) + self.assertEqual(a, b, '\n' + ''.join(delta)) + def test_client_clusters(self): # IDL renderer was updated to have IDENTICAL output for client side # cluster rendering, so this diff will be verbatim @@ -83,10 +104,12 @@ def test_client_clusters(self): path = "src/controller/data_model/controller-clusters.matter" # Files MUST be identical except the header comments which are different - original = SkipLeadingComments(ReadMatterIdl(path)) - generated = SkipLeadingComments(RenderAsIdlTxt(ParseMatterIdl(path, skip_meta=False))) + original = SkipLeadingComments(ReadMatterIdl(path), also_strip=[ + " // NOTE: Default/not specifically set"]) + generated = SkipLeadingComments(RenderAsIdlTxt( + ParseMatterIdl(path, skip_meta=False))) - self.assertEqual(original, generated) + self.assertTextEqual(original, generated) def test_app_rendering(self): # When endpoints are involved, default value formatting is lost diff --git a/scripts/py_matter_idl/matter_idl/test_matter_idl_parser.py b/scripts/py_matter_idl/matter_idl/test_matter_idl_parser.py index 3196f191e19805..c94fcb299c78fd 100755 --- a/scripts/py_matter_idl/matter_idl/test_matter_idl_parser.py +++ b/scripts/py_matter_idl/matter_idl/test_matter_idl_parser.py @@ -774,6 +774,22 @@ def test_emits_events(self): self.assertEqual(actual, expected) + def test_revision(self): + actual = parseText(""" + server cluster A = 1 { } // revision 1 implied + client cluster B = 2 { revision 1; } + client cluster C = 3 { revision 2; } + client cluster D = 4 { revision 123; } + """) + + expected = Idl(clusters=[ + Cluster(side=ClusterSide.SERVER, name="A", code=1, revision=1), + Cluster(side=ClusterSide.CLIENT, name="B", code=2, revision=1), + Cluster(side=ClusterSide.CLIENT, name="C", code=3, revision=2), + Cluster(side=ClusterSide.CLIENT, name="D", code=4, revision=123), + ]) + self.assertEqual(actual, expected) + def test_handle_commands(self): actual = parseText(""" endpoint 1 { diff --git a/src/app/CASESessionManager.h b/src/app/CASESessionManager.h index 8b803a0a10f0a2..7094c88f42e104 100644 --- a/src/app/CASESessionManager.h +++ b/src/app/CASESessionManager.h @@ -28,8 +28,6 @@ #include #include -#include - namespace chip { class OperationalSessionSetupPoolDelegate; diff --git a/src/app/clusters/level-control/level-control.cpp b/src/app/clusters/level-control/level-control.cpp index f12b20684f7b6d..ad394d1fc248b3 100644 --- a/src/app/clusters/level-control/level-control.cpp +++ b/src/app/clusters/level-control/level-control.cpp @@ -238,17 +238,15 @@ class DefaultLevelControlSceneHandler : public scenes::DefaultSceneHandlerImpl // TODO : Implement action on frequency when frequency not provisional anymore // if(LevelControlHasFeature(endpoint, LevelControl::Feature::kFrequency)){} - Status status; - CommandId command = LevelControlHasFeature(endpoint, LevelControl::Feature::kOnOff) ? Commands::MoveToLevelWithOnOff::Id - : Commands::MoveToLevel::Id; - status = moveToLevelHandler(endpoint, command, level, app::DataModel::MakeNullable(static_cast(timeMs / 100)), - chip::Optional>(), chip::Optional>(), - INVALID_STORED_LEVEL); - - if (status != Status::Success) + if (!chip::app::NumericAttributeTraits::IsNullValue(level)) { - return CHIP_ERROR_READ_FAILED; + CommandId command = LevelControlHasFeature(endpoint, LevelControl::Feature::kOnOff) ? Commands::MoveToLevelWithOnOff::Id + : Commands::MoveToLevel::Id; + + moveToLevelHandler(endpoint, command, level, app::DataModel::MakeNullable(static_cast(timeMs / 100)), + chip::Optional>(), chip::Optional>(), + INVALID_STORED_LEVEL); } return CHIP_NO_ERROR; diff --git a/src/app/clusters/network-commissioning/network-commissioning.cpp b/src/app/clusters/network-commissioning/network-commissioning.cpp index 471b6038b85b09..19ddd5025a7346 100644 --- a/src/app/clusters/network-commissioning/network-commissioning.cpp +++ b/src/app/clusters/network-commissioning/network-commissioning.cpp @@ -266,6 +266,21 @@ CHIP_ERROR Instance::Read(const ConcreteReadAttributePath & aPath, AttributeValu case Attributes::FeatureMap::Id: return aEncoder.Encode(mFeatureFlags); + case Attributes::SupportedWiFiBands::Id: + VerifyOrReturnError(mFeatureFlags.Has(Feature::kWiFiNetworkInterface), CHIP_NO_ERROR); + VerifyOrReturnError(mpDriver.Valid(), CHIP_NO_ERROR); + return aEncoder.Encode(mpDriver.Get()->GetSupportedWiFiBands()); + + case Attributes::SupportedThreadFeatures::Id: + VerifyOrReturnError(mFeatureFlags.Has(Feature::kThreadNetworkInterface), CHIP_NO_ERROR); + VerifyOrReturnError(mpDriver.Valid(), CHIP_NO_ERROR); + return aEncoder.Encode(mpDriver.Get()->GetSupportedThreadFeatures()); + + case Attributes::ThreadVersion::Id: + VerifyOrReturnError(mFeatureFlags.Has(Feature::kThreadNetworkInterface), CHIP_NO_ERROR); + VerifyOrReturnError(mpDriver.Valid(), CHIP_NO_ERROR); + return aEncoder.Encode(mpDriver.Get()->GetThreadVersion()); + default: return CHIP_NO_ERROR; } diff --git a/src/app/tests/TestReadInteraction.cpp b/src/app/tests/TestReadInteraction.cpp index dd163bcf210aa1..2ddc7d78fc64c6 100644 --- a/src/app/tests/TestReadInteraction.cpp +++ b/src/app/tests/TestReadInteraction.cpp @@ -76,41 +76,50 @@ static chip::System::Clock::ClockBase * gRealClock; class TestContext : public chip::Test::AppContext { public: - static int Initialize(void * context) + // Performs shared setup for all tests in the test suite + static int SetUpTestSuite(void * context) { gRealClock = &chip::System::SystemClock(); chip::System::Clock::Internal::SetSystemClockForTesting(&gMockClock); - if (AppContext::Initialize(context) != SUCCESS) return FAILURE; + return SUCCESS; + } - auto * ctx = static_cast(context); - - if (ctx->mEventCounter.Init(0) != CHIP_NO_ERROR) - { + // Performs shared teardown for all tests in the test suite + static int TearDownTestSuite(void * context) + { + chip::System::Clock::Internal::SetSystemClockForTesting(gRealClock); + if (AppContext::Finalize(context) != SUCCESS) return FAILURE; - } + return SUCCESS; + } - chip::app::LogStorageResources logStorageResources[] = { + // Performs setup for each individual test in the test suite + static int SetUp(void * context) + { + const chip::app::LogStorageResources logStorageResources[] = { { &gDebugEventBuffer[0], sizeof(gDebugEventBuffer), chip::app::PriorityLevel::Debug }, { &gInfoEventBuffer[0], sizeof(gInfoEventBuffer), chip::app::PriorityLevel::Info }, { &gCritEventBuffer[0], sizeof(gCritEventBuffer), chip::app::PriorityLevel::Critical }, }; + auto * ctx = static_cast(context); + VerifyOrReturnError(ctx->mEventCounter.Init(0) == CHIP_NO_ERROR, FAILURE); + + // Reinitialize the exchange manager before running each test, so the context + // pool will be guaranteed to be empty. + ctx->GetExchangeManager().Shutdown(); + VerifyOrReturnError(ctx->GetExchangeManager().Init(&ctx->GetSecureSessionManager()) == CHIP_NO_ERROR, FAILURE); chip::app::EventManagement::CreateEventManagement(&ctx->GetExchangeManager(), ArraySize(logStorageResources), gCircularEventBuffer, logStorageResources, &ctx->mEventCounter); - return SUCCESS; } - static int Finalize(void * context) + // Performs teardown for each individual test in the test suite + static int TearDown(void * context) { chip::app::EventManagement::DestroyEventManagement(); - chip::System::Clock::Internal::SetSystemClockForTesting(gRealClock); - - if (AppContext::Finalize(context) != SUCCESS) - return FAILURE; - return SUCCESS; } @@ -547,7 +556,6 @@ void TestReadInteraction::TestReadHandler(nlTestSuite * apSuite, void * apContex System::PacketBufferHandle reportDatabuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); System::PacketBufferHandle readRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); ReadRequestMessage::Builder readRequestBuilder; - MockInteractionModelApp delegate; NullReadHandlerCallback nullCallback; auto * engine = chip::app::InteractionModelEngine::GetInstance(); @@ -725,7 +733,6 @@ void TestReadInteraction::TestReadHandlerInvalidAttributePath(nlTestSuite * apSu System::PacketBufferHandle reportDatabuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); System::PacketBufferHandle readRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); ReadRequestMessage::Builder readRequestBuilder; - MockInteractionModelApp delegate; NullReadHandlerCallback nullCallback; auto * engine = chip::app::InteractionModelEngine::GetInstance(); @@ -1510,7 +1517,6 @@ void TestReadInteraction::TestProcessSubscribeRequest(nlTestSuite * apSuite, voi System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); SubscribeRequestMessage::Builder subscribeRequestBuilder; - MockInteractionModelApp delegate; auto * engine = chip::app::InteractionModelEngine::GetInstance(); err = engine->Init(&ctx.GetExchangeManager(), &ctx.GetFabricTable(), app::reporting::GetDefaultReportScheduler()); NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR); @@ -1576,7 +1582,6 @@ void TestReadInteraction::TestICDProcessSubscribeRequestSupMaxIntervalCeiling(nl System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); SubscribeRequestMessage::Builder subscribeRequestBuilder; - MockInteractionModelApp delegate; auto * engine = chip::app::InteractionModelEngine::GetInstance(); err = engine->Init(&ctx.GetExchangeManager(), &ctx.GetFabricTable(), app::reporting::GetDefaultReportScheduler()); NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR); @@ -1652,7 +1657,6 @@ void TestReadInteraction::TestICDProcessSubscribeRequestInfMaxIntervalCeiling(nl System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); SubscribeRequestMessage::Builder subscribeRequestBuilder; - MockInteractionModelApp delegate; auto * engine = chip::app::InteractionModelEngine::GetInstance(); err = engine->Init(&ctx.GetExchangeManager(), &ctx.GetFabricTable(), app::reporting::GetDefaultReportScheduler()); NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR); @@ -1728,7 +1732,6 @@ void TestReadInteraction::TestICDProcessSubscribeRequestSupMinInterval(nlTestSui System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); SubscribeRequestMessage::Builder subscribeRequestBuilder; - MockInteractionModelApp delegate; auto * engine = chip::app::InteractionModelEngine::GetInstance(); err = engine->Init(&ctx.GetExchangeManager(), &ctx.GetFabricTable(), app::reporting::GetDefaultReportScheduler()); NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR); @@ -1804,7 +1807,6 @@ void TestReadInteraction::TestICDProcessSubscribeRequestMaxMinInterval(nlTestSui System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); SubscribeRequestMessage::Builder subscribeRequestBuilder; - MockInteractionModelApp delegate; auto * engine = chip::app::InteractionModelEngine::GetInstance(); err = engine->Init(&ctx.GetExchangeManager(), &ctx.GetFabricTable(), app::reporting::GetDefaultReportScheduler()); NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR); @@ -1878,7 +1880,6 @@ void TestReadInteraction::TestICDProcessSubscribeRequestInvalidIdleModeDuration( System::PacketBufferTLVWriter writer; System::PacketBufferHandle subscribeRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize); SubscribeRequestMessage::Builder subscribeRequestBuilder; - MockInteractionModelApp delegate; auto * engine = chip::app::InteractionModelEngine::GetInstance(); err = engine->Init(&ctx.GetExchangeManager(), &ctx.GetFabricTable(), app::reporting::GetDefaultReportScheduler()); NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR); @@ -2016,7 +2017,6 @@ void TestReadInteraction::TestSubscribeRoundtrip(nlTestSuite * apSuite, void * a NL_TEST_ASSERT(apSuite, engine->ActiveHandlerAt(0) != nullptr); delegate.mpReadHandler = engine->ActiveHandlerAt(0); - NL_TEST_ASSERT(apSuite, delegate.mGotEventResponse); NL_TEST_ASSERT(apSuite, delegate.mGotReport); NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 2); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 1); @@ -2204,7 +2204,6 @@ void TestReadInteraction::TestSubscribeEarlyReport(nlTestSuite * apSuite, void * uint16_t maxInterval; delegate.mpReadHandler->GetReportingIntervals(minInterval, maxInterval); - NL_TEST_ASSERT(apSuite, delegate.mGotEventResponse); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 1); NL_TEST_ASSERT(apSuite, @@ -2292,6 +2291,9 @@ void TestReadInteraction::TestSubscribeEarlyReport(nlTestSuite * apSuite, void * NL_TEST_ASSERT(apSuite, reportScheduler->IsReportScheduled(delegate.mpReadHandler)); NL_TEST_ASSERT(apSuite, !InteractionModelEngine::GetInstance()->GetReportingEngine().IsRunScheduled()); } + + engine->Shutdown(); + NL_TEST_ASSERT(apSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0); } void TestReadInteraction::TestSubscribeUrgentWildcardEvent(nlTestSuite * apSuite, void * apContext) @@ -2357,8 +2359,6 @@ void TestReadInteraction::TestSubscribeUrgentWildcardEvent(nlTestSuite * apSuite NL_TEST_ASSERT(apSuite, engine->ActiveHandlerAt(1) != nullptr); delegate.mpReadHandler = engine->ActiveHandlerAt(1); - NL_TEST_ASSERT(apSuite, delegate.mGotEventResponse); - NL_TEST_ASSERT(apSuite, nonUrgentDelegate.mGotEventResponse); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 2); GenerateEvents(apSuite, apContext); @@ -2387,7 +2387,6 @@ void TestReadInteraction::TestSubscribeUrgentWildcardEvent(nlTestSuite * apSuite NL_TEST_ASSERT(apSuite, !nonUrgentDelegate.mGotEventResponse); // Advance monotonic timestamp for min interval to elapse - startTime = gMockClock.GetMonotonicTimestamp(); gMockClock.AdvanceMonotonic(System::Clock::Milliseconds32(800)); // Service Timer expired event @@ -2402,14 +2401,14 @@ void TestReadInteraction::TestSubscribeUrgentWildcardEvent(nlTestSuite * apSuite NL_TEST_ASSERT(apSuite, delegate.mGotEventResponse); NL_TEST_ASSERT(apSuite, !nonUrgentDelegate.mGotEventResponse); - // Since we just sent a report for our urgent subscription, the min interval of the urgent subcription should have been + // Since we just sent a report for our urgent subscription, the min interval of the urgent subscription should have been // updated NL_TEST_ASSERT(apSuite, reportScheduler->GetMinTimestampForHandler(delegate.mpReadHandler) > gMockClock.GetMonotonicTimestamp()); NL_TEST_ASSERT(apSuite, !delegate.mpReadHandler->IsDirty()); delegate.mGotEventResponse = false; - // For our non-urgent subscription, we did not send anything, so the min interval should of the non urgent subcription + // For our non-urgent subscription, we did not send anything, so the min interval should of the non urgent subscription // should be in the past NL_TEST_ASSERT(apSuite, reportScheduler->GetMinTimestampForHandler(nonUrgentDelegate.mpReadHandler) < @@ -3053,7 +3052,6 @@ void TestReadInteraction::TestPostSubscribeRoundtripStatusReportTimeout(nlTestSu NL_TEST_ASSERT(apSuite, engine->ActiveHandlerAt(0) != nullptr); delegate.mpReadHandler = engine->ActiveHandlerAt(0); - NL_TEST_ASSERT(apSuite, delegate.mGotEventResponse); NL_TEST_ASSERT(apSuite, delegate.mGotReport); NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 2); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 1); @@ -3427,7 +3425,6 @@ void TestReadInteraction::TestPostSubscribeRoundtripChunkStatusReportTimeout(nlT NL_TEST_ASSERT(apSuite, engine->ActiveHandlerAt(0) != nullptr); delegate.mpReadHandler = engine->ActiveHandlerAt(0); - NL_TEST_ASSERT(apSuite, delegate.mGotEventResponse); NL_TEST_ASSERT(apSuite, delegate.mGotReport); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 1); @@ -3532,7 +3529,6 @@ void TestReadInteraction::TestPostSubscribeRoundtripChunkReportTimeout(nlTestSui NL_TEST_ASSERT(apSuite, engine->ActiveHandlerAt(0) != nullptr); delegate.mpReadHandler = engine->ActiveHandlerAt(0); - NL_TEST_ASSERT(apSuite, delegate.mGotEventResponse); NL_TEST_ASSERT(apSuite, delegate.mGotReport); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 1); @@ -3635,7 +3631,6 @@ void TestReadInteraction::TestPostSubscribeRoundtripChunkReport(nlTestSuite * ap NL_TEST_ASSERT(apSuite, engine->ActiveHandlerAt(0) != nullptr); delegate.mpReadHandler = engine->ActiveHandlerAt(0); - NL_TEST_ASSERT(apSuite, delegate.mGotEventResponse); NL_TEST_ASSERT(apSuite, delegate.mGotReport); NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 1); @@ -4964,18 +4959,15 @@ void TestReadInteraction::TestSubscriptionReportWithDefunctSession(nlTestSuite * namespace { -/** - * Test Suite. It lists all the test functions. - */ - -// clang-format off -const nlTest sTests[] = -{ +const nlTest sTests[] = { NL_TEST_DEF("TestReadRoundtrip", chip::app::TestReadInteraction::TestReadRoundtrip), NL_TEST_DEF("TestReadRoundtripWithDataVersionFilter", chip::app::TestReadInteraction::TestReadRoundtripWithDataVersionFilter), - NL_TEST_DEF("TestReadRoundtripWithNoMatchPathDataVersionFilter", chip::app::TestReadInteraction::TestReadRoundtripWithNoMatchPathDataVersionFilter), - NL_TEST_DEF("TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter", chip::app::TestReadInteraction::TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter), - NL_TEST_DEF("TestReadRoundtripWithSameDifferentPathsDataVersionFilter", chip::app::TestReadInteraction::TestReadRoundtripWithSameDifferentPathsDataVersionFilter), + NL_TEST_DEF("TestReadRoundtripWithNoMatchPathDataVersionFilter", + chip::app::TestReadInteraction::TestReadRoundtripWithNoMatchPathDataVersionFilter), + NL_TEST_DEF("TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter", + chip::app::TestReadInteraction::TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter), + NL_TEST_DEF("TestReadRoundtripWithSameDifferentPathsDataVersionFilter", + chip::app::TestReadInteraction::TestReadRoundtripWithSameDifferentPathsDataVersionFilter), NL_TEST_DEF("TestReadWildcard", chip::app::TestReadInteraction::TestReadWildcard), NL_TEST_DEF("TestReadChunking", chip::app::TestReadInteraction::TestReadChunking), NL_TEST_DEF("TestSetDirtyBetweenChunks", chip::app::TestReadInteraction::TestSetDirtyBetweenChunks), @@ -4983,39 +4975,52 @@ const nlTest sTests[] = NL_TEST_DEF("TestReadUnexpectedSubscriptionId", chip::app::TestReadInteraction::TestReadUnexpectedSubscriptionId), NL_TEST_DEF("CheckReadHandler", chip::app::TestReadInteraction::TestReadHandler), NL_TEST_DEF("TestReadClientGenerateAttributePathList", chip::app::TestReadInteraction::TestReadClientGenerateAttributePathList), - NL_TEST_DEF("TestReadClientGenerateInvalidAttributePathList", chip::app::TestReadInteraction::TestReadClientGenerateInvalidAttributePathList), + NL_TEST_DEF("TestReadClientGenerateInvalidAttributePathList", + chip::app::TestReadInteraction::TestReadClientGenerateInvalidAttributePathList), NL_TEST_DEF("TestReadClientGenerateOneEventPaths", chip::app::TestReadInteraction::TestReadClientGenerateOneEventPaths), NL_TEST_DEF("TestReadClientGenerateTwoEventPaths", chip::app::TestReadInteraction::TestReadClientGenerateTwoEventPaths), NL_TEST_DEF("TestReadClientInvalidReport", chip::app::TestReadInteraction::TestReadClientInvalidReport), NL_TEST_DEF("TestReadClientInvalidAttributeId", chip::app::TestReadInteraction::TestReadClientInvalidAttributeId), NL_TEST_DEF("TestReadHandlerInvalidAttributePath", chip::app::TestReadInteraction::TestReadHandlerInvalidAttributePath), NL_TEST_DEF("TestProcessSubscribeRequest", chip::app::TestReadInteraction::TestProcessSubscribeRequest), - /* - We need to figure out a way to run unit tests with an ICD build without affecting - all the standard unit tests - https://github.com/project-chip/connectedhomeip/issues/28446 - */ +/* + We need to figure out a way to run unit tests with an ICD build without affecting + all the standard unit tests + https://github.com/project-chip/connectedhomeip/issues/28446 +*/ #if CHIP_CONFIG_ENABLE_ICD_SERVER - NL_TEST_DEF("TestICDProcessSubscribeRequestSupMaxIntervalCeiling", chip::app::TestReadInteraction::TestICDProcessSubscribeRequestSupMaxIntervalCeiling), - NL_TEST_DEF("TestICDProcessSubscribeRequestInfMaxIntervalCeiling", chip::app::TestReadInteraction::TestICDProcessSubscribeRequestInfMaxIntervalCeiling), - NL_TEST_DEF("TestICDProcessSubscribeRequestSupMinInterval", chip::app::TestReadInteraction::TestICDProcessSubscribeRequestSupMinInterval), - NL_TEST_DEF("TestICDProcessSubscribeRequestMaxMinInterval", chip::app::TestReadInteraction::TestICDProcessSubscribeRequestMaxMinInterval), - NL_TEST_DEF("TestICDProcessSubscribeRequestInvalidIdleModeDuration", chip::app::TestReadInteraction::TestICDProcessSubscribeRequestInvalidIdleModeDuration), + NL_TEST_DEF("TestICDProcessSubscribeRequestSupMaxIntervalCeiling", + chip::app::TestReadInteraction::TestICDProcessSubscribeRequestSupMaxIntervalCeiling), + NL_TEST_DEF("TestICDProcessSubscribeRequestInfMaxIntervalCeiling", + chip::app::TestReadInteraction::TestICDProcessSubscribeRequestInfMaxIntervalCeiling), + NL_TEST_DEF("TestICDProcessSubscribeRequestSupMinInterval", + chip::app::TestReadInteraction::TestICDProcessSubscribeRequestSupMinInterval), + NL_TEST_DEF("TestICDProcessSubscribeRequestMaxMinInterval", + chip::app::TestReadInteraction::TestICDProcessSubscribeRequestMaxMinInterval), + NL_TEST_DEF("TestICDProcessSubscribeRequestInvalidIdleModeDuration", + chip::app::TestReadInteraction::TestICDProcessSubscribeRequestInvalidIdleModeDuration), #endif // #if CHIP_CONFIG_ENABLE_ICD_SERVER NL_TEST_DEF("TestSubscribeRoundtrip", chip::app::TestReadInteraction::TestSubscribeRoundtrip), NL_TEST_DEF("TestSubscribeEarlyReport", chip::app::TestReadInteraction::TestSubscribeEarlyReport), NL_TEST_DEF("TestPostSubscribeRoundtripChunkReport", chip::app::TestReadInteraction::TestPostSubscribeRoundtripChunkReport), NL_TEST_DEF("TestReadClientReceiveInvalidMessage", chip::app::TestReadInteraction::TestReadClientReceiveInvalidMessage), - NL_TEST_DEF("TestSubscribeClientReceiveInvalidStatusResponse", chip::app::TestReadInteraction::TestSubscribeClientReceiveInvalidStatusResponse), - NL_TEST_DEF("TestSubscribeClientReceiveWellFormedStatusResponse", chip::app::TestReadInteraction::TestSubscribeClientReceiveWellFormedStatusResponse), - NL_TEST_DEF("TestSubscribeClientReceiveInvalidReportMessage", chip::app::TestReadInteraction::TestSubscribeClientReceiveInvalidReportMessage), - NL_TEST_DEF("TestSubscribeClientReceiveUnsolicitedInvalidReportMessage", chip::app::TestReadInteraction::TestSubscribeClientReceiveUnsolicitedInvalidReportMessage), - NL_TEST_DEF("TestSubscribeClientReceiveInvalidSubscribeResponseMessage", chip::app::TestReadInteraction::TestSubscribeClientReceiveInvalidSubscribeResponseMessage), - NL_TEST_DEF("TestSubscribeClientReceiveUnsolicitedReportMessageWithInvalidSubscriptionId", chip::app::TestReadInteraction::TestSubscribeClientReceiveUnsolicitedReportMessageWithInvalidSubscriptionId), + NL_TEST_DEF("TestSubscribeClientReceiveInvalidStatusResponse", + chip::app::TestReadInteraction::TestSubscribeClientReceiveInvalidStatusResponse), + NL_TEST_DEF("TestSubscribeClientReceiveWellFormedStatusResponse", + chip::app::TestReadInteraction::TestSubscribeClientReceiveWellFormedStatusResponse), + NL_TEST_DEF("TestSubscribeClientReceiveInvalidReportMessage", + chip::app::TestReadInteraction::TestSubscribeClientReceiveInvalidReportMessage), + NL_TEST_DEF("TestSubscribeClientReceiveUnsolicitedInvalidReportMessage", + chip::app::TestReadInteraction::TestSubscribeClientReceiveUnsolicitedInvalidReportMessage), + NL_TEST_DEF("TestSubscribeClientReceiveInvalidSubscribeResponseMessage", + chip::app::TestReadInteraction::TestSubscribeClientReceiveInvalidSubscribeResponseMessage), + NL_TEST_DEF("TestSubscribeClientReceiveUnsolicitedReportMessageWithInvalidSubscriptionId", + chip::app::TestReadInteraction::TestSubscribeClientReceiveUnsolicitedReportMessageWithInvalidSubscriptionId), NL_TEST_DEF("TestReadChunkingInvalidSubscriptionId", chip::app::TestReadInteraction::TestReadChunkingInvalidSubscriptionId), NL_TEST_DEF("TestReadHandlerMalformedReadRequest1", chip::app::TestReadInteraction::TestReadHandlerMalformedReadRequest1), NL_TEST_DEF("TestReadHandlerMalformedReadRequest2", chip::app::TestReadInteraction::TestReadHandlerMalformedReadRequest2), - NL_TEST_DEF("TestReadHandlerMalformedSubscribeRequest", chip::app::TestReadInteraction::TestReadHandlerMalformedSubscribeRequest), + NL_TEST_DEF("TestReadHandlerMalformedSubscribeRequest", + chip::app::TestReadInteraction::TestReadHandlerMalformedSubscribeRequest), NL_TEST_DEF("TestSubscribeSendUnknownMessage", chip::app::TestReadInteraction::TestSubscribeSendUnknownMessage), NL_TEST_DEF("TestSubscribeSendInvalidStatusReport", chip::app::TestReadInteraction::TestSubscribeSendInvalidStatusReport), NL_TEST_DEF("TestReadHandlerInvalidSubscribeRequest", chip::app::TestReadInteraction::TestReadHandlerInvalidSubscribeRequest), @@ -5026,29 +5031,36 @@ const nlTest sTests[] = NL_TEST_DEF("TestSubscribePartialOverlap", chip::app::TestReadInteraction::TestSubscribePartialOverlap), NL_TEST_DEF("TestSubscribeSetDirtyFullyOverlap", chip::app::TestReadInteraction::TestSubscribeSetDirtyFullyOverlap), NL_TEST_DEF("TestSubscribeEarlyShutdown", chip::app::TestReadInteraction::TestSubscribeEarlyShutdown), - NL_TEST_DEF("TestSubscribeInvalidAttributePathRoundtrip", chip::app::TestReadInteraction::TestSubscribeInvalidAttributePathRoundtrip), + NL_TEST_DEF("TestSubscribeInvalidAttributePathRoundtrip", + chip::app::TestReadInteraction::TestSubscribeInvalidAttributePathRoundtrip), NL_TEST_DEF("TestReadInvalidAttributePathRoundtrip", chip::app::TestReadInteraction::TestReadInvalidAttributePathRoundtrip), NL_TEST_DEF("TestSubscribeInvalidInterval", chip::app::TestReadInteraction::TestSubscribeInvalidInterval), - NL_TEST_DEF("TestSubscribeRoundtripStatusReportTimeout", chip::app::TestReadInteraction::TestSubscribeRoundtripStatusReportTimeout), - NL_TEST_DEF("TestPostSubscribeRoundtripStatusReportTimeout", chip::app::TestReadInteraction::TestPostSubscribeRoundtripStatusReportTimeout), + NL_TEST_DEF("TestSubscribeRoundtripStatusReportTimeout", + chip::app::TestReadInteraction::TestSubscribeRoundtripStatusReportTimeout), + NL_TEST_DEF("TestPostSubscribeRoundtripStatusReportTimeout", + chip::app::TestReadInteraction::TestPostSubscribeRoundtripStatusReportTimeout), NL_TEST_DEF("TestReadChunkingStatusReportTimeout", chip::app::TestReadInteraction::TestReadChunkingStatusReportTimeout), NL_TEST_DEF("TestReadReportFailure", chip::app::TestReadInteraction::TestReadReportFailure), - NL_TEST_DEF("TestSubscribeRoundtripChunkStatusReportTimeout", chip::app::TestReadInteraction::TestSubscribeRoundtripChunkStatusReportTimeout), - NL_TEST_DEF("TestPostSubscribeRoundtripChunkStatusReportTimeout", chip::app::TestReadInteraction::TestPostSubscribeRoundtripChunkStatusReportTimeout), - NL_TEST_DEF("TestPostSubscribeRoundtripChunkReportTimeout", chip::app::TestReadInteraction::TestPostSubscribeRoundtripChunkReportTimeout), + NL_TEST_DEF("TestSubscribeRoundtripChunkStatusReportTimeout", + chip::app::TestReadInteraction::TestSubscribeRoundtripChunkStatusReportTimeout), + NL_TEST_DEF("TestPostSubscribeRoundtripChunkStatusReportTimeout", + chip::app::TestReadInteraction::TestPostSubscribeRoundtripChunkStatusReportTimeout), + NL_TEST_DEF("TestPostSubscribeRoundtripChunkReportTimeout", + chip::app::TestReadInteraction::TestPostSubscribeRoundtripChunkReportTimeout), NL_TEST_DEF("TestReadShutdown", chip::app::TestReadInteraction::TestReadShutdown), - NL_TEST_DEF("TestSubscriptionReportWithDefunctSession", chip::app::TestReadInteraction::TestSubscriptionReportWithDefunctSession), - NL_TEST_SENTINEL() + NL_TEST_DEF("TestSubscriptionReportWithDefunctSession", + chip::app::TestReadInteraction::TestSubscriptionReportWithDefunctSession), + NL_TEST_SENTINEL(), }; -// clang-format on // clang-format off -nlTestSuite sSuite = -{ +nlTestSuite sSuite = { "TestReadInteraction", &sTests[0], - TestContext::Initialize, - TestContext::Finalize + TestContext::SetUpTestSuite, + TestContext::TearDownTestSuite, + TestContext::SetUp, + TestContext::TearDown, }; // clang-format on diff --git a/src/app/tests/suites/commands/discovery/DiscoveryCommands.cpp b/src/app/tests/suites/commands/discovery/DiscoveryCommands.cpp index 5c7f3fc9f318d3..2313480351d803 100644 --- a/src/app/tests/suites/commands/discovery/DiscoveryCommands.cpp +++ b/src/app/tests/suites/commands/discovery/DiscoveryCommands.cpp @@ -117,7 +117,6 @@ CHIP_ERROR DiscoveryCommands::SetupDiscoveryCommands() ReturnErrorOnFailure(mDNSResolver.Init(chip::DeviceLayer::UDPEndPointManager())); mReady = true; } - mDNSResolver.SetOperationalDelegate(this); mDNSResolver.SetCommissioningDelegate(this); return CHIP_NO_ERROR; } @@ -125,7 +124,6 @@ CHIP_ERROR DiscoveryCommands::SetupDiscoveryCommands() CHIP_ERROR DiscoveryCommands::TearDownDiscoveryCommands() { mDNSResolver.StopDiscovery(); - mDNSResolver.SetOperationalDelegate(nullptr); mDNSResolver.SetCommissioningDelegate(nullptr); return CHIP_NO_ERROR; } diff --git a/src/app/tests/suites/commands/discovery/DiscoveryCommands.h b/src/app/tests/suites/commands/discovery/DiscoveryCommands.h index 37fd9b4f8bf376..8425ef4ff1be81 100644 --- a/src/app/tests/suites/commands/discovery/DiscoveryCommands.h +++ b/src/app/tests/suites/commands/discovery/DiscoveryCommands.h @@ -24,7 +24,7 @@ #include -class DiscoveryCommands : public chip::Dnssd::CommissioningResolveDelegate, public chip::Dnssd::OperationalResolveDelegate +class DiscoveryCommands : public chip::Dnssd::CommissioningResolveDelegate { public: DiscoveryCommands(){}; @@ -64,10 +64,6 @@ class DiscoveryCommands : public chip::Dnssd::CommissioningResolveDelegate, publ /////////// CommissioningDelegate Interface ///////// void OnNodeDiscovered(const chip::Dnssd::DiscoveredNodeData & nodeData) override; - /////////// OperationalDelegate Interface ///////// - void OnOperationalNodeResolved(const chip::Dnssd::ResolvedNodeData & nodeData) override{}; - void OnOperationalNodeResolutionFailed(const chip::PeerId & peerId, CHIP_ERROR error) override{}; - private: bool mReady = false; chip::Dnssd::ResolverProxy mDNSResolver; diff --git a/src/app/zap-templates/partials/idl/cluster_definition.zapt b/src/app/zap-templates/partials/idl/cluster_definition.zapt index ea8923f66c578b..431b64c6b8b02c 100644 --- a/src/app/zap-templates/partials/idl/cluster_definition.zapt +++ b/src/app/zap-templates/partials/idl/cluster_definition.zapt @@ -7,6 +7,14 @@ cluster {{asUpperCamelCase name}} = {{!}} {{else}} {{~code~}} {{/if}} { + {{#global_attribute_default code="0xFFFD"}} + {{#if defaultValue}} + revision {{defaultValue}}; + {{else}} + revision 1; // NOTE: Default/not specifically set + {{/if}} + + {{/global_attribute_default}} {{#zcl_enums}} enum {{asUpperCamelCase name preserveAcronyms=true}} : enum{{multiply size 8}} { {{#zcl_enum_items}} diff --git a/src/controller/AbstractDnssdDiscoveryController.h b/src/controller/AbstractDnssdDiscoveryController.h index 788102282bd86d..6e50d7b40c89ca 100644 --- a/src/controller/AbstractDnssdDiscoveryController.h +++ b/src/controller/AbstractDnssdDiscoveryController.h @@ -39,8 +39,7 @@ namespace Controller { class DLL_EXPORT AbstractDnssdDiscoveryController : public Dnssd::CommissioningResolveDelegate { public: - AbstractDnssdDiscoveryController() {} - ~AbstractDnssdDiscoveryController() override { mDNSResolver.Shutdown(); } + explicit AbstractDnssdDiscoveryController(Dnssd::Resolver * resolver = nullptr) : mDNSResolver(resolver) {} void OnNodeDiscovered(const chip::Dnssd::DiscoveredNodeData & nodeData) override; CHIP_ERROR StopDiscovery() { return mDNSResolver.StopDiscovery(); }; diff --git a/src/controller/CHIPCommissionableNodeController.cpp b/src/controller/CHIPCommissionableNodeController.cpp index fdcf1f7e2649b9..d187cc1289a851 100644 --- a/src/controller/CHIPCommissionableNodeController.cpp +++ b/src/controller/CHIPCommissionableNodeController.cpp @@ -32,30 +32,12 @@ CHIP_ERROR CommissionableNodeController::DiscoverCommissioners(Dnssd::DiscoveryF { ReturnErrorOnFailure(SetUpNodeDiscovery()); - if (mResolver == nullptr) - { #if CONFIG_DEVICE_LAYER - mDNSResolver.Shutdown(); // reset if already inited - ReturnErrorOnFailure(mDNSResolver.Init(DeviceLayer::UDPEndPointManager())); + mDNSResolver.Shutdown(); // reset if already inited + ReturnErrorOnFailure(mDNSResolver.Init(DeviceLayer::UDPEndPointManager())); #endif - mDNSResolver.SetCommissioningDelegate(this); - return mDNSResolver.DiscoverCommissioners(discoveryFilter); - } - -#if CONFIG_DEVICE_LAYER - ReturnErrorOnFailure(mResolver->Init(DeviceLayer::UDPEndPointManager())); -#endif - return mResolver->DiscoverCommissioners(discoveryFilter); -} - -CHIP_ERROR CommissionableNodeController::StopDiscovery() -{ - if (mResolver == nullptr) - { - return AbstractDnssdDiscoveryController::StopDiscovery(); - } - - return mResolver->StopDiscovery(); + mDNSResolver.SetCommissioningDelegate(this); + return mDNSResolver.DiscoverCommissioners(discoveryFilter); } CommissionableNodeController::~CommissionableNodeController() diff --git a/src/controller/CHIPCommissionableNodeController.h b/src/controller/CHIPCommissionableNodeController.h index e573ba6fc4b5e9..5c9f57919a2897 100644 --- a/src/controller/CHIPCommissionableNodeController.h +++ b/src/controller/CHIPCommissionableNodeController.h @@ -36,14 +36,12 @@ namespace Controller { class DLL_EXPORT CommissionableNodeController : public AbstractDnssdDiscoveryController { public: - CommissionableNodeController(chip::Dnssd::Resolver * resolver = nullptr) : mResolver(resolver) {} + CommissionableNodeController(chip::Dnssd::Resolver * resolver = nullptr) : AbstractDnssdDiscoveryController(resolver) {} ~CommissionableNodeController() override; void RegisterDeviceDiscoveryDelegate(DeviceDiscoveryDelegate * delegate) { mDeviceDiscoveryDelegate = delegate; } CHIP_ERROR DiscoverCommissioners(Dnssd::DiscoveryFilter discoveryFilter = Dnssd::DiscoveryFilter()); - CHIP_ERROR StopDiscovery(); - /** * @return * Pointer to DiscoveredNodeData at index idx in the list of commissioners discovered @@ -57,7 +55,6 @@ class DLL_EXPORT CommissionableNodeController : public AbstractDnssdDiscoveryCon DiscoveredNodeList GetDiscoveredNodes() override { return DiscoveredNodeList(mDiscoveredCommissioners); } private: - Dnssd::Resolver * mResolver = nullptr; Dnssd::DiscoveredNodeData mDiscoveredCommissioners[CHIP_DEVICE_CONFIG_MAX_DISCOVERED_NODES]; }; diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp index 11c966cb84f207..a23dd9cb19cd45 100644 --- a/src/controller/CHIPDeviceController.cpp +++ b/src/controller/CHIPDeviceController.cpp @@ -2240,6 +2240,7 @@ CHIP_ERROR DeviceCommissioner::ParseICDInfo(ReadCommissioningInfo2 & info) // This key is optional so not an error err = CHIP_NO_ERROR; info.isIcd = false; + err = CHIP_NO_ERROR; } else if (err == CHIP_ERROR_IM_STATUS_CODE_RECEIVED) { diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index fa5cf58e150724..74c6b6f2502701 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -3,6 +3,8 @@ /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ client cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -51,6 +53,8 @@ client cluster Identify = 3 { /** Attributes and commands for group configuration and manipulation. */ client cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -126,6 +130,8 @@ client cluster Groups = 4 { /** Attributes and commands for scene configuration and manipulation. */ provisional client cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -317,6 +323,8 @@ provisional client cluster Scenes = 5 { /** Attributes and commands for switching devices between 'On' and 'Off' states. */ client cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -387,6 +395,8 @@ client cluster OnOff = 6 { /** Attributes and commands for configuring On/Off switching devices. */ client cluster OnOffSwitchConfiguration = 7 { + revision 1; // NOTE: Default/not specifically set + readonly attribute enum8 switchType = 0; attribute enum8 switchActions = 16; readonly attribute command_id generatedCommandList[] = 65528; @@ -399,6 +409,8 @@ client cluster OnOffSwitchConfiguration = 7 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ client cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -522,6 +534,8 @@ client cluster LevelControl = 8 { /** An interface for reading the value of a binary measurement and accessing various characteristics of that measurement. */ client cluster BinaryInputBasic = 15 { + revision 1; // NOTE: Default/not specifically set + attribute optional char_string<16> activeText = 4; attribute optional char_string<16> description = 28; attribute optional char_string<16> inactiveText = 46; @@ -541,6 +555,8 @@ client cluster BinaryInputBasic = 15 { /** Cluster to control pulse width modulation */ provisional client cluster PulseWidthModulation = 28 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -551,6 +567,8 @@ provisional client cluster PulseWidthModulation = 28 { /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ client cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -582,6 +600,8 @@ client cluster Descriptor = 29 { /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ client cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -604,6 +624,8 @@ client cluster Binding = 30 { and enforce Access Control for the Node's endpoints and their associated cluster instances. */ client cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -674,6 +696,8 @@ client cluster AccessControl = 31 { /** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ client cluster Actions = 37 { + revision 1; // NOTE: Default/not specifically set + enum ActionErrorEnum : enum8 { kUnknown = 0; kInterrupted = 1; @@ -851,6 +875,8 @@ client cluster Actions = 37 { Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ client cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -944,6 +970,8 @@ client cluster BasicInformation = 40 { /** Provides an interface for providing OTA software updates */ client cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -1018,6 +1046,8 @@ client cluster OtaSoftwareUpdateProvider = 41 { /** Provides an interface for downloading and applying OTA software updates */ client cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -1097,6 +1127,8 @@ client cluster OtaSoftwareUpdateRequestor = 42 { standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ client cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -1112,6 +1144,8 @@ client cluster LocalizationConfiguration = 43 { or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ client cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -1152,6 +1186,8 @@ client cluster TimeFormatLocalization = 44 { user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ client cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -1173,6 +1209,8 @@ client cluster UnitLocalization = 45 { /** This cluster is used to describe the configuration and capabilities of a Device's power system. */ client cluster PowerSourceConfiguration = 46 { + revision 1; + readonly attribute endpoint_no sources[] = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1184,6 +1222,8 @@ client cluster PowerSourceConfiguration = 46 { /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ client cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -1441,6 +1481,8 @@ client cluster PowerSource = 47 { /** This cluster is used to manage global aspects of the Commissioning flow. */ client cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1508,6 +1550,8 @@ client cluster GeneralCommissioning = 48 { /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ client cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1686,6 +1730,8 @@ client cluster NetworkCommissioning = 49 { /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ client cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1731,6 +1777,8 @@ client cluster DiagnosticLogs = 50 { /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ client cluster GeneralDiagnostics = 51 { + revision 1; // NOTE: Default/not specifically set + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1844,6 +1892,8 @@ client cluster GeneralDiagnostics = 51 { /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ client cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1879,6 +1929,8 @@ client cluster SoftwareDiagnostics = 52 { /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ client cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -2043,6 +2095,8 @@ client cluster ThreadNetworkDiagnostics = 53 { /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ client cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -2118,6 +2172,8 @@ client cluster WiFiNetworkDiagnostics = 54 { /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ client cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -2158,6 +2214,8 @@ client cluster EthernetNetworkDiagnostics = 55 { /** Accurate time is required for a number of reasons, including scheduling, display and validating security materials. */ client cluster TimeSynchronization = 56 { + revision 2; + enum GranularityEnum : enum8 { kNoTimeGranularity = 0; kMinutesGranularity = 1; @@ -2307,6 +2365,8 @@ client cluster TimeSynchronization = 56 { collection of attributes that the Node MAY collect to aid in conveying information regarding the Bridged Device to a user, such as the vendor name, the model name, or user-assigned name. */ client cluster BridgedDeviceBasicInformation = 57 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -2387,6 +2447,8 @@ client cluster BridgedDeviceBasicInformation = 57 { Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ client cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -2438,6 +2500,8 @@ client cluster Switch = 59 { /** Commands to trigger a Node to allow a new Administrator to commission it. */ client cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -2486,6 +2550,8 @@ client cluster AdministratorCommissioning = 60 { /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ client cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -2610,6 +2676,8 @@ client cluster OperationalCredentials = 62 { /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ client cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -2687,6 +2755,8 @@ client cluster GroupKeyManagement = 63 { /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ client cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2703,6 +2773,8 @@ client cluster FixedLabel = 64 { /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ client cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2719,6 +2791,8 @@ client cluster UserLabel = 65 { /** Cluster to control Proxy Configuration */ client cluster ProxyConfiguration = 66 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2729,6 +2803,8 @@ client cluster ProxyConfiguration = 66 { /** Cluster to control Proxy Discovery */ client cluster ProxyDiscovery = 67 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2739,6 +2815,8 @@ client cluster ProxyDiscovery = 67 { /** Cluster to control Proxy Valid */ client cluster ProxyValid = 68 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2749,6 +2827,8 @@ client cluster ProxyValid = 68 { /** This cluster provides an interface to a boolean state called StateValue. */ client cluster BooleanState = 69 { + revision 1; + info event StateChange = 0 { boolean stateValue = 0; } @@ -2764,6 +2844,8 @@ client cluster BooleanState = 69 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ client cluster IcdManagement = 70 { + revision 2; + bitmap Feature : bitmap32 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; @@ -2841,6 +2923,8 @@ client cluster IcdManagement = 70 { /** This cluster supports creating a simple timer functionality. */ provisional client cluster Timer = 71 { + revision 1; // NOTE: Default/not specifically set + enum TimerStatusEnum : enum8 { kRunning = 0; kPaused = 1; @@ -2886,6 +2970,8 @@ provisional client cluster Timer = 71 { /** Attributes and commands for selecting a mode from a list of supported options. */ provisional client cluster OvenMode = 73 { + revision 1; + enum ModeTag : enum16 { kBake = 16384; kConvection = 16385; @@ -2941,6 +3027,8 @@ provisional client cluster OvenMode = 73 { /** This cluster supports remotely monitoring and controling the different typs of functionality available to a drying device, such as a laundry dryer. */ client cluster LaundryDryerControls = 74 { + revision 1; // NOTE: Default/not specifically set + enum DrynessLevelEnum : enum8 { kLow = 0; kNormal = 1; @@ -2960,6 +3048,8 @@ client cluster LaundryDryerControls = 74 { /** Attributes and commands for selecting a mode from a list of supported options. */ client cluster ModeSelect = 80 { + revision 2; + bitmap Feature : bitmap32 { kOnOff = 0x1; } @@ -2998,6 +3088,8 @@ client cluster ModeSelect = 80 { /** Attributes and commands for selecting a mode from a list of supported options. */ client cluster LaundryWasherMode = 81 { + revision 2; + enum ModeTag : enum16 { kNormal = 16384; kDelicate = 16385; @@ -3047,6 +3139,8 @@ client cluster LaundryWasherMode = 81 { /** Attributes and commands for selecting a mode from a list of supported options. */ client cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { + revision 2; + enum ModeTag : enum16 { kRapidCool = 16384; kRapidFreeze = 16385; @@ -3094,6 +3188,8 @@ client cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { /** This cluster supports remotely monitoring and controling the different typs of functionality available to a washing device, such as a washing machine. */ client cluster LaundryWasherControls = 83 { + revision 1; // NOTE: Default/not specifically set + enum NumberOfRinsesEnum : enum8 { kNone = 0; kNormal = 1; @@ -3120,6 +3216,8 @@ client cluster LaundryWasherControls = 83 { /** Attributes and commands for selecting a mode from a list of supported options. */ client cluster RvcRunMode = 84 { + revision 2; + enum ModeTag : enum16 { kIdle = 16384; kCleaning = 16385; @@ -3177,6 +3275,8 @@ client cluster RvcRunMode = 84 { /** Attributes and commands for selecting a mode from a list of supported options. */ client cluster RvcCleanMode = 85 { + revision 2; + enum ModeTag : enum16 { kDeepClean = 16384; kVacuum = 16385; @@ -3228,6 +3328,8 @@ client cluster RvcCleanMode = 85 { /** Attributes and commands for configuring the temperature control, and reporting temperature. */ client cluster TemperatureControl = 86 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kTemperatureNumber = 0x1; kTemperatureLevel = 0x2; @@ -3258,6 +3360,8 @@ client cluster TemperatureControl = 86 { /** Attributes and commands for configuring the Refrigerator alarm. */ client cluster RefrigeratorAlarm = 87 { + revision 1; // NOTE: Default/not specifically set + bitmap AlarmMap : bitmap32 { kDoorOpen = 0x1; } @@ -3282,6 +3386,8 @@ client cluster RefrigeratorAlarm = 87 { /** Attributes and commands for selecting a mode from a list of supported options. */ client cluster DishwasherMode = 89 { + revision 2; + enum ModeTag : enum16 { kNormal = 16384; kHeavy = 16385; @@ -3330,6 +3436,8 @@ client cluster DishwasherMode = 89 { /** Attributes for reporting air quality classification */ client cluster AirQuality = 91 { + revision 1; // NOTE: Default/not specifically set + enum AirQualityEnum : enum8 { kUnknown = 0; kGood = 1; @@ -3358,6 +3466,8 @@ client cluster AirQuality = 91 { /** This cluster provides an interface for observing and managing the state of smoke and CO alarms. */ client cluster SmokeCoAlarm = 92 { + revision 1; + enum AlarmStateEnum : enum8 { kNormal = 0; kWarning = 1; @@ -3468,6 +3578,8 @@ client cluster SmokeCoAlarm = 92 { /** Attributes and commands for configuring the Dishwasher alarm. */ client cluster DishwasherAlarm = 93 { + revision 1; // NOTE: Default/not specifically set + bitmap AlarmMap : bitmap32 { kInflowError = 0x1; kDrainError = 0x2; @@ -3515,6 +3627,8 @@ client cluster DishwasherAlarm = 93 { /** Attributes and commands for selecting a mode from a list of supported options. */ provisional client cluster MicrowaveOvenMode = 94 { + revision 1; + enum ModeTag : enum16 { kNormal = 16384; kDefrost = 16385; @@ -3547,6 +3661,8 @@ provisional client cluster MicrowaveOvenMode = 94 { /** Attributes and commands for configuring the microwave oven control, and reporting cooking stats. */ provisional client cluster MicrowaveOvenControl = 95 { + revision 1; // NOTE: Default/not specifically set + readonly attribute elapsed_s cookTime = 1; readonly attribute int8u powerSetting = 2; readonly attribute optional int8u minPower = 3; @@ -3577,6 +3693,8 @@ provisional client cluster MicrowaveOvenControl = 95 { /** This cluster supports remotely monitoring and, where supported, changing the operational state of any device where a state machine is a part of the operation. */ client cluster OperationalState = 96 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kNoError = 0; kUnableToStartOrResume = 1; @@ -3641,6 +3759,8 @@ client cluster OperationalState = 96 { /** This cluster supports remotely monitoring and, where supported, changing the operational state of a Robotic Vacuum. */ client cluster RvcOperationalState = 97 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kFailedToFindChargingDock = 64; kStuck = 65; @@ -3708,6 +3828,8 @@ client cluster RvcOperationalState = 97 { /** Attributes and commands for monitoring HEPA filters in a device */ client cluster HepaFilterMonitoring = 113 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -3757,6 +3879,8 @@ client cluster HepaFilterMonitoring = 113 { /** Attributes and commands for monitoring activated carbon filters in a device */ client cluster ActivatedCarbonFilterMonitoring = 114 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -3806,6 +3930,8 @@ client cluster ActivatedCarbonFilterMonitoring = 114 { /** This cluster is used to configure a boolean sensor. */ provisional client cluster BooleanSensorConfiguration = 128 { + revision 1; + enum SensitivityEnum : enum8 { kHigh = 0; kStandard = 1; @@ -3853,6 +3979,8 @@ provisional client cluster BooleanSensorConfiguration = 128 { /** This cluster is used to configure a valve. */ provisional client cluster ValveConfigurationAndControl = 129 { + revision 1; + enum ValveStateEnum : enum8 { kOpen = 0; kClosed = 1; @@ -3913,6 +4041,8 @@ provisional client cluster ValveConfigurationAndControl = 129 { /** This cluster provides an interface to the functionality of Smart Energy Demand Response and Load Control. */ provisional client cluster DemandResponseLoadControl = 150 { + revision 4; + enum CriticalityLevelEnum : enum8 { kUnknown = 0; kGreen = 1; @@ -4107,6 +4237,8 @@ provisional client cluster DemandResponseLoadControl = 150 { /** An interface to a generic way to secure a door */ client cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; @@ -4727,6 +4859,8 @@ client cluster DoorLock = 257 { /** Provides an interface for controlling and adjusting automatic window coverings. */ client cluster WindowCovering = 258 { + revision 5; + enum EndProductType : enum8 { kRollerShade = 0; kRomanShade = 1; @@ -4878,6 +5012,8 @@ client cluster WindowCovering = 258 { /** This cluster provides control of a barrier (garage door). */ client cluster BarrierControl = 259 { + revision 1; // NOTE: Default/not specifically set + bitmap BarrierControlCapabilities : bitmap8 { kPartialBarrier = 0x1; } @@ -4918,6 +5054,8 @@ client cluster BarrierControl = 259 { /** An interface for configuring and controlling pumps. */ client cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -5040,6 +5178,8 @@ client cluster PumpConfigurationAndControl = 512 { /** An interface for configuring and controlling the functionality of a thermostat. */ client cluster Thermostat = 513 { + revision 6; + enum SetpointAdjustMode : enum8 { kHeat = 0; kCool = 1; @@ -5197,6 +5337,8 @@ client cluster Thermostat = 513 { /** An interface for controlling a fan in a heating/cooling system. */ provisional client cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -5277,6 +5419,8 @@ provisional client cluster FanControl = 514 { /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ client cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -5309,6 +5453,8 @@ client cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ client cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -5627,6 +5773,8 @@ client cluster ColorControl = 768 { /** Attributes and commands for configuring a lighting ballast. */ provisional client cluster BallastConfiguration = 769 { + revision 4; + bitmap BallastStatusBitmap : bitmap8 { kBallastNonOperational = 0x1; kLampFailure = 0x2; @@ -5660,6 +5808,8 @@ provisional client cluster BallastConfiguration = 769 { /** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ client cluster IlluminanceMeasurement = 1024 { + revision 3; + enum LightSensorTypeEnum : enum8 { kPhotodiode = 0; kCMOS = 1; @@ -5680,6 +5830,8 @@ client cluster IlluminanceMeasurement = 1024 { /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ client cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; @@ -5694,6 +5846,8 @@ client cluster TemperatureMeasurement = 1026 { /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ client cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -5717,6 +5871,8 @@ client cluster PressureMeasurement = 1027 { /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ client cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -5731,6 +5887,8 @@ client cluster FlowMeasurement = 1028 { /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ client cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; @@ -5745,6 +5903,8 @@ client cluster RelativeHumidityMeasurement = 1029 { /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ client cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; @@ -5784,6 +5944,8 @@ client cluster OccupancySensing = 1030 { /** Attributes for reporting carbon monoxide concentration measurements */ client cluster CarbonMonoxideConcentrationMeasurement = 1036 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -5839,6 +6001,8 @@ client cluster CarbonMonoxideConcentrationMeasurement = 1036 { /** Attributes for reporting carbon dioxide concentration measurements */ client cluster CarbonDioxideConcentrationMeasurement = 1037 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -5894,6 +6058,8 @@ client cluster CarbonDioxideConcentrationMeasurement = 1037 { /** Attributes for reporting nitrogen dioxide concentration measurements */ client cluster NitrogenDioxideConcentrationMeasurement = 1043 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -5949,6 +6115,8 @@ client cluster NitrogenDioxideConcentrationMeasurement = 1043 { /** Attributes for reporting ozone concentration measurements */ client cluster OzoneConcentrationMeasurement = 1045 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -6004,6 +6172,8 @@ client cluster OzoneConcentrationMeasurement = 1045 { /** Attributes for reporting PM2.5 concentration measurements */ client cluster Pm25ConcentrationMeasurement = 1066 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -6059,6 +6229,8 @@ client cluster Pm25ConcentrationMeasurement = 1066 { /** Attributes for reporting formaldehyde concentration measurements */ client cluster FormaldehydeConcentrationMeasurement = 1067 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -6114,6 +6286,8 @@ client cluster FormaldehydeConcentrationMeasurement = 1067 { /** Attributes for reporting PM1 concentration measurements */ client cluster Pm1ConcentrationMeasurement = 1068 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -6169,6 +6343,8 @@ client cluster Pm1ConcentrationMeasurement = 1068 { /** Attributes for reporting PM10 concentration measurements */ client cluster Pm10ConcentrationMeasurement = 1069 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -6224,6 +6400,8 @@ client cluster Pm10ConcentrationMeasurement = 1069 { /** Attributes for reporting total volatile organic compounds concentration measurements */ client cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -6279,6 +6457,8 @@ client cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { /** Attributes for reporting radon concentration measurements */ client cluster RadonConcentrationMeasurement = 1071 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -6334,6 +6514,8 @@ client cluster RadonConcentrationMeasurement = 1071 { /** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ client cluster WakeOnLan = 1283 { + revision 1; // NOTE: Default/not specifically set + readonly attribute optional char_string<12> MACAddress = 0; readonly attribute optional octet_string<16> linkLocalAddress = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -6346,6 +6528,8 @@ client cluster WakeOnLan = 1283 { /** This cluster provides an interface for controlling the current Channel on a device. */ client cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -6414,6 +6598,8 @@ client cluster Channel = 1284 { /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ client cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -6450,6 +6636,8 @@ client cluster TargetNavigator = 1285 { /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ client cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -6533,6 +6721,8 @@ client cluster MediaPlayback = 1286 { /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ client cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -6589,6 +6779,8 @@ client cluster MediaInput = 1287 { /** This cluster provides an interface for managing low power mode on a device. */ client cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -6602,6 +6794,8 @@ client cluster LowPower = 1288 { /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ client cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -6724,6 +6918,8 @@ client cluster KeypadInput = 1289 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ContentLauncher = 1290 { + revision 1; // NOTE: Default/not specifically set + enum MetricTypeEnum : enum8 { kPixels = 0; kPercentage = 1; @@ -6832,6 +7028,8 @@ client cluster ContentLauncher = 1290 { /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ client cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; @@ -6877,6 +7075,8 @@ client cluster AudioOutput = 1291 { /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ client cluster ApplicationLauncher = 1292 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kAppNotAvailable = 1; @@ -6934,6 +7134,8 @@ client cluster ApplicationLauncher = 1292 { /** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ client cluster ApplicationBasic = 1293 { + revision 1; // NOTE: Default/not specifically set + enum ApplicationStatusEnum : enum8 { kStopped = 0; kActiveVisibleFocus = 1; @@ -6964,6 +7166,8 @@ client cluster ApplicationBasic = 1293 { /** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ client cluster AccountLogin = 1294 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -6994,6 +7198,8 @@ client cluster AccountLogin = 1294 { /** Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster.. */ client cluster ElectricalMeasurement = 2820 { + revision 3; + readonly attribute optional bitmap32 measurementType = 0; readonly attribute optional int16s dcVoltage = 256; readonly attribute optional int16s dcVoltageMin = 257; @@ -7159,6 +7365,8 @@ client cluster ElectricalMeasurement = 2820 { /** The Test Cluster is meant to validate the generated code */ internal client cluster UnitTesting = 4294048773 { + revision 1; // NOTE: Default/not specifically set + enum SimpleEnum : enum8 { kUnspecified = 0; kValueA = 1; @@ -7605,6 +7813,8 @@ internal client cluster UnitTesting = 4294048773 { /** The Fault Injection Cluster provide a means for a test harness to configure faults(for example triggering a fault in the system). */ internal client cluster FaultInjection = 4294048774 { + revision 1; // NOTE: Default/not specifically set + enum FaultType : enum8 { kUnspecified = 0; kSystemFault = 1; @@ -7642,6 +7852,8 @@ internal client cluster FaultInjection = 4294048774 { /** The Sample MEI cluster showcases a cluster manufacturer extensions */ client cluster SampleMei = 4294048800 { + revision 1; // NOTE: Default/not specifically set + attribute boolean flipFlop = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; diff --git a/src/controller/tests/TestCommissionableNodeController.cpp b/src/controller/tests/TestCommissionableNodeController.cpp index d50a267172ec19..c2aafe500c293d 100644 --- a/src/controller/tests/TestCommissionableNodeController.cpp +++ b/src/controller/tests/TestCommissionableNodeController.cpp @@ -36,15 +36,14 @@ class MockResolver : public Resolver bool IsInitialized() override { return true; } void Shutdown() override {} void SetOperationalDelegate(OperationalResolveDelegate * delegate) override {} - void SetCommissioningDelegate(CommissioningResolveDelegate * delegate) override {} CHIP_ERROR ResolveNodeId(const PeerId & peerId) override { return ResolveNodeIdStatus; } void NodeIdResolutionNoLongerNeeded(const PeerId & peerId) override {} - CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter = DiscoveryFilter()) override { return DiscoverCommissionersStatus; } - CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter = DiscoveryFilter()) override + CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter, DiscoveryContext &) override { return DiscoverCommissionersStatus; } + CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter, DiscoveryContext &) override { return CHIP_ERROR_NOT_IMPLEMENTED; } - CHIP_ERROR StopDiscovery() override { return CHIP_ERROR_NOT_IMPLEMENTED; } + CHIP_ERROR StopDiscovery(DiscoveryContext &) override { return CHIP_ERROR_NOT_IMPLEMENTED; } CHIP_ERROR ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) override { return CHIP_ERROR_NOT_IMPLEMENTED; diff --git a/src/include/platform/CHIPDeviceConfig.h b/src/include/platform/CHIPDeviceConfig.h index f6989ac2590942..bafca37458c8a3 100644 --- a/src/include/platform/CHIPDeviceConfig.h +++ b/src/include/platform/CHIPDeviceConfig.h @@ -874,6 +874,16 @@ #define CHIP_DEVICE_CONFIG_THREAD_SSED 0 #endif +/** + * CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER + * + * Enable Thread Border Router service. + * Users should ensure OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE is set accordingly within their thread stack + * + */ +#ifndef CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER +#define CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER 0 +#endif /** * CHIP_DEVICE_CONFIG_THREAD_TASK_NAME * diff --git a/src/include/platform/NetworkCommissioning.h b/src/include/platform/NetworkCommissioning.h index 90b0d515269147..c24648b3e582b8 100644 --- a/src/include/platform/NetworkCommissioning.h +++ b/src/include/platform/NetworkCommissioning.h @@ -131,6 +131,7 @@ using ThreadScanResponseIterator = Iterator; using Status = app::Clusters::NetworkCommissioning::NetworkCommissioningStatusEnum; using WiFiBand = app::Clusters::NetworkCommissioning::WiFiBandEnum; using WiFiSecurity = app::Clusters::NetworkCommissioning::WiFiSecurityBitmap; +using ThreadCapabilities = app::Clusters::NetworkCommissioning::ThreadCapabilitiesBitmap; // BaseDriver and WirelessDriver are the common interfaces for a network driver, platform drivers should not implement this // directly, instead, users are expected to implement WiFiDriver, ThreadDriver and EthernetDriver. @@ -350,6 +351,14 @@ class WiFiDriver : public Internal::WirelessDriver } #endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_PDC + /** + * @brief Provide all the frequency bands supported by the Wi-Fi interface + * + * Provide a default implementation that returns the 2.4 Ghz band support. + * Note: WiFi platforms should implement this function in their WiFiDriver to provide their complete device capabilities + */ + virtual WiFiBand GetSupportedWiFiBands() { return WiFiBand::k2g4; } + ~WiFiDriver() override = default; }; @@ -389,6 +398,16 @@ class ThreadDriver : public Internal::WirelessDriver */ virtual void ScanNetworks(ScanCallback * callback) = 0; + /** + * @brief Provide all of the Thread features supported by the Thread interface + */ + virtual ThreadCapabilities GetSupportedThreadFeatures() = 0; + + /** + * @brief Return the Thread version supported by the Thread interface + */ + virtual uint16_t GetThreadVersion() = 0; + ~ThreadDriver() override = default; }; diff --git a/src/lib/dnssd/BUILD.gn b/src/lib/dnssd/BUILD.gn index 313ae728688b80..68b90f1f8a2251 100644 --- a/src/lib/dnssd/BUILD.gn +++ b/src/lib/dnssd/BUILD.gn @@ -34,6 +34,8 @@ static_library("dnssd") { "IPAddressSorter.cpp", "IPAddressSorter.h", "Resolver.h", + "ResolverProxy.cpp", + "ResolverProxy.h", "ServiceNaming.cpp", "ServiceNaming.h", "TxtFields.cpp", diff --git a/src/lib/dnssd/Discovery_ImplPlatform.cpp b/src/lib/dnssd/Discovery_ImplPlatform.cpp index 9af17d2288024f..64eebbbb59962a 100644 --- a/src/lib/dnssd/Discovery_ImplPlatform.cpp +++ b/src/lib/dnssd/Discovery_ImplPlatform.cpp @@ -39,11 +39,11 @@ namespace { static void HandleNodeResolve(void * context, DnssdService * result, const Span & addresses, CHIP_ERROR error) { - ResolverDelegateProxy * proxy = static_cast(context); + DiscoveryContext * discoveryContext = static_cast(context); - if (CHIP_NO_ERROR != error) + if (error != CHIP_NO_ERROR) { - proxy->Release(); + discoveryContext->Release(); return; } @@ -51,31 +51,24 @@ static void HandleNodeResolve(void * context, DnssdService * result, const Span< result->ToDiscoveredNodeData(addresses, nodeData); nodeData.LogDetail(); - proxy->OnNodeDiscovered(nodeData); - proxy->Release(); + discoveryContext->OnNodeDiscovered(nodeData); + discoveryContext->Release(); } static void HandleNodeBrowse(void * context, DnssdService * services, size_t servicesSize, bool finalBrowse, CHIP_ERROR error) { - ResolverDelegateProxy * proxy = static_cast(context); + DiscoveryContext * discoveryContext = static_cast(context); if (error != CHIP_NO_ERROR) { - // We don't have access to the ResolverProxy here to clear out its - // mDiscoveryContext. The underlying implementation of - // ChipDnssdStopBrowse needs to handle a possibly-stale reference - // safely, so this won't lead to crashes, but it can lead to - // mis-behavior if a stale mDiscoveryContext happens to match a newer - // browse operation. - // - // TODO: Have a way to clear that state here. - proxy->Release(); + discoveryContext->ClearBrowseIdentifier(); + discoveryContext->Release(); return; } for (size_t i = 0; i < servicesSize; ++i) { - proxy->Retain(); + discoveryContext->Retain(); // For some platforms browsed services are already resolved, so verify if resolve is really needed or call resolve callback // Check if SRV, TXT and AAAA records were received in DNS responses @@ -92,15 +85,8 @@ static void HandleNodeBrowse(void * context, DnssdService * services, size_t ser if (finalBrowse) { - // We don't have access to the ResolverProxy here to clear out its - // mDiscoveryContext. The underlying implementation of - // ChipDnssdStopBrowse needs to handle a possibly-stale reference - // safely, so this won't lead to crashes, but it can lead to - // mis-behavior if a stale mDiscoveryContext happens to match a newer - // browse operation. - // - // TODO: Have a way to clear that state here. - proxy->Release(); + discoveryContext->ClearBrowseIdentifier(); + discoveryContext->Release(); } } @@ -398,7 +384,6 @@ CHIP_ERROR DiscoveryImplPlatform::InitImpl() void DiscoveryImplPlatform::Shutdown() { VerifyOrReturn(mState != State::kUninitialized); - mResolverProxy.Shutdown(); ChipDnssdShutdown(); mState = State::kUninitialized; } @@ -411,20 +396,6 @@ void DiscoveryImplPlatform::HandleDnssdInit(void * context, CHIP_ERROR initError { publisher->mState = State::kInitialized; - // TODO: this is wrong, however we need resolverproxy initialized - // otherwise DiscoveryImplPlatform is not usable. - // - // We rely on the fact that resolverproxy does not use the endpoint - // nor does DiscoveryImplPlatform use it (since init will be called - // twice now) - // - // The problem is that: - // - DiscoveryImplPlatform contains a ResolverProxy - // - ResolverProxy::Init calls Dnssd::Resolver::Instance().Init - // which results in a recursive dependency (proxy initializes the - // class that it is contained in). - publisher->mResolverProxy.Init(nullptr); - // Post an event that will start advertising DeviceLayer::ChipDeviceEvent event; event.Type = DeviceLayer::DeviceEventType::kDnssdInitialized; @@ -671,125 +642,131 @@ void DiscoveryImplPlatform::NodeIdResolutionNoLongerNeeded(const PeerId & peerId ChipDnssdResolveNoLongerNeeded(name); } -CHIP_ERROR DiscoveryImplPlatform::DiscoverCommissionableNodes(DiscoveryFilter filter) -{ - ReturnErrorOnFailure(InitImpl()); - return mResolverProxy.DiscoverCommissionableNodes(filter); -} - -CHIP_ERROR DiscoveryImplPlatform::DiscoverCommissioners(DiscoveryFilter filter) -{ - ReturnErrorOnFailure(InitImpl()); - return mResolverProxy.DiscoverCommissioners(filter); -} - -CHIP_ERROR DiscoveryImplPlatform::StopDiscovery() +CHIP_ERROR DiscoveryImplPlatform::DiscoverCommissionableNodes(DiscoveryFilter filter, DiscoveryContext & context) { ReturnErrorOnFailure(InitImpl()); - return mResolverProxy.StopDiscovery(); -} - -CHIP_ERROR DiscoveryImplPlatform::ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) -{ - ReturnErrorOnFailure(InitImpl()); - return mResolverProxy.ReconfirmRecord(hostname, address, interfaceId); -} - -DiscoveryImplPlatform & DiscoveryImplPlatform::GetInstance() -{ - return sManager.get(); -} - -ServiceAdvertiser & chip::Dnssd::ServiceAdvertiser::Instance() -{ - return DiscoveryImplPlatform::GetInstance(); -} - -Resolver & chip::Dnssd::Resolver::Instance() -{ - return DiscoveryImplPlatform::GetInstance(); -} - -ResolverProxy::~ResolverProxy() -{ - Shutdown(); -} - -CHIP_ERROR ResolverProxy::DiscoverCommissionableNodes(DiscoveryFilter filter) -{ - StopDiscovery(); - - VerifyOrReturnError(mDelegate != nullptr, CHIP_ERROR_INCORRECT_STATE); - mDelegate->Retain(); + StopDiscovery(context); if (filter.type == DiscoveryFilterType::kInstanceName) { - // when we have the instance name, no need to browse, only need to resolve + // When we have the instance name, no need to browse, only need to resolve. DnssdService service; ReturnErrorOnFailure(MakeServiceSubtype(service.mName, sizeof(service.mName), filter)); Platform::CopyString(service.mType, kCommissionableServiceName); service.mProtocol = DnssdServiceProtocol::kDnssdProtocolUdp; service.mAddressType = Inet::IPAddressType::kAny; - return ChipDnssdResolve(&service, Inet::InterfaceId::Null(), HandleNodeResolve, mDelegate); + + // Increase the reference count of the context to keep it alive until HandleNodeResolve is called back. + CHIP_ERROR error = ChipDnssdResolve(&service, Inet::InterfaceId::Null(), HandleNodeResolve, context.Retain()); + + if (error != CHIP_NO_ERROR) + { + context.Release(); + } + + return error; } char serviceName[kMaxCommissionableServiceNameSize]; ReturnErrorOnFailure(MakeServiceTypeName(serviceName, sizeof(serviceName), filter, DiscoveryType::kCommissionableNode)); intptr_t browseIdentifier; - ReturnErrorOnFailure(ChipDnssdBrowse(serviceName, DnssdServiceProtocol::kDnssdProtocolUdp, Inet::IPAddressType::kAny, - Inet::InterfaceId::Null(), HandleNodeBrowse, mDelegate, &browseIdentifier)); - mDiscoveryContext.Emplace(browseIdentifier); - return CHIP_NO_ERROR; + // Increase the reference count of the context to keep it alive until HandleNodeBrowse is called back. + CHIP_ERROR error = ChipDnssdBrowse(serviceName, DnssdServiceProtocol::kDnssdProtocolUdp, Inet::IPAddressType::kAny, + Inet::InterfaceId::Null(), HandleNodeBrowse, context.Retain(), &browseIdentifier); + + if (error == CHIP_NO_ERROR) + { + context.SetBrowseIdentifier(browseIdentifier); + } + else + { + context.Release(); + } + + return error; } -CHIP_ERROR ResolverProxy::DiscoverCommissioners(DiscoveryFilter filter) +CHIP_ERROR DiscoveryImplPlatform::DiscoverCommissioners(DiscoveryFilter filter, DiscoveryContext & context) { - StopDiscovery(); - - VerifyOrReturnError(mDelegate != nullptr, CHIP_ERROR_INCORRECT_STATE); - mDelegate->Retain(); + ReturnErrorOnFailure(InitImpl()); + StopDiscovery(context); if (filter.type == DiscoveryFilterType::kInstanceName) { - // when we have the instance name, no need to browse, only need to resolve + // When we have the instance name, no need to browse, only need to resolve. DnssdService service; ReturnErrorOnFailure(MakeServiceSubtype(service.mName, sizeof(service.mName), filter)); Platform::CopyString(service.mType, kCommissionerServiceName); service.mProtocol = DnssdServiceProtocol::kDnssdProtocolUdp; service.mAddressType = Inet::IPAddressType::kAny; - return ChipDnssdResolve(&service, Inet::InterfaceId::Null(), HandleNodeResolve, mDelegate); + + // Increase the reference count of the context to keep it alive until HandleNodeResolve is called back. + CHIP_ERROR error = ChipDnssdResolve(&service, Inet::InterfaceId::Null(), HandleNodeResolve, context.Retain()); + + if (error != CHIP_NO_ERROR) + { + context.Release(); + } } char serviceName[kMaxCommissionerServiceNameSize]; ReturnErrorOnFailure(MakeServiceTypeName(serviceName, sizeof(serviceName), filter, DiscoveryType::kCommissionerNode)); intptr_t browseIdentifier; - ReturnErrorOnFailure(ChipDnssdBrowse(serviceName, DnssdServiceProtocol::kDnssdProtocolUdp, Inet::IPAddressType::kAny, - Inet::InterfaceId::Null(), HandleNodeBrowse, mDelegate, &browseIdentifier)); - mDiscoveryContext.Emplace(browseIdentifier); - return CHIP_NO_ERROR; + // Increase the reference count of the context to keep it alive until HandleNodeBrowse is called back. + CHIP_ERROR error = ChipDnssdBrowse(serviceName, DnssdServiceProtocol::kDnssdProtocolUdp, Inet::IPAddressType::kAny, + Inet::InterfaceId::Null(), HandleNodeBrowse, context.Retain(), &browseIdentifier); + + if (error == CHIP_NO_ERROR) + { + context.SetBrowseIdentifier(browseIdentifier); + } + else + { + context.Release(); + } + + return error; } -CHIP_ERROR ResolverProxy::StopDiscovery() +CHIP_ERROR DiscoveryImplPlatform::StopDiscovery(DiscoveryContext & context) { - if (!mDiscoveryContext.HasValue()) + if (!context.GetBrowseIdentifier().HasValue()) { // No discovery going on. return CHIP_NO_ERROR; } - CHIP_ERROR err = ChipDnssdStopBrowse(mDiscoveryContext.Value()); - mDiscoveryContext.ClearValue(); - return err; + const auto browseIdentifier = context.GetBrowseIdentifier().Value(); + context.ClearBrowseIdentifier(); + + return ChipDnssdStopBrowse(browseIdentifier); } -CHIP_ERROR ResolverProxy::ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) +CHIP_ERROR DiscoveryImplPlatform::ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) { + ReturnErrorOnFailure(InitImpl()); + return ChipDnssdReconfirmRecord(hostname, address, interfaceId); } +DiscoveryImplPlatform & DiscoveryImplPlatform::GetInstance() +{ + return sManager.get(); +} + +ServiceAdvertiser & chip::Dnssd::ServiceAdvertiser::Instance() +{ + return DiscoveryImplPlatform::GetInstance(); +} + +Resolver & chip::Dnssd::Resolver::Instance() +{ + return DiscoveryImplPlatform::GetInstance(); +} + } // namespace Dnssd } // namespace chip diff --git a/src/lib/dnssd/Discovery_ImplPlatform.h b/src/lib/dnssd/Discovery_ImplPlatform.h index 994112e9be1f8e..a3f79796ca535c 100644 --- a/src/lib/dnssd/Discovery_ImplPlatform.h +++ b/src/lib/dnssd/Discovery_ImplPlatform.h @@ -23,7 +23,6 @@ #include #include #include -#include #include #include @@ -52,15 +51,11 @@ class DiscoveryImplPlatform : public ServiceAdvertiser, public Resolver // Members that implement Resolver interface. void SetOperationalDelegate(OperationalResolveDelegate * delegate) override { mOperationalDelegate = delegate; } - void SetCommissioningDelegate(CommissioningResolveDelegate * delegate) override - { - mResolverProxy.SetCommissioningDelegate(delegate); - } CHIP_ERROR ResolveNodeId(const PeerId & peerId) override; void NodeIdResolutionNoLongerNeeded(const PeerId & peerId) override; - CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter = DiscoveryFilter()) override; - CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter = DiscoveryFilter()) override; - CHIP_ERROR StopDiscovery() override; + CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter, DiscoveryContext & context) override; + CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter, DiscoveryContext & context) override; + CHIP_ERROR StopDiscovery(DiscoveryContext & context) override; CHIP_ERROR ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) override; static DiscoveryImplPlatform & GetInstance(); @@ -97,7 +92,6 @@ class DiscoveryImplPlatform : public ServiceAdvertiser, public Resolver State mState = State::kUninitialized; uint8_t mCommissionableInstanceName[sizeof(uint64_t)]; - ResolverProxy mResolverProxy; OperationalResolveDelegate * mOperationalDelegate = nullptr; friend class Global; diff --git a/src/lib/dnssd/Resolver.h b/src/lib/dnssd/Resolver.h index 5623d4ad2fdb8e..ae4e95f4341b85 100644 --- a/src/lib/dnssd/Resolver.h +++ b/src/lib/dnssd/Resolver.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -352,6 +353,43 @@ class CommissioningResolveDelegate virtual void OnNodeDiscovered(const DiscoveredNodeData & nodeData) = 0; }; +/** + * Node discovery context class. + * + * This class enables multiple clients of the global DNS-SD resolver to start simultaneous + * discovery operations. + * + * An object of this class is shared between a resolver client and the concrete resolver + * implementation. The client is responsible for allocating the context and passing it to + * the resolver when initiating a discovery operation. The resolver, in turn, is supposed to retain + * the context until the operation is finished. This allows the client to release the ownership of + * the context at any time without putting the resolver at risk of using a deleted object. + */ +class DiscoveryContext : public ReferenceCounted +{ +public: + void SetBrowseIdentifier(intptr_t identifier) { mBrowseIdentifier.Emplace(identifier); } + void ClearBrowseIdentifier() { mBrowseIdentifier.ClearValue(); } + const Optional & GetBrowseIdentifier() const { return mBrowseIdentifier; } + + void SetCommissioningDelegate(CommissioningResolveDelegate * delegate) { mCommissioningDelegate = delegate; } + void OnNodeDiscovered(const DiscoveredNodeData & nodeData) + { + if (mCommissioningDelegate != nullptr) + { + mCommissioningDelegate->OnNodeDiscovered(nodeData); + } + else + { + ChipLogError(Discovery, "Missing commissioning delegate. Data discarded"); + } + } + +private: + CommissioningResolveDelegate * mCommissioningDelegate = nullptr; + Optional mBrowseIdentifier; +}; + /** * Interface for resolving CHIP DNS-SD services */ @@ -385,11 +423,6 @@ class Resolver */ virtual void SetOperationalDelegate(OperationalResolveDelegate * delegate) = 0; - /** - * If nullptr is passed, the previously registered delegate is unregistered. - */ - virtual void SetCommissioningDelegate(CommissioningResolveDelegate * delegate) = 0; - /** * Requests resolution of the given operational node service. * @@ -431,18 +464,26 @@ class Resolver /** * Finds all commissionable nodes matching the given filter. * - * Whenever a new matching node is found and a resolver delegate has been registered, - * the node information is passed to the delegate's `OnNodeDiscoveryComplete` method. + * Whenever a new matching node is found, the node information is passed to + * the `OnNodeDiscovered` method of the commissioning delegate configured + * in the context object. + * + * This method is expected to increase the reference count of the context + * object for as long as it takes to complete the discovery request. */ - virtual CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter = DiscoveryFilter()) = 0; + virtual CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter, DiscoveryContext & context) = 0; /** * Finds all commissioner nodes matching the given filter. * - * Whenever a new matching node is found and a resolver delegate has been registered, - * the node information is passed to the delegate's `OnNodeDiscoveryComplete` method. + * Whenever a new matching node is found, the node information is passed to + * the `OnNodeDiscovered` method of the commissioning delegate configured + * in the context object. + * + * This method is expected to increase the reference count of the context + * object for as long as it takes to complete the discovery request. */ - virtual CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter = DiscoveryFilter()) = 0; + virtual CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter, DiscoveryContext & context) = 0; /** * Stop discovery (of commissionable or commissioner nodes). @@ -450,7 +491,7 @@ class Resolver * Some back ends may not support stopping discovery, so consumers should * not assume they will stop getting callbacks after calling this. */ - virtual CHIP_ERROR StopDiscovery() = 0; + virtual CHIP_ERROR StopDiscovery(DiscoveryContext & context) = 0; /** * Verify the validity of an address that appears to be out of date (for example diff --git a/src/lib/dnssd/ResolverProxy.cpp b/src/lib/dnssd/ResolverProxy.cpp new file mode 100644 index 00000000000000..3e7446ebbbdc6b --- /dev/null +++ b/src/lib/dnssd/ResolverProxy.cpp @@ -0,0 +1,66 @@ +/* + * + * Copyright (c) 2023 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ResolverProxy.h" + +#include + +namespace chip { +namespace Dnssd { + +CHIP_ERROR ResolverProxy::Init(Inet::EndPointManager * udpEndPoint) +{ + VerifyOrReturnError(mContext == nullptr, CHIP_ERROR_INCORRECT_STATE); + + ReturnErrorOnFailure(mResolver.Init(udpEndPoint)); + mContext = Platform::New(); + VerifyOrReturnError(mContext != nullptr, CHIP_ERROR_NO_MEMORY); + + return CHIP_NO_ERROR; +} + +void ResolverProxy::Shutdown() +{ + VerifyOrReturn(mContext != nullptr); + mContext->SetCommissioningDelegate(nullptr); + mContext->Release(); + mContext = nullptr; +} + +CHIP_ERROR ResolverProxy::DiscoverCommissionableNodes(DiscoveryFilter filter) +{ + VerifyOrReturnError(mContext != nullptr, CHIP_ERROR_INCORRECT_STATE); + + return mResolver.DiscoverCommissionableNodes(filter, *mContext); +} + +CHIP_ERROR ResolverProxy::DiscoverCommissioners(DiscoveryFilter filter) +{ + VerifyOrReturnError(mContext != nullptr, CHIP_ERROR_INCORRECT_STATE); + + return mResolver.DiscoverCommissioners(filter, *mContext); +} + +CHIP_ERROR ResolverProxy::StopDiscovery() +{ + VerifyOrReturnError(mContext != nullptr, CHIP_ERROR_INCORRECT_STATE); + + return mResolver.StopDiscovery(*mContext); +} + +} // namespace Dnssd +} // namespace chip diff --git a/src/lib/dnssd/ResolverProxy.h b/src/lib/dnssd/ResolverProxy.h index 176316ef8cd053..09a50e89c1a209 100644 --- a/src/lib/dnssd/ResolverProxy.h +++ b/src/lib/dnssd/ResolverProxy.h @@ -17,112 +17,48 @@ #pragma once -#include #include namespace chip { namespace Dnssd { -class ResolverDelegateProxy : public ReferenceCounted, public CommissioningResolveDelegate - +/** + * Convenience class for discovering Matter commissioners and commissionable nodes. + * + * The class simplifies the usage of the global DNS-SD resolver to discover Matter nodes by managing + * the lifetime of the discovery context object. + * + * The proxy provides a method to register an external commissioning delegate whose + * `OnNodeDiscovered` method is called whenever a new node is discovered. The delegate is + * automatically unregistered when the proxy is shut down or destroyed. + * + * The proxy can be safely shut down or destroyed even if the last discovery operation has not + * finished yet. + */ +class ResolverProxy { public: - void SetCommissioningDelegate(CommissioningResolveDelegate * delegate) { mCommissioningDelegate = delegate; } - - // CommissioningResolveDelegate - void OnNodeDiscovered(const DiscoveredNodeData & nodeData) override - { - if (mCommissioningDelegate != nullptr) - { - mCommissioningDelegate->OnNodeDiscovered(nodeData); - } - else - { - ChipLogError(Discovery, "Missing commissioning delegate. Data discarded."); - } - } + explicit ResolverProxy(Resolver * resolver = nullptr) : mResolver(resolver != nullptr ? *resolver : Resolver::Instance()) {} + ~ResolverProxy() { Shutdown(); } -private: - CommissioningResolveDelegate * mCommissioningDelegate = nullptr; -}; + CHIP_ERROR Init(Inet::EndPointManager * udpEndPoint = nullptr); + void Shutdown(); -class ResolverProxy : public Resolver -{ -public: - ResolverProxy() {} - ~ResolverProxy() override; - - // Resolver interface. - CHIP_ERROR Init(Inet::EndPointManager * udpEndPoint = nullptr) override + void SetCommissioningDelegate(CommissioningResolveDelegate * delegate) { - ReturnErrorOnFailure(chip::Dnssd::Resolver::Instance().Init(udpEndPoint)); - VerifyOrReturnError(mDelegate == nullptr, CHIP_ERROR_INCORRECT_STATE); - mDelegate = chip::Platform::New(); - - if (mDelegate != nullptr) + if (mContext != nullptr) { - if (mPreInitCommissioningDelegate != nullptr) - { - ChipLogProgress(Discovery, "Setting commissioning delegate post init"); - mDelegate->SetCommissioningDelegate(mPreInitCommissioningDelegate); - mPreInitCommissioningDelegate = nullptr; - } + mContext->SetCommissioningDelegate(delegate); } - - return mDelegate != nullptr ? CHIP_NO_ERROR : CHIP_ERROR_NO_MEMORY; } - bool IsInitialized() override { return Resolver::Instance().IsInitialized(); } - - void SetOperationalDelegate(OperationalResolveDelegate * delegate) override - { - /// Unfortunately cannot remove this method since it is in a Resolver interface. - ChipLogError(Discovery, "!!! Operational proxy does NOT support operational discovery"); - ChipLogError(Discovery, "!!! Please use AddressResolver or DNSSD Resolver directly"); - chipDie(); // force detection of invalid usages. - } - - void SetCommissioningDelegate(CommissioningResolveDelegate * delegate) override - { - if (mDelegate != nullptr) - { - mDelegate->SetCommissioningDelegate(delegate); - } - else - { - if (delegate != nullptr) - { - ChipLogError(Discovery, "Delaying proxy of commissioning discovery: missing delegate"); - } - mPreInitCommissioningDelegate = delegate; - } - } - - void Shutdown() override - { - VerifyOrReturn(mDelegate != nullptr); - mDelegate->SetCommissioningDelegate(nullptr); - mDelegate->Release(); - mDelegate = nullptr; - } - - CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter = DiscoveryFilter()) override; - CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter = DiscoveryFilter()) override; - CHIP_ERROR StopDiscovery() override; - CHIP_ERROR ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) override; - - // TODO: ResolverProxy should not be used anymore to implement operational node resolution - // This method still here because Resolver interface requires it - CHIP_ERROR ResolveNodeId(const PeerId & peerId) override { return CHIP_ERROR_NOT_IMPLEMENTED; } - void NodeIdResolutionNoLongerNeeded(const PeerId & peerId) override {} + CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter = DiscoveryFilter()); + CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter = DiscoveryFilter()); + CHIP_ERROR StopDiscovery(); private: - ResolverDelegateProxy * mDelegate = nullptr; - CommissioningResolveDelegate * mPreInitCommissioningDelegate = nullptr; - - // While discovery (commissionable or commissioner) is ongoing, - // mDiscoveryContext may have a value to allow StopDiscovery to work. - Optional mDiscoveryContext; + Resolver & mResolver; + DiscoveryContext * mContext = nullptr; }; } // namespace Dnssd diff --git a/src/lib/dnssd/Resolver_ImplMinimalMdns.cpp b/src/lib/dnssd/Resolver_ImplMinimalMdns.cpp index 416c747d830cc6..64461965367b13 100644 --- a/src/lib/dnssd/Resolver_ImplMinimalMdns.cpp +++ b/src/lib/dnssd/Resolver_ImplMinimalMdns.cpp @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -274,6 +273,7 @@ class MinMdnsResolver : public Resolver, public MdnsPacketDelegate { GlobalMinimalMdnsServer::Instance().SetResponseDelegate(this); } + ~MinMdnsResolver() { SetDiscoveryContext(nullptr); } //// MdnsPacketDelegate implementation void OnMdnsPacketData(const BytesRange & data, const chip::Inet::IPPacketInfo * info) override; @@ -283,21 +283,21 @@ class MinMdnsResolver : public Resolver, public MdnsPacketDelegate bool IsInitialized() override; void Shutdown() override; void SetOperationalDelegate(OperationalResolveDelegate * delegate) override { mOperationalDelegate = delegate; } - void SetCommissioningDelegate(CommissioningResolveDelegate * delegate) override { mCommissioningDelegate = delegate; } CHIP_ERROR ResolveNodeId(const PeerId & peerId) override; void NodeIdResolutionNoLongerNeeded(const PeerId & peerId) override; - CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter = DiscoveryFilter()) override; - CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter = DiscoveryFilter()) override; - CHIP_ERROR StopDiscovery() override; + CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter, DiscoveryContext & context) override; + CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter, DiscoveryContext & context) override; + CHIP_ERROR StopDiscovery(DiscoveryContext & context) override; CHIP_ERROR ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) override; private: - OperationalResolveDelegate * mOperationalDelegate = nullptr; - CommissioningResolveDelegate * mCommissioningDelegate = nullptr; - System::Layer * mSystemLayer = nullptr; + OperationalResolveDelegate * mOperationalDelegate = nullptr; + DiscoveryContext * mDiscoveryContext = nullptr; + System::Layer * mSystemLayer = nullptr; ActiveResolveAttempts mActiveResolves; PacketParser mPacketParser; + void SetDiscoveryContext(DiscoveryContext * context); void ScheduleIpAddressResolve(SerializedQNameIterator hostName); CHIP_ERROR SendAllPendingQueries(); @@ -332,6 +332,21 @@ class MinMdnsResolver : public Resolver, public MdnsPacketDelegate char qnameStorage[kMaxQnameSize]; }; +void MinMdnsResolver::SetDiscoveryContext(DiscoveryContext * context) +{ + if (mDiscoveryContext != nullptr) + { + mDiscoveryContext->Release(); + } + + if (context != nullptr) + { + context->Retain(); + } + + mDiscoveryContext = context; +} + void MinMdnsResolver::ScheduleIpAddressResolve(SerializedQNameIterator hostName) { HeapQName target(hostName); @@ -409,9 +424,9 @@ void MinMdnsResolver::AdvancePendingResolverStates() if (discoveredNodeIsRelevant) { - if (mCommissioningDelegate != nullptr) + if (mDiscoveryContext != nullptr) { - mCommissioningDelegate->OnNodeDiscovered(nodeData); + mDiscoveryContext->OnNodeDiscovered(nodeData); } else { @@ -670,18 +685,26 @@ void MinMdnsResolver::ExpireIncrementalResolvers() } } -CHIP_ERROR MinMdnsResolver::DiscoverCommissionableNodes(DiscoveryFilter filter) +CHIP_ERROR MinMdnsResolver::DiscoverCommissionableNodes(DiscoveryFilter filter, DiscoveryContext & context) { + // minmdns currently supports only one discovery context at a time so override the previous context + SetDiscoveryContext(&context); + return BrowseNodes(DiscoveryType::kCommissionableNode, filter); } -CHIP_ERROR MinMdnsResolver::DiscoverCommissioners(DiscoveryFilter filter) +CHIP_ERROR MinMdnsResolver::DiscoverCommissioners(DiscoveryFilter filter, DiscoveryContext & context) { + // minmdns currently supports only one discovery context at a time so override the previous context + SetDiscoveryContext(&context); + return BrowseNodes(DiscoveryType::kCommissionerNode, filter); } -CHIP_ERROR MinMdnsResolver::StopDiscovery() +CHIP_ERROR MinMdnsResolver::StopDiscovery(DiscoveryContext & context) { + SetDiscoveryContext(nullptr); + return mActiveResolves.CompleteAllBrowses(); } @@ -740,37 +763,5 @@ Resolver & chip::Dnssd::Resolver::Instance() return gResolver; } -ResolverProxy::~ResolverProxy() -{ - // TODO: this is a hack: resolver proxies used for commissionable discovery - // and they don't interact well with each other. - gResolver.SetCommissioningDelegate(nullptr); - Shutdown(); -} - -CHIP_ERROR ResolverProxy::DiscoverCommissionableNodes(DiscoveryFilter filter) -{ - VerifyOrReturnError(mDelegate != nullptr, CHIP_ERROR_INCORRECT_STATE); - chip::Dnssd::Resolver::Instance().SetCommissioningDelegate(mDelegate); - return chip::Dnssd::Resolver::Instance().DiscoverCommissionableNodes(filter); -} - -CHIP_ERROR ResolverProxy::DiscoverCommissioners(DiscoveryFilter filter) -{ - VerifyOrReturnError(mDelegate != nullptr, CHIP_ERROR_INCORRECT_STATE); - chip::Dnssd::Resolver::Instance().SetCommissioningDelegate(mDelegate); - return chip::Dnssd::Resolver::Instance().DiscoverCommissioners(filter); -} - -CHIP_ERROR ResolverProxy::StopDiscovery() -{ - return CHIP_ERROR_NOT_IMPLEMENTED; -} - -CHIP_ERROR ResolverProxy::ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) -{ - return CHIP_ERROR_NOT_IMPLEMENTED; -} - } // namespace Dnssd } // namespace chip diff --git a/src/lib/dnssd/Resolver_ImplNone.cpp b/src/lib/dnssd/Resolver_ImplNone.cpp index 3d0d97f57cd449..9a1f40f3008dff 100644 --- a/src/lib/dnssd/Resolver_ImplNone.cpp +++ b/src/lib/dnssd/Resolver_ImplNone.cpp @@ -17,7 +17,6 @@ #include "Resolver.h" -#include #include namespace chip { @@ -31,7 +30,6 @@ class NoneResolver : public Resolver bool IsInitialized() override { return true; } void Shutdown() override {} void SetOperationalDelegate(OperationalResolveDelegate * delegate) override {} - void SetCommissioningDelegate(CommissioningResolveDelegate * delegate) override {} CHIP_ERROR ResolveNodeId(const PeerId & peerId) override { @@ -42,12 +40,15 @@ class NoneResolver : public Resolver { ChipLogError(Discovery, "Failed to stop resolving node ID: dnssd resolving not available"); } - CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter = DiscoveryFilter()) override + CHIP_ERROR DiscoverCommissionableNodes(DiscoveryFilter filter, DiscoveryContext & context) override { return CHIP_ERROR_NOT_IMPLEMENTED; } - CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter = DiscoveryFilter()) override { return CHIP_ERROR_NOT_IMPLEMENTED; } - CHIP_ERROR StopDiscovery() override { return CHIP_ERROR_NOT_IMPLEMENTED; } + CHIP_ERROR DiscoverCommissioners(DiscoveryFilter filter, DiscoveryContext & context) override + { + return CHIP_ERROR_NOT_IMPLEMENTED; + } + CHIP_ERROR StopDiscovery(DiscoveryContext & context) override { return CHIP_ERROR_NOT_IMPLEMENTED; } CHIP_ERROR ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) override { return CHIP_ERROR_NOT_IMPLEMENTED; @@ -63,30 +64,5 @@ Resolver & chip::Dnssd::Resolver::Instance() return gResolver; } -ResolverProxy::~ResolverProxy() -{ - Shutdown(); -} - -CHIP_ERROR ResolverProxy::DiscoverCommissionableNodes(DiscoveryFilter filter) -{ - return CHIP_ERROR_NOT_IMPLEMENTED; -} - -CHIP_ERROR ResolverProxy::DiscoverCommissioners(DiscoveryFilter filter) -{ - return CHIP_ERROR_NOT_IMPLEMENTED; -} - -CHIP_ERROR ResolverProxy::StopDiscovery() -{ - return CHIP_ERROR_NOT_IMPLEMENTED; -} - -CHIP_ERROR ResolverProxy::ReconfirmRecord(const char * hostname, Inet::IPAddress address, Inet::InterfaceId interfaceId) -{ - return CHIP_ERROR_NOT_IMPLEMENTED; -} - } // namespace Dnssd } // namespace chip diff --git a/src/lib/shell/commands/Dns.cpp b/src/lib/shell/commands/Dns.cpp index 50c6d1ad246cbb..69d1b478523893 100644 --- a/src/lib/shell/commands/Dns.cpp +++ b/src/lib/shell/commands/Dns.cpp @@ -211,12 +211,7 @@ bool ParseSubType(int argc, char ** argv, Dnssd::DiscoveryFilter & filter) CHIP_ERROR BrowseCommissionableHandler(int argc, char ** argv) { Dnssd::DiscoveryFilter filter; - - if (!ParseSubType(argc, argv, filter)) - { - streamer_printf(streamer_get(), "Invalid argument\r\n"); - return CHIP_ERROR_INVALID_ARGUMENT; - } + VerifyOrReturnError(ParseSubType(argc, argv, filter), CHIP_ERROR_INVALID_ARGUMENT); streamer_printf(streamer_get(), "Browsing commissionable nodes...\r\n"); @@ -226,12 +221,7 @@ CHIP_ERROR BrowseCommissionableHandler(int argc, char ** argv) CHIP_ERROR BrowseCommissionerHandler(int argc, char ** argv) { Dnssd::DiscoveryFilter filter; - - if (!ParseSubType(argc, argv, filter)) - { - streamer_printf(streamer_get(), "Invalid argument\r\n"); - return CHIP_ERROR_INVALID_ARGUMENT; - } + VerifyOrReturnError(ParseSubType(argc, argv, filter), CHIP_ERROR_INVALID_ARGUMENT); streamer_printf(streamer_get(), "Browsing commissioners...\r\n"); @@ -246,6 +236,9 @@ CHIP_ERROR BrowseHandler(int argc, char ** argv) return CHIP_NO_ERROR; } + sResolverProxy.Init(DeviceLayer::UDPEndPointManager()); + sResolverProxy.SetCommissioningDelegate(&sDnsShellResolverDelegate); + return sShellDnsBrowseSubcommands.ExecCommand(argc, argv); } @@ -257,9 +250,6 @@ CHIP_ERROR DnsHandler(int argc, char ** argv) return CHIP_NO_ERROR; } - sResolverProxy.Init(DeviceLayer::UDPEndPointManager()); - sResolverProxy.SetCommissioningDelegate(&sDnsShellResolverDelegate); - return sShellDnsSubcommands.ExecCommand(argc, argv); } diff --git a/src/lib/support/BitMask.h b/src/lib/support/BitMask.h index 313f113ad80154..d614e681f4e945 100644 --- a/src/lib/support/BitMask.h +++ b/src/lib/support/BitMask.h @@ -87,7 +87,7 @@ class BitMask : public BitFlags IntegerType updated = static_cast(BitFlags::Raw() & ~bitMask); // Set the right bits - updated |= static_cast(bitMask & (value << shift)); + updated = static_cast(updated | (bitMask & (value << shift))); BitFlags::SetRaw(updated); diff --git a/src/platform/BUILD.gn b/src/platform/BUILD.gn index 39d94748c117a6..e00c3618bd59da 100644 --- a/src/platform/BUILD.gn +++ b/src/platform/BUILD.gn @@ -111,6 +111,7 @@ if (chip_device_platform != "none" && chip_device_platform != "external") { "CHIP_DEVICE_CONFIG_ENABLE_WPA=${chip_device_config_enable_wpa}", "CHIP_ENABLE_OPENTHREAD=${chip_enable_openthread}", "CHIP_DEVICE_CONFIG_THREAD_FTD=${chip_device_config_thread_ftd}", + "CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER=${chip_openthread_border_router}", "CHIP_STACK_LOCK_TRACKING_ENABLED=${chip_stack_lock_tracking_log}", "CHIP_STACK_LOCK_TRACKING_ERROR_FATAL=${chip_stack_lock_tracking_fatal}", "CHIP_ENABLE_ADDITIONAL_DATA_ADVERTISING=${chip_enable_additional_data_advertising}", diff --git a/src/platform/ESP32/ESP32SecureCertDACProvider.cpp b/src/platform/ESP32/ESP32SecureCertDACProvider.cpp index f7de0bd9992090..1b06224318231c 100644 --- a/src/platform/ESP32/ESP32SecureCertDACProvider.cpp +++ b/src/platform/ESP32/ESP32SecureCertDACProvider.cpp @@ -79,8 +79,8 @@ CHIP_ERROR ESP32SecureCertDACProvider ::GetDeviceAttestationCert(MutableByteSpan { ESP_FAULT_ASSERT(err == ESP_OK && dac_cert != NULL && dac_len != 0); VerifyOrReturnError(dac_len <= kMaxDERCertLength, CHIP_ERROR_UNSUPPORTED_CERT_FORMAT, - esp_secure_cert_free_ca_cert(dac_cert)); - VerifyOrReturnError(dac_len <= outBuffer.size(), CHIP_ERROR_BUFFER_TOO_SMALL, esp_secure_cert_free_ca_cert(dac_cert)); + esp_secure_cert_free_device_cert(dac_cert)); + VerifyOrReturnError(dac_len <= outBuffer.size(), CHIP_ERROR_BUFFER_TOO_SMALL, esp_secure_cert_free_device_cert(dac_cert)); memcpy(outBuffer.data(), dac_cert, outBuffer.size()); outBuffer.reduce_size(dac_len); esp_secure_cert_free_device_cert(dac_cert); diff --git a/src/platform/Infineon/CYW30739/BUILD.gn b/src/platform/Infineon/CYW30739/BUILD.gn index ff0704fb37aedc..7da725e63034be 100644 --- a/src/platform/Infineon/CYW30739/BUILD.gn +++ b/src/platform/Infineon/CYW30739/BUILD.gn @@ -83,14 +83,6 @@ static_library("CYW30739") { "ThreadStackManagerImpl.h", ] - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h - public_configs = [ - "${chip_root}/src/lib/address_resolve:default_address_resolve_config", - ] - deps += [ "${chip_root}/third_party/openthread/platforms:libopenthread-platform", ] diff --git a/src/platform/Infineon/CYW30739/args.gni b/src/platform/Infineon/CYW30739/args.gni index a0d31c75f4c49b..252c5e6716e59e 100644 --- a/src/platform/Infineon/CYW30739/args.gni +++ b/src/platform/Infineon/CYW30739/args.gni @@ -64,3 +64,9 @@ openthread_config_ip6_slaac_enable = true openthread_config_joiner_enable = true openthread_config_log_output = "platform_defined" openthread_config_srp_client_enable = true + +# TODO: this should be removed once sufficient flash for things +# like: +# +# ./scripts/build/build_examples.py --target cyw30739-cyw930739m2evb_01-ota-requestor build +chip_detail_logging = false diff --git a/src/platform/Linux/NetworkCommissioningDriver.h b/src/platform/Linux/NetworkCommissioningDriver.h index d54470e70cb7fe..69169b697864d1 100644 --- a/src/platform/Linux/NetworkCommissioningDriver.h +++ b/src/platform/Linux/NetworkCommissioningDriver.h @@ -145,6 +145,8 @@ class LinuxThreadDriver final : public ThreadDriver // ThreadDriver Status AddOrUpdateNetwork(ByteSpan operationalDataset, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex) override; void ScanNetworks(ThreadDriver::ScanCallback * callback) override; + ThreadCapabilities GetSupportedThreadFeatures() override; + uint16_t GetThreadVersion() override; private: ThreadNetworkIterator mThreadIterator = ThreadNetworkIterator(this); diff --git a/src/platform/Linux/NetworkCommissioningThreadDriver.cpp b/src/platform/Linux/NetworkCommissioningThreadDriver.cpp index ed82e2a08e636f..9bb6015809fc9a 100644 --- a/src/platform/Linux/NetworkCommissioningThreadDriver.cpp +++ b/src/platform/Linux/NetworkCommissioningThreadDriver.cpp @@ -197,6 +197,25 @@ bool LinuxThreadDriver::ThreadNetworkIterator::Next(Network & item) return true; } +ThreadCapabilities LinuxThreadDriver::GetSupportedThreadFeatures() +{ + BitMask capabilites = 0; + capabilites.SetField(ThreadCapabilities::kIsBorderRouterCapable, CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER); + capabilites.SetField(ThreadCapabilities::kIsRouterCapable, CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsSleepyEndDeviceCapable, !CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsFullThreadDevice, CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsSynchronizedSleepyEndDeviceCapable, + (!CHIP_DEVICE_CONFIG_THREAD_FTD && CHIP_DEVICE_CONFIG_THREAD_SSED)); + return capabilites; +} + +uint16_t LinuxThreadDriver::GetThreadVersion() +{ + // TODO https://github.com/project-chip/connectedhomeip/issues/30602 + // Needs to be implemented with DBUS io.openthread.BorderRouter Thread API + return 0; +} + #endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD } // namespace NetworkCommissioning diff --git a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp index 90d4191b1f1428..0859c3f723d5d5 100644 --- a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp +++ b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp @@ -245,6 +245,24 @@ bool GenericThreadDriver::ThreadNetworkIterator::Next(Network & item) return true; } +ThreadCapabilities GenericThreadDriver::GetSupportedThreadFeatures() +{ + BitMask capabilites = 0; + capabilites.SetField(ThreadCapabilities::kIsBorderRouterCapable, + CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER /*OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE*/); + capabilites.SetField(ThreadCapabilities::kIsRouterCapable, CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsSleepyEndDeviceCapable, !CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsFullThreadDevice, CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsSynchronizedSleepyEndDeviceCapable, + (!CHIP_DEVICE_CONFIG_THREAD_FTD && CHIP_DEVICE_CONFIG_THREAD_SSED)); + return capabilites; +} + +uint16_t GenericThreadDriver::GetThreadVersion() +{ + return otThreadGetVersion(); +} + } // namespace NetworkCommissioning } // namespace DeviceLayer } // namespace chip diff --git a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h index 4a87d07e2fb084..bbfec6a44ff879 100644 --- a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h +++ b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h @@ -96,6 +96,8 @@ class GenericThreadDriver final : public ThreadDriver uint8_t GetMaxNetworks() override { return 1; } uint8_t GetScanNetworkTimeoutSeconds() override { return scanNetworkTimeoutSeconds; } uint8_t GetConnectNetworkTimeoutSeconds() override { return connectNetworkTimeout; } + ThreadCapabilities GetSupportedThreadFeatures() override; + uint16_t GetThreadVersion() override; void SetScanNetworkTimeoutSeconds(uint8_t scanTimeoutSec) { scanNetworkTimeoutSeconds = scanTimeoutSec; } void SetConnectNetworkTimeoutSeconds(uint8_t connectTimeoutSec) { connectNetworkTimeout = connectTimeoutSec; } diff --git a/src/platform/Tizen/NetworkCommissioningDriver.h b/src/platform/Tizen/NetworkCommissioningDriver.h index cdd0ceecd2abd2..64db40b2d5ce23 100644 --- a/src/platform/Tizen/NetworkCommissioningDriver.h +++ b/src/platform/Tizen/NetworkCommissioningDriver.h @@ -147,6 +147,8 @@ class TizenThreadDriver final : public ThreadDriver // ThreadDriver Status AddOrUpdateNetwork(ByteSpan operationalDataset, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex) override; void ScanNetworks(ThreadDriver::ScanCallback * callback) override; + ThreadCapabilities GetSupportedThreadFeatures() override; + uint16_t GetThreadVersion() override; private: ThreadNetworkIterator mThreadIterator = ThreadNetworkIterator(this); diff --git a/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp b/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp index 8d61c5c4bd3627..003564b4c90f0f 100644 --- a/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp +++ b/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp @@ -164,6 +164,25 @@ bool TizenThreadDriver::ThreadNetworkIterator::Next(Network & item) return false; } +ThreadCapabilities TizenThreadDriver::GetSupportedThreadFeatures() +{ + BitMask capabilites = 0; + capabilites.SetField(ThreadCapabilities::kIsBorderRouterCapable, + CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER /*OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE*/); + capabilites.SetField(ThreadCapabilities::kIsRouterCapable, CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsSleepyEndDeviceCapable, !CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsFullThreadDevice, CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsSynchronizedSleepyEndDeviceCapable, + (!CHIP_DEVICE_CONFIG_THREAD_FTD && CHIP_DEVICE_CONFIG_THREAD_SSED)); + return capabilites; +} + +uint16_t TizenThreadDriver::GetThreadVersion() +{ + // TODO Needs to be implemented with Tizen Thread stack api + return 0; +} + #endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD } // namespace NetworkCommissioning diff --git a/src/platform/bouffalolab/BL702/BUILD.gn b/src/platform/bouffalolab/BL702/BUILD.gn index 28cc128fd7fb61..8582019df301e7 100644 --- a/src/platform/bouffalolab/BL702/BUILD.gn +++ b/src/platform/bouffalolab/BL702/BUILD.gn @@ -101,14 +101,6 @@ static_library("BL702") { ] deps += [ "${chip_root}/src/lib/dnssd:platform_header" ] } - - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h - public_configs = [ - "${chip_root}/src/lib/address_resolve:default_address_resolve_config", - ] } if (chip_enable_ethernet) { diff --git a/src/platform/bouffalolab/BL702L/BUILD.gn b/src/platform/bouffalolab/BL702L/BUILD.gn index 4e018cf8cd65ad..547b9c695730c5 100644 --- a/src/platform/bouffalolab/BL702L/BUILD.gn +++ b/src/platform/bouffalolab/BL702L/BUILD.gn @@ -88,14 +88,6 @@ static_library("BL702L") { ] deps += [ "${chip_root}/src/lib/dnssd:platform_header" ] } - - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h - public_configs = [ - "${chip_root}/src/lib/address_resolve:default_address_resolve_config", - ] } deps += [ "${chip_root}/src/credentials:credentials_header" ] diff --git a/src/platform/cc13xx_26xx/cc13x2_26x2/BUILD.gn b/src/platform/cc13xx_26xx/cc13x2_26x2/BUILD.gn index f293eee81e3e58..c86b77ec45f4eb 100644 --- a/src/platform/cc13xx_26xx/cc13x2_26x2/BUILD.gn +++ b/src/platform/cc13xx_26xx/cc13x2_26x2/BUILD.gn @@ -53,13 +53,6 @@ static_library("cc13x2_26x2") { "${chip_root}/src/platform:platform_base", ] - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h - public_configs = - [ "${chip_root}/src/lib/address_resolve:default_address_resolve_config" ] - if (chip_enable_ble) { sources += [ "../BLEManagerImpl.cpp", diff --git a/src/platform/cc13xx_26xx/cc13x4_26x4/BUILD.gn b/src/platform/cc13xx_26xx/cc13x4_26x4/BUILD.gn index d6967347eca720..18298ed0ce5841 100644 --- a/src/platform/cc13xx_26xx/cc13x4_26x4/BUILD.gn +++ b/src/platform/cc13xx_26xx/cc13x4_26x4/BUILD.gn @@ -53,13 +53,6 @@ static_library("cc13x4_26x4") { "${chip_root}/src/platform:platform_base", ] - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h - public_configs = - [ "${chip_root}/src/lib/address_resolve:default_address_resolve_config" ] - if (chip_enable_ble) { sources += [ "../BLEManagerImpl.cpp", diff --git a/src/platform/device.gni b/src/platform/device.gni index cf1dc07325a664..9afb252ca0b809 100644 --- a/src/platform/device.gni +++ b/src/platform/device.gni @@ -59,6 +59,11 @@ declare_args() { declare_args() { chip_openthread_ftd = chip_enable_openthread + # Set platform define CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER + # Users should ensure that it sets their thread stack define OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE + # or that their setting matches. + chip_openthread_border_router = false + # Enable wifi support. chip_enable_wifi = chip_device_platform == "linux" || chip_device_platform == "esp32" || diff --git a/src/platform/nxp/k32w/k32w0/BUILD.gn b/src/platform/nxp/k32w/k32w0/BUILD.gn index a5c204a10b956c..a58609f28ef539 100644 --- a/src/platform/nxp/k32w/k32w0/BUILD.gn +++ b/src/platform/nxp/k32w/k32w0/BUILD.gn @@ -140,14 +140,6 @@ static_library("k32w0") { ] deps += [ "${chip_root}/src/lib/dnssd:platform_header" ] } - - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h - public_configs = [ - "${chip_root}/src/lib/address_resolve:default_address_resolve_config", - ] } public_deps += [ "${chip_root}/src/crypto" ] diff --git a/src/platform/nxp/k32w/k32w1/BUILD.gn b/src/platform/nxp/k32w/k32w1/BUILD.gn index 053f8d784ac180..187a7360cd27d2 100644 --- a/src/platform/nxp/k32w/k32w1/BUILD.gn +++ b/src/platform/nxp/k32w/k32w1/BUILD.gn @@ -106,11 +106,4 @@ static_library("k32w1") { } public_deps += [ "${chip_root}/src/crypto" ] - - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h - public_configs = - [ "${chip_root}/src/lib/address_resolve:default_address_resolve_config" ] } diff --git a/src/platform/nxp/rt/rw61x/BUILD.gn b/src/platform/nxp/rt/rw61x/BUILD.gn index 1cf0b5ac55f9a7..5de785556ef7f7 100644 --- a/src/platform/nxp/rt/rw61x/BUILD.gn +++ b/src/platform/nxp/rt/rw61x/BUILD.gn @@ -144,13 +144,5 @@ static_library("nxp_platform") { "${chip_root}/src/platform:syscalls_stub", ] - public_configs = [ - ":nxp_platform_config", - - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h - "${chip_root}/src/lib/address_resolve:default_address_resolve_config", - ] + public_configs = [ ":nxp_platform_config" ] } diff --git a/src/platform/qpg/BUILD.gn b/src/platform/qpg/BUILD.gn index 4e1e5241269cc8..1087c6d06677c8 100644 --- a/src/platform/qpg/BUILD.gn +++ b/src/platform/qpg/BUILD.gn @@ -70,13 +70,8 @@ static_library("qpg") { public_deps += [ "${openthread_root}:libopenthread-mtd" ] } - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h public_configs += [ "${chip_root}/third_party/openthread/platforms/qpg:openthread_qpg_config", - "${chip_root}/src/lib/address_resolve:default_address_resolve_config", ] sources += [ diff --git a/src/platform/stm32/BUILD.gn b/src/platform/stm32/BUILD.gn index f6610d7ff7329a..43f656d0eca988 100644 --- a/src/platform/stm32/BUILD.gn +++ b/src/platform/stm32/BUILD.gn @@ -89,14 +89,6 @@ static_library("stm32") { public_deps += [ "${stm32_sdk_build_root}:stm32_sdk" ] deps += [ "${chip_root}/src/lib/dnssd:platform_header" ] - - # TODO: platform should NOT depend on default_address_resolve_config. This should - # be removed. See https://github.com/project-chip/connectedhomeip/issues/30596 - # - # Currently this exists because OpenThread platform includes src/app/Server.h - public_configs = [ - "${chip_root}/src/lib/address_resolve:default_address_resolve_config", - ] } # Set the compiler flags diff --git a/src/platform/webos/NetworkCommissioningDriver.h b/src/platform/webos/NetworkCommissioningDriver.h index b466353743d713..b862e32966e65d 100644 --- a/src/platform/webos/NetworkCommissioningDriver.h +++ b/src/platform/webos/NetworkCommissioningDriver.h @@ -145,6 +145,8 @@ class LinuxThreadDriver final : public ThreadDriver // ThreadDriver Status AddOrUpdateNetwork(ByteSpan operationalDataset, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex) override; void ScanNetworks(ThreadDriver::ScanCallback * callback) override; + ThreadCapabilities GetSupportedThreadFeatures() override; + uint16_t GetThreadVersion() override; private: ThreadNetworkIterator mThreadIterator = ThreadNetworkIterator(this); diff --git a/src/platform/webos/NetworkCommissioningThreadDriver.cpp b/src/platform/webos/NetworkCommissioningThreadDriver.cpp index fbc7e68ba68592..557d3f6f7f7cf7 100644 --- a/src/platform/webos/NetworkCommissioningThreadDriver.cpp +++ b/src/platform/webos/NetworkCommissioningThreadDriver.cpp @@ -197,6 +197,25 @@ bool LinuxThreadDriver::ThreadNetworkIterator::Next(Network & item) return true; } +ThreadCapabilities LinuxThreadDriver::GetSupportedThreadFeatures() +{ + BitMask capabilites = 0; + capabilites.SetField(ThreadCapabilities::kIsBorderRouterCapable, CHIP_DEVICE_CONFIG_THREAD_BORDER_ROUTER); + capabilites.SetField(ThreadCapabilities::kIsRouterCapable, CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsSleepyEndDeviceCapable, !CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsFullThreadDevice, CHIP_DEVICE_CONFIG_THREAD_FTD); + capabilites.SetField(ThreadCapabilities::kIsSynchronizedSleepyEndDeviceCapable, + (!CHIP_DEVICE_CONFIG_THREAD_FTD && CHIP_DEVICE_CONFIG_THREAD_SSED)); + return capabilites; +} + +uint16_t LinuxThreadDriver::GetThreadVersion() +{ + // TODO https://github.com/project-chip/connectedhomeip/issues/30602 + // Needs to be implemented with DBUS io.openthread.BorderRouter Thread API + return 0; +} + #endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD } // namespace NetworkCommissioning diff --git a/src/tools/PICS-generator/PICSGenerator.py b/src/tools/PICS-generator/PICSGenerator.py new file mode 100644 index 00000000000000..aa774f9cb127e3 --- /dev/null +++ b/src/tools/PICS-generator/PICSGenerator.py @@ -0,0 +1,446 @@ +# +# Copyright (c) 2023 Project CHIP Authors +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import argparse +import json +import os +import pathlib +import sys +import xml.etree.ElementTree as ET + +import chip.clusters as Clusters +from rich.console import Console + +# Add the path to python_testing folder, in order to be able to import from matter_testing_support +sys.path.append(os.path.abspath(sys.path[0] + "/../../python_testing")) +from matter_testing_support import MatterBaseTest, async_test_body, default_matter_test_main # noqa: E402 + +console = None + + +def GenerateDevicePicsXmlFiles(clusterName, clusterPicsCode, featurePicsList, attributePicsList, acceptedCommandPicsList, generatedCommandPicsList, outputPathStr): + + xmlPath = xmlTemplatePathStr + fileName = "" + + print(f"Handling PICS for {clusterName}") + + # Map clusters to common XML template if needed + otaProviderCluster = "OTA Software Update Provider Cluster" + otaRequestorCluster = "OTA Software Update Requestor Cluster" + onOffCluster = "On/Off Cluster" + groupKeyManagementCluster = "Group Key Management Cluster" + nodeOperationalCredentialsCluster = "Node Operational Credentials Cluster" + basicInformationCluster = "Basic Information Cluster" + networkCommissioningCluster = "Network Commissioning Cluster" + + if otaProviderCluster in clusterName or otaRequestorCluster in clusterName: + clusterName = "OTA Software Update" + + elif onOffCluster == clusterName: + clusterName = clusterName.replace("/", "-") + + elif groupKeyManagementCluster == clusterName: + clusterName = "Group Communication" + + elif nodeOperationalCredentialsCluster == clusterName or basicInformationCluster == clusterName or networkCommissioningCluster == clusterName: + clusterName = clusterName.replace("Cluster", "").strip() + + # Determine if file has already been handled and use this file + for outputFolderFileName in os.listdir(outputPathStr): + if clusterName in outputFolderFileName: + xmlPath = outputPathStr + fileName = outputFolderFileName + break + + # If no file is found in output folder, determine if there is a match for the cluster name in input folder + if fileName == "": + for file in xmlFileList: + if file.lower().startswith(clusterName.lower()): + fileName = file + break + else: + console.print(f"[red]Could not find matching file for \"{clusterName}\" ❌") + return + + try: + # Open the XML PICS template file + console.print(f"Open \"{xmlPath}{fileName}\"") + parser = ET.XMLParser(target=ET.TreeBuilder(insert_comments=True)) + tree = ET.parse(f"{xmlPath}{fileName}", parser) + root = tree.getroot() + except ET.ParseError: + console.print(f"[red]Could not find \"{fileName}\" ❌") + return + + # Usage PICS + # console.print(clusterPicsCode) + usageNode = root.find('usage') + for picsItem in usageNode: + itemNumberElement = picsItem.find('itemNumber') + + console.print(f"Searching for {itemNumberElement.text}") + + if itemNumberElement.text == f"{clusterPicsCode}": + console.print("Found usage PICS value in XML template ✅") + supportElement = picsItem.find('support') + # console.print(f"Support: {supportElement.text}") + supportElement.text = "true" + + # Since usage PICS (server or client) is not a list, we can break out when a match is found, + # no reason to keep iterating through the elements. + break + + # Feature PICS + # console.print(featurePicsList) + featureNode = root.find("./clusterSide[@type='Server']/features") + for picsItem in featureNode: + itemNumberElement = picsItem.find('itemNumber') + + console.print(f"Searching for {itemNumberElement.text}") + + if f"{itemNumberElement.text}" in featurePicsList: + console.print("Found feature PICS value in XML template ✅") + supportElement = picsItem.find('support') + supportElement.text = "true" + + # Attributes PICS + # TODO: Only check if list is not empty + # console.print(attributePicsList) + serverAttributesNode = root.find("./clusterSide[@type='Server']/attributes") + for picsItem in serverAttributesNode: + itemNumberElement = picsItem.find('itemNumber') + + console.print(f"Searching for {itemNumberElement.text}") + + if f"{itemNumberElement.text}" in attributePicsList: + console.print("Found attribute PICS value in XML template ✅") + supportElement = picsItem.find('support') + supportElement.text = "true" + + # AcceptedCommandList PICS + # TODO: Only check if list is not empty + # console.print(acceptedCommandPicsList) + serverCommandsReceivedNode = root.find("./clusterSide[@type='Server']/commandsReceived") + for picsItem in serverCommandsReceivedNode: + itemNumberElement = picsItem.find('itemNumber') + + console.print(f"Searching for {itemNumberElement.text}") + + if f"{itemNumberElement.text}" in acceptedCommandPicsList: + console.print("Found acceptedCommand PICS value in XML template ✅") + supportElement = picsItem.find('support') + supportElement.text = "true" + + # GeneratedCommandList PICS + # console.print(generatedCommandPicsList) + # TODO: Only check if list is not empty + serverCommandsGeneratedNode = root.find("./clusterSide[@type='Server']/commandsGenerated") + for picsItem in serverCommandsGeneratedNode: + itemNumberElement = picsItem.find('itemNumber') + + console.print(f"Searching for {itemNumberElement.text}") + + if f"{itemNumberElement.text}" in generatedCommandPicsList: + console.print("Found generatedCommand PICS value in XML template ✅") + supportElement = picsItem.find('support') + supportElement.text = "true" + + # Event PICS (Work in progress) + # The ability to set event PICS is fairly limited, due to EventList not being supported, + # as well as no way to check for event support in the current Matter SDK. + + # This implementation marks an event as supported if: + # 1) Event is mandatody + # 2) The event is mandatory based on a feature that is supported (Cross check against feature list) (Not supported yet) + serverEventsNode = root.find("./clusterSide[@type='Server']/events") + for picsItem in serverEventsNode: + itemNumberElement = picsItem.find('itemNumber') + statusElement = picsItem.find('status') + + try: + condition = statusElement.attrib['cond'] + console.print(f"Checking {itemNumberElement.text} with conformance {statusElement.text} and condition {condition}") + except ET.ParseError: + condition = "" + console.print(f"Checking {itemNumberElement.text} with conformance {statusElement.text}") + + if statusElement.text == "M": + + # Is event mandated by the server + if condition == clusterPicsCode: + console.print("Found event mandated by server ✅") + supportElement = picsItem.find('support') + supportElement.text = "true" + continue + + if condition in featurePicsList: + console.print("Found event mandated by feature ✅") + supportElement = picsItem.find('support') + supportElement.text = "true" + continue + + if condition == "": + console.print("Event is mandated without a condition ✅") + continue + + # Grabbing the header from the XML templates + inputFile = open(f"{xmlPath}{fileName}", "r") + outputFile = open(f"{outputPathStr}/{fileName}", "ab") + xmlHeader = "" + inputLine = inputFile.readline().lstrip() + + while 'clusterPICS' not in inputLine: + xmlHeader += inputLine + inputLine = inputFile.readline().lstrip() + + # Write the PICS XML header + outputFile.write(xmlHeader.encode()) + + # Write the PICS XML data + tree.write(outputFile) + + +async def DeviceMapping(devCtrl, nodeID, outputPathStr): + + # --- Device mapping --- # + console.print("[blue]Perform device mapping") + # Determine how many endpoints to map + # Test step 1 - Read parts list + + partsListResponse = await devCtrl.ReadAttribute(nodeID, [(rootNodeEndpointID, Clusters.Descriptor.Attributes.PartsList)]) + partsList = partsListResponse[0][Clusters.Descriptor][Clusters.Descriptor.Attributes.PartsList] + + # Add endpoint 0 to the parts list, since this is not returned by the device + partsList.insert(0, 0) + # console.print(partsList) + + for endpoint in partsList: + # Test step 2 - Map each available endpoint + console.print(f"Mapping endpoint: {endpoint}") + + # Create endpoint specific output folder and register this as output folder + endpointOutputPathStr = f"{outputPathStr}endpoint{endpoint}/" + endpointOutputPath = pathlib.Path(endpointOutputPathStr) + if not endpointOutputPath.exists(): + endpointOutputPath.mkdir() + + # Read device list (Not required) + deviceListResponse = await devCtrl.ReadAttribute(nodeID, [(endpoint, Clusters.Descriptor.Attributes.DeviceTypeList)]) + + for deviceTypeData in deviceListResponse[endpoint][Clusters.Descriptor][Clusters.Descriptor.Attributes.DeviceTypeList]: + console.print(f"Device Type: {deviceTypeData.deviceType}") + + # Read server list + serverListResponse = await devCtrl.ReadAttribute(nodeID, [(endpoint, Clusters.Descriptor.Attributes.ServerList)]) + serverList = serverListResponse[endpoint][Clusters.Descriptor][Clusters.Descriptor.Attributes.ServerList] + + for server in serverList: + featurePicsList = [] + attributePicsList = [] + acceptedCommandListPicsList = [] + generatedCommandListPicsList = [] + + clusterClass = getattr(Clusters, devCtrl.GetClusterHandler().GetClusterInfoById(server)['clusterName']) + clusterID = f"0x{server:04x}" + + # Does the clusterInfoDict contain the found cluster ID? + if clusterID not in clusterInfoDict: + console.print(f"[red]Cluster ID ({clusterID}) not in list! ❌") + continue + + clusterName = clusterInfoDict[clusterID]['Name'] + clusterPICS = f"{clusterInfoDict[clusterID]['PICS_Code']}{serverTag}" + + console.print(f"{clusterName} - {clusterPICS}") + + # Print PICS for specific server from dict + # console.print(clusterInfoDict[f"0x{server:04x}"]) + + # Read feature map + featureMapResponse = await devCtrl.ReadAttribute(nodeID, [(endpoint, clusterClass.Attributes.FeatureMap)]) + # console.print(f"FeatureMap: {featureMapResponse[endpoint][clusterClass][clusterClass.Attributes.FeatureMap]}") + + featureMapValue = featureMapResponse[endpoint][clusterClass][clusterClass.Attributes.FeatureMap] + featureMapBitString = "{:08b}".format(featureMapValue).lstrip("0") + for bitLocation in range(len(featureMapBitString)): + if featureMapValue >> bitLocation & 1 == 1: + # console.print(f"{clusterPICS}{featureTag}{bitLocation:02x}") + featurePicsList.append(f"{clusterPICS}{featureTag}{bitLocation:02x}") + + console.print("Collected feature PICS:") + console.print(featurePicsList) + + # Read attribute list + attributeListResponse = await devCtrl.ReadAttribute(nodeID, [(endpoint, clusterClass.Attributes.AttributeList)]) + attributeList = attributeListResponse[endpoint][clusterClass][clusterClass.Attributes.AttributeList] + # console.print(f"AttributeList: {attributeList}") + + # Convert attribute to PICS code + for attribute in attributeList: + if (attribute != 0xfff8 and attribute != 0xfff9 and attribute != 0xfffa and attribute != 0xfffb and attribute != 0xfffc and attribute != 0xfffd): + # console.print(f"{clusterPICS}{attributeTag}{attribute:04x}") + attributePicsList.append(f"{clusterPICS}{attributeTag}{attribute:04x}") + ''' + else: + console.print(f"[yellow]Ignore global attribute 0x{attribute:04x}") + ''' + + console.print("Collected attribute PICS:") + console.print(attributePicsList) + + # Read AcceptedCommandList + acceptedCommandListResponse = await devCtrl.ReadAttribute(nodeID, [(endpoint, clusterClass.Attributes.AcceptedCommandList)]) + acceptedCommandList = acceptedCommandListResponse[endpoint][clusterClass][clusterClass.Attributes.AcceptedCommandList] + # console.print(f"AcceptedCommandList: {acceptedCommandList}") + + # Convert accepted command to PICS code + for acceptedCommand in acceptedCommandList: + # console.print(f"{clusterPICS}{commandTag}{acceptedCommand:02x}{acceptedCommandTag}") + acceptedCommandListPicsList.append(f"{clusterPICS}{commandTag}{acceptedCommand:02x}{acceptedCommandTag}") + + console.print("Collected accepted command PICS:") + console.print(acceptedCommandListPicsList) + + # Read GeneratedCommandList + generatedCommandListResponse = await devCtrl.ReadAttribute(nodeID, [(endpoint, clusterClass.Attributes.GeneratedCommandList)]) + generatedCommandList = generatedCommandListResponse[endpoint][clusterClass][clusterClass.Attributes.GeneratedCommandList] + # console.print(f"GeneratedCommandList: {generatedCommandList}") + + # Convert accepted command to PICS code + for generatedCommand in generatedCommandList: + # console.print(f"{clusterPICS}{commandTag}{generatedCommand:02x}{generatedCommandTag}") + generatedCommandListPicsList.append(f"{clusterPICS}{commandTag}{generatedCommand:02x}{generatedCommandTag}") + + console.print("Collected generated command PICS:") + console.print(generatedCommandListPicsList) + + # Write the collected PICS to a PICS XML file + GenerateDevicePicsXmlFiles(clusterName, clusterPICS, featurePicsList, attributePicsList, + acceptedCommandListPicsList, generatedCommandListPicsList, endpointOutputPathStr) + + # Read client list + clientListResponse = await devCtrl.ReadAttribute(nodeID, [(endpoint, Clusters.Descriptor.Attributes.ClientList)]) + clientList = clientListResponse[endpoint][Clusters.Descriptor][Clusters.Descriptor.Attributes.ClientList] + + for client in clientList: + clusterID = f"0x{client:04x}" + clusterName = clusterInfoDict[clusterID]['Name'] + clusterPICS = f"{clusterInfoDict[clusterID]['PICS_Code']}{clientTag}" + + console.print(f"{clusterName} - {clusterPICS}") + + GenerateDevicePicsXmlFiles(clusterName, clusterPICS, [], [], [], [], endpointOutputPathStr) + + +def cleanDirectory(pathToClean): + for entry in pathToClean.iterdir(): + if entry.is_file(): + pathlib.Path(entry).unlink() + elif entry.is_dir(): + cleanDirectory(entry) + pathlib.Path(entry).rmdir() + + +parser = argparse.ArgumentParser() +parser.add_argument('--cluster-data', required=True) +parser.add_argument('--pics-template', required=True) +parser.add_argument('--pics-output', required=True) +args, unknown = parser.parse_known_args() + +basePath = os.path.dirname(__file__) +clusterInfoInputPathStr = args.cluster_data + +xmlTemplatePathStr = args.pics_template +if not xmlTemplatePathStr.endswith('/'): + xmlTemplatePathStr += '/' + +baseOutputPathStr = args.pics_output +if not baseOutputPathStr.endswith('/'): + baseOutputPathStr += '/' + +serverTag = ".S" +clientTag = ".C" +featureTag = ".F" +attributeTag = ".A" +commandTag = ".C" +acceptedCommandTag = ".Rsp" +generatedCommandTag = ".Tx" + +# List of globale attributes (server) +# Does not read ClusterRevision [0xFFFD] (not relevant), EventList [0xFFFA] (Provisional) +featureMapAttributeId = "0xFFFC" +attributeListAttributeId = "0xFFFB" +acceptedCommandListAttributeId = "0xFFF9" +generatedCommandListAttributeId = "0xFFF8" + +# Endpoint define +rootNodeEndpointID = 0 + +# Load cluster info +inputJson = {} +clusterInfoDict = {} + +print("Generating cluster data dict from JSON input") + +with open(clusterInfoInputPathStr, 'rb') as clusterInfoInputFile: + clusterInfoJson = json.load(clusterInfoInputFile) + + for cluster in clusterInfoJson: + clusterData = clusterInfoJson[f"{cluster}"]["Data created by Script"] + + try: + # Check if cluster id is a value hex value + clusterIdValid = int(clusterData["Id"].lower(), 16) + + # Add cluster data to dict + clusterInfoDict[clusterData["Id"].lower()] = { + "Name": clusterData["Cluster Name"], + "PICS_Code": clusterData["PICS Code"], + } + + except ValueError: + print(f"Ignore ClusterID: {clusterData['Id']} - {clusterData['Cluster Name']}") + +# Load PICS XML templates +print("Capture list of PICS XML templates") +xmlFileList = os.listdir(xmlTemplatePathStr) + +# Setup output path +baseOutputPath = pathlib.Path(baseOutputPathStr) +if not baseOutputPath.exists(): + print("Create output folder") + baseOutputPath.mkdir() +else: + print("Clean output folder") + cleanDirectory(baseOutputPath) + + +class DeviceMappingTest(MatterBaseTest): + @async_test_body + async def test_device_mapping(self): + + # Create console to print + global console + console = Console() + + # Run device mapping function + await DeviceMapping(self.default_controller, self.dut_node_id, baseOutputPathStr) + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/src/tools/PICS-generator/README.md b/src/tools/PICS-generator/README.md new file mode 100644 index 00000000000000..1f5964d80e9b5e --- /dev/null +++ b/src/tools/PICS-generator/README.md @@ -0,0 +1,83 @@ +--- +orphan: true +--- + +# Tool information + +This tool reads out the supported elements and generates the appropriate PICS +files for the device. The tool outputs the PICS for all endpoints and outputs +these in a single folder. + +Note: The tool does relay on what the the device is able to express and for now +there are areas which the tool can not cover: + +- PICS in base.xml +- Only mandatory events are marked as supported, since the global attribute + with list of events is provisional + +# Setup + +This tool uses the python environment used by the python_testing efforts, which +can be built using the below command. + +``` +scripts/build_python.sh -m platform -i out/python_env +``` + +Once the python environment is build it can be activated using this command: + +``` +source out/python_env/bin/activate +``` + +The script uses the json based data model in order to convert cluster +identifiers into PICS Codes. The file can be downloaded here: +[https://groups.csa-iot.org/wg/matter-csg/document/27290](https://groups.csa-iot.org/wg/matter-csg/document/27290) + +NOTE: The tool has been verified using the "Specification_version +0.7-spring2024.json" version. + +The script uses the PICS XML templates for generate the PICS output. These files +can be downloaded here: +[https://groups.csa-iot.org/wg/matter-csg/document/26122](https://groups.csa-iot.org/wg/matter-csg/document/26122) + +NOTE: The tool has been verified using V24 PICS (used for Matter 1.2 +certification) + +# How to run + +The tool does, as mentioned above, have external dependencies, these are +provided to the tool using these arguments: + +- --cluster-data is the absolute path to the JSON file containing the cluster + data +- --pics-template is the absolute path to the folder containing the PICS + templates +- --pics-output is the absolute path to the output folder to be used + +If the device has not been commissioned this can be done by passing in the +commissioning information: + +``` +python3 'src/python_testing/PICSGenerator.py' --cluster-data --pics-template --pics-output --commissioning-method ble-thread --discriminator --passcode --thread-dataset-hex +``` + +In case the device uses a development PAA, the following parameter should be +added. + +``` +--paa-trust-store-path credentials/development/paa-root-certs +``` + +In case the device uses a production PAA, the following parameter should be +added. + +``` +--paa-trust-store-path credentials/production/paa-root-certs +``` + +If a device has already been commissioned, the tool can be executed like this: + +``` +python3 'src/python_testing/PICSGenerator.py' --cluster-data --pics-template --pics-output +```