diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt index f3954d1eb89358..a5dee8881fec76 100644 --- a/.github/.wordlist.txt +++ b/.github/.wordlist.txt @@ -735,6 +735,7 @@ isUpperCase itemName iterable itsfoss +IW JDK jinja JLink @@ -893,6 +894,7 @@ microcontroller microcontrollers MicroSD middleware +MIMXRT minApplicableSoftwareVersion Minicom MinInterval @@ -924,6 +926,7 @@ Multicast multilib Multiprotocol multithreaded +Murata mutex mutexes mv @@ -1452,6 +1455,8 @@ trackFree TransferSession transitionTime TransportMgrBase +triaged +triaging TriggerEffect TRNG trustm diff --git a/.github/workflows/examples-nxp.yaml b/.github/workflows/examples-nxp.yaml index 6354718f25b700..c4b6eb148ae50b 100644 --- a/.github/workflows/examples-nxp.yaml +++ b/.github/workflows/examples-nxp.yaml @@ -30,17 +30,17 @@ env: CHIP_NO_LOG_TIMESTAMPS: true jobs: - k32w0: - name: K32W0 + FreeRTOS: + name: FREERTOS env: - BUILD_TYPE: gn_k32w + BUILD_TYPE: gn_FreeRTOS runs-on: ubuntu-latest if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build-nxp:80 + image: ghcr.io/project-chip/chip-build-nxp:81 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" steps: @@ -50,6 +50,15 @@ jobs: uses: ./.github/actions/checkout-submodules-and-bootstrap with: platform: nxp + extra-submodule-parameters: --recursive + + - name: Detect changed paths + uses: dorny/paths-filter@v3 + id: changed_paths + with: + filters: | + nxp: + - '**/nxp/**' - name: Set up environment for size reports uses: ./.github/actions/setup-size-reports @@ -57,222 +66,173 @@ jobs: with: gh-context: ${{ toJson(github) }} - - name: Build examples + - name: Build K32W0 examples run: | scripts/run_in_build_env.sh "\ ./scripts/build/build_examples.py \ - --target nxp-k32w0-freertos-lighting \ --target nxp-k32w0-freertos-lighting-factory \ - --target nxp-k32w0-freertos-lighting-rotating-id \ - --target nxp-k32w0-freertos-contact-sensor \ - --target nxp-k32w0-freertos-contact-sensor-low-power \ --target nxp-k32w0-freertos-contact-sensor-low-power-factory \ build \ --copy-artifacts-to out/artifacts \ " - - name: Get lighting app size stats + - name: Get K32W0 lighting app size stats run: | .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nxp k32w0+release light \ - out/artifacts/nxp-k32w0-freertos-lighting/chip-k32w0x-light-example.elf \ + out/artifacts/nxp-k32w0-freertos-lighting-factory/chip-k32w0x-light-example.elf \ /tmp/bloat_reports/ - - name: Get contact sensor size stats + - name: Get K32W0 contact sensor size stats run: | .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nxp k32w0+release contact \ - out/artifacts/nxp-k32w0-freertos-contact-sensor-low-power/chip-k32w0x-contact-example.elf \ + out/artifacts/nxp-k32w0-freertos-contact-sensor-low-power-factory/chip-k32w0x-contact-example.elf \ /tmp/bloat_reports/ - - name: Uploading Size Reports - uses: ./.github/actions/upload-size-reports - if: ${{ !env.ACT }} - with: - platform-name: K32W0 - k32w1: - name: K32W1 - - env: - BUILD_TYPE: gn_k32w - - runs-on: ubuntu-latest - if: github.actor != 'restyled-io[bot]' - - container: - image: ghcr.io/project-chip/chip-build-nxp:81 - volumes: - - "/tmp/bloat_reports:/tmp/bloat_reports" - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Checkout submodules & Bootstrap - uses: ./.github/actions/checkout-submodules-and-bootstrap - with: - platform: nxp - extra-submodule-parameters: --recursive - - name: Set up environment for size reports - uses: ./.github/actions/setup-size-reports - if: ${{ !env.ACT }} - with: - gh-context: ${{ toJson(github) }} + - name: clean build + run: rm -rf ./out - - name: Build examples + - name: Build K32W1 examples run: | scripts/run_in_build_env.sh "\ ./scripts/build/build_examples.py \ --target nxp-k32w1-freertos-lighting \ - --target nxp-k32w1-freertos-contact-sensor-low-power \ - --target nxp-k32w1-freertos-lock-app \ build \ --copy-artifacts-to out/artifacts \ " - - name: Get lighting app size stats + - name: Get K32W1 lighting app size stats run: | .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nxp k32w1+release light \ out/artifacts/nxp-k32w1-freertos-lighting/chip-k32w1-light-example.elf \ /tmp/bloat_reports/ - - name: Get contact sensor size stats - run: | - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - nxp k32w1+release contact \ - out/artifacts/nxp-k32w1-freertos-contact-sensor-low-power/chip-k32w1-contact-example.elf \ - /tmp/bloat_reports/ - - name: Get lock app size stats - run: | - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - nxp k32w1+release lock \ - out/artifacts/nxp-k32w1-freertos-lock-app/chip-k32w1-lock-example.elf \ - /tmp/bloat_reports/ - - name: Uploading Size Reports - uses: ./.github/actions/upload-size-reports - if: ${{ !env.ACT }} - with: - platform-name: K32W1 - mcxw71: - name: MCXW71 - env: - BUILD_TYPE: gn_k32w + - name: clean build + run: rm -rf ./out - runs-on: ubuntu-latest - if: github.actor != 'restyled-io[bot]' - - container: - image: ghcr.io/project-chip/chip-build-nxp:81 - volumes: - - "/tmp/bloat_reports:/tmp/bloat_reports" - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Checkout submodules & Bootstrap - uses: ./.github/actions/checkout-submodules-and-bootstrap - with: - platform: nxp - extra-submodule-parameters: --recursive - - - name: Set up environment for size reports - uses: ./.github/actions/setup-size-reports - if: ${{ !env.ACT }} - with: - gh-context: ${{ toJson(github) }} - - - name: Build examples + - name: Build MCXW71 examples run: | scripts/run_in_build_env.sh "\ ./scripts/build/build_examples.py \ - --target nxp-mcxw71-freertos-lighting \ --target nxp-mcxw71-freertos-contact-sensor-low-power \ --target nxp-mcxw71-freertos-lock-app \ build \ --copy-artifacts-to out/artifacts \ " - - name: Get lighting app size stats - run: | - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - nxp mcxw71+release light \ - out/artifacts/nxp-mcxw71-freertos-lighting/chip-mcxw71-light-example.elf \ - /tmp/bloat_reports/ - - name: Get contact sensor size stats + - name: Get MCXW71 contact sensor size stats run: | .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nxp mcxw71+release contact \ out/artifacts/nxp-mcxw71-freertos-contact-sensor-low-power/chip-mcxw71-contact-example.elf \ /tmp/bloat_reports/ - - name: Get lock app size stats + - name: Get MCXW71 lock app size stats run: | .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nxp mcxw71+release lock \ out/artifacts/nxp-mcxw71-freertos-lock-app/chip-mcxw71-lock-example.elf \ /tmp/bloat_reports/ - - name: Uploading Size Reports - uses: ./.github/actions/upload-size-reports - if: ${{ !env.ACT }} - with: - platform-name: MCXW71 - rw61x: - name: RW61X - env: - BUILD_TYPE: gn_rw61x + - name: clean build + run: rm -rf ./out - runs-on: ubuntu-latest - if: github.actor != 'restyled-io[bot]' + - name: Build RT1060 all clusters example app + run: | + scripts/run_in_build_env.sh "\ + ./scripts/build/build_examples.py \ + --target nxp-rt1060-freertos-all-clusters-wifi-iw416 \ + --target nxp-rt1060-freertos-all-clusters-wifi-w8801 \ + --target nxp-rt1060-freertos-all-clusters-wifi-ota-evkc-iwx12 \ + build \ + --copy-artifacts-to out/artifacts \ + " + - name: Build RT1060 thermostat example app + if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true' + run: | + scripts/run_in_build_env.sh "\ + ./scripts/build/build_examples.py \ + --target nxp-rt1060-freertos-thermostat-thread-wifi-evkc-iwx12 \ + build \ + --copy-artifacts-to out/artifacts \ + " + - name: Build RT1060 laundry-washer example app + if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true' + run: | + scripts/run_in_build_env.sh "\ + ./scripts/build/build_examples.py \ + --target nxp-rt1060-freertos-laundry-washer-wifi-evkc-iwx12 \ + --target nxp-rt1060-freertos-laundry-washer-thread-evkc-iwx12 \ + build \ + --copy-artifacts-to out/artifacts \ + " - container: - image: ghcr.io/project-chip/chip-build-nxp:81 - volumes: - - "/tmp/bloat_reports:/tmp/bloat_reports" - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Checkout submodules & Bootstrap - uses: ./.github/actions/checkout-submodules-and-bootstrap - with: - platform: nxp - extra-submodule-parameters: --recursive + - name: clean build + run: rm -rf ./out - - name: Set up environment for size reports - uses: ./.github/actions/setup-size-reports - if: ${{ !env.ACT }} - with: - gh-context: ${{ toJson(github) }} + - name: Build RT1170 all clusters example app + if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true' + run: | + scripts/run_in_build_env.sh "\ + ./scripts/build/build_examples.py \ + --target nxp-rt1170-freertos-all-clusters-wifi-iwx12 \ + --target nxp-rt1170-freertos-all-clusters-wifi-ota-iwx12 \ + build \ + --copy-artifacts-to out/artifacts \ + " + - name: Build RT1170 thermostat example app + run: | + scripts/run_in_build_env.sh "\ + ./scripts/build/build_examples.py \ + --target nxp-rt1170-freertos-thermostat-thread-wifi-iwx12 \ + build \ + --copy-artifacts-to out/artifacts \ + " + - name: Build RT1170 laundry-washer example app + if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true' + run: | + scripts/run_in_build_env.sh "\ + ./scripts/build/build_examples.py \ + --target nxp-rt1170-freertos-laundry-washer-thread-iwx12 \ + build \ + --copy-artifacts-to out/artifacts \ + " + + - name: clean build + run: rm -rf ./out - name: Build RW61X all clusters example app run: | scripts/run_in_build_env.sh "\ ./scripts/build/build_examples.py \ --target nxp-rw61x-freertos-all-clusters-wifi \ - --target nxp-rw61x-freertos-all-clusters-thread \ --target nxp-rw61x-freertos-all-clusters-wifi-ota-cmake \ build \ --copy-artifacts-to out/artifacts \ " - - name: Build RW61X thermostat example app run: | scripts/run_in_build_env.sh "\ ./scripts/build/build_examples.py \ - --target nxp-rw61x-freertos-thermostat-wifi \ - --target nxp-rw61x-freertos-thermostat-thread \ --target nxp-rw61x-freertos-thermostat-thread-wifi \ build \ --copy-artifacts-to out/artifacts \ " - - name: Build RW61X laundry-washer example app + if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true' run: | scripts/run_in_build_env.sh "\ ./scripts/build/build_examples.py \ --target nxp-rw61x-freertos-laundry-washer-wifi \ - --target nxp-rw61x-freertos-laundry-washer-thread \ build \ --copy-artifacts-to out/artifacts \ " + + - name: clean build + run: rm -rf ./out + - name: Uploading Size Reports uses: ./.github/actions/upload-size-reports if: ${{ !env.ACT }} with: - platform-name: RW61X + platform-name: NXP-FREERTOS zephyr: name: ZEPHYR @@ -289,8 +249,15 @@ jobs: uses: ./.github/actions/checkout-submodules-and-bootstrap with: platform: nxp - + - name: Detect changed paths + uses: dorny/paths-filter@v3 + id: changed_paths + with: + filters: | + nxp: + - '**/nxp/**' - name: Build NXP Zephyr examples + if: github.event_name == 'push' || steps.changed_paths.outputs.nxp == 'true' run: | scripts/run_in_build_env.sh "\ ./scripts/build/build_examples.py \ diff --git a/.spellcheck.yml b/.spellcheck.yml index 7313f64ebd6976..757034586b9bd0 100644 --- a/.spellcheck.yml +++ b/.spellcheck.yml @@ -65,7 +65,7 @@ matrix: # converts markdown to HTML - pyspelling.filters.markdown: sources: - - '**/*.md|!third_party/**|!examples/common/**/repo/**|!docs/ERROR_CODES.md|!docs/clusters.md|!docs/testing/yaml_schema.md|!docs/testing/yaml_pseudocluster.md | !docs/testing/python.md | !docs/testing/ChipDeviceCtrlAPI.md' + - '**/*.md|!third_party/**|!examples/common/**/repo/**|!docs/ERROR_CODES.md|!docs/clusters.md|!docs/testing/yaml_schema.md|!docs/testing/yaml_pseudocluster.md|!docs/testing/python.md|!docs/testing/ChipDeviceCtrlAPI.md|!docs/issue_triage.md' aspell: ignore-case: true camel-case: true diff --git a/config/nxp/chip-module/Kconfig.defaults b/config/nxp/chip-module/Kconfig.defaults index 3d0fcf08d75eac..cd2dd74b91f788 100644 --- a/config/nxp/chip-module/Kconfig.defaults +++ b/config/nxp/chip-module/Kconfig.defaults @@ -336,6 +336,9 @@ choice NXP_ENET_DRIVER default ETH_NXP_ENET endchoice +config NET_SOCKETS_POLL_MAX + default 7 + endif # Configure MBEDTLS lib diff --git a/config/nxp/chip-module/Kconfig.features b/config/nxp/chip-module/Kconfig.features index 9c388a20f9db72..50f72eb0164f14 100644 --- a/config/nxp/chip-module/Kconfig.features +++ b/config/nxp/chip-module/Kconfig.features @@ -95,6 +95,8 @@ config CHIP_ETHERNET select NET_TCP select DNS_RESOLVER select MDNS_RESOLVER + select MDNS_RESPONDER + select DNS_SD select MBEDTLS_PKCS5_C select MBEDTLS_HKDF_C select MBEDTLS_ECDSA_C diff --git a/docs/README.md b/docs/README.md index e5aad317e6d556..e96ab29f042f56 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,6 +15,11 @@ [Visual Studio Code](https://code.visualstudio.com/) can be found in [the development guide](./VSCODE_DEVELOPMENT.md) +## Issue triage + +Project issues are triaged and maintained according to the +[issue triage](./issue_triage.md) guide. + ## Platform Guides - Various guides are available [here](./guides/README.md) that cover platform diff --git a/docs/index.md b/docs/index.md index 6b7553f205ae1f..89e4661e2a0e1e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,4 @@ -# Welcome to Matter's documentation! +# Welcome to Matter's documentation ```{toctree} :maxdepth: 2 @@ -25,6 +25,7 @@ zap_clusters spec_clusters upgrading ERROR_CODES +issue_triage ``` diff --git a/docs/issue_triage.md b/docs/issue_triage.md new file mode 100644 index 00000000000000..891bfca4716a84 --- /dev/null +++ b/docs/issue_triage.md @@ -0,0 +1,146 @@ +# Project issues + +General issues are listed at + . + +In order to be able to effectively follow up on these issues, they are separated +into groups for further review and fixing based on current maintainers on +specific areas of the code. The separation is done via `labels`. + +Issues that still need triaging are labeled as `needs triage`: + + + +## Non-SDK issues + +In some cases the issue is integrating with ecosystems or environments are not +supported. In these cases, issues can be re-directed to specific support pages +rather than the SDK GitHub issues. + +### Google Integration + +- General integration link: +- Support via the communities areas: + - Stack overflow: + + - Google Nest Community: + + +### Apple Integration + +This applies if there is an issue with Home interacting with a device (as +opposed to an issue with Matter.framework or the SDK that is encountered by code +actually running on darwin). + +General instructions available at [here](./guides/darwin.md) in the +`Providing feedback to Apple` section. + +Once a Feedback Assistant ticket is filed, the ticket ID can be sent to Boris +Zbkarsky to ensure it is noticed by the right people + +### Environments not currently supported / not maintained + +Some items are explicitly not maintained currently + +- Windows integration: no official maintainer for this so currently not + supported +- Old compiler support: CHIP requires a C++17 or higher compiler. + +## Platform maintainers + +This level of separation is generally for platform-specific issues (e.g. failure +to commission for one specific platform, failure to run on some specific +operating system). + +Contact is generally done on slack. E-mail addresses are not added here on +purpose in order to avoid spam. + +| Platform | Contact | Label | Note(s) | +| ------------ | --------------------------------------- | -------------------------------------------------------------------------------------------------------- | ------- | +| Android | Andrei Litvin, Yunhan Wang, Yufeng Wang | [android](https://github.com/project-chip/connectedhomeip/issues?q=is%3Aopen+is%3Aissue+label%3Aandroid) | | +| Darwin | Boris Zbarsky, Justin Wood | [darwin](https://github.com/project-chip/connectedhomeip/issues?q=is%3Aopen+is%3Aissue+label%3Adarwin) | | +| Espressif | Hrishikesh Dhayagude | [esp32](https://github.com/project-chip/connectedhomeip/issues?q=is%3Aopen+is%3Aissue+label%3Aesp32) | | +| Linux | Andrei Litvin | [linux](https://github.com/project-chip/connectedhomeip/issues?q=is%3Aopen+is%3Aissue+label%3Alinux) | | +| Nordic | Lucasz Duda | [nrf](https://github.com/project-chip/connectedhomeip/issues?q=is%3Aopen+is%3Aissue+label%3Anrf) | | +| NXP | Doru Gucea | [nxp](https://github.com/project-chip/connectedhomeip/issues?q=is%3Aopen+is%3Aissue+label%3Anxp) | | +| Silabs/EFR32 | Jean Francois Penven, Junior Martinez | [efr32](https://github.com/project-chip/connectedhomeip/issues?q=is%3Aopen+is%3Aissue+label%3Aefr32) | | + +## Code areas + +The following people can be contacted about issues in specific area of code are +affected that are not platform-specific. + +| Code area | Contact | Label | Note(s) | +| ------------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ARM cross-compile | Andrei Litvin | N/A | Some support for cross-compiling on x64 linux for arm64 linux (like Raspberry PI) | +| Build system (darwin, xcode) | Boris Zbarsky, Justin Wood | N/A | darwin specific builds, xcode connector | +| Build system (gn, ninja) | Andrei Litvin | N/A | General build system questions and gn support, generally on Linux | +| MatterIDL | Andrei Litvin | N/A | General .matter files and code generation based on it | +| Minimal MDNS | Andrei Litvin | N/A | mdns specfic. Note that platformdns also exists and issues are often "DNSSD" rather than minmdns specific | +| Python testing infrastructure/helpers | Cecille Freeman | N/A | Writing tests cases in python. **NOTE** this is for test infrastrure and NOT for individual test issues. Test case failures are associated with test applications or the test case script. | +| ZAP Code Generation | Boris Zbarsky, Bharat Raju Dandu | [zap](https://github.com/project-chip/connectedhomeip/issues?q=is%3Aopen+is%3Aissue+label%3Azap) | Some issues may be in the zap project itself. This is for generic code generation issues and help, often regarding `.zapt` templates | +| src/crypto, src/credentials | Tennessee Carmel-Veilleux | N/A | | + +## Example maintenance + +Examples often correspond to specific device types. We have split the contact +per device type regardless of example (e.g. all-clusters will contain all device +types or functionality) as well as individual examples. + +### Per device type + +| Device Type(s) | Contact | Label | Note(s) | +| -------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------ | ------- | +| Fabric Bridge, Fabric Sync | Yufeng Wang, Terence Hampson | [fabric-sync](https://github.com/project-chip/connectedhomeip/pulls?q=is%3Aopen+is%3Apr+label%3Afabric-sync) | | + +### Per example + +| Example path | Contact | Note(s) | +| ---------------------------------------------- | ---------------------------- | ------------ | +| `examples/air-purifier-app` | | UNMAINTAINED | +| `examples/air-quality-sensor-app` | | UNMAINTAINED | +| `examples/all-clusters-app` | | UNMAINTAINED | +| `examples/all-clusters-minimal-app` | | UNMAINTAINED | +| `examples/android` | Yunhan Wang | | +| `examples/bridge-app` | | UNMAINTAINED | +| `examples/build_overrides` | | UNMAINTAINED | +| `examples/chef` | Andrei Litvin | | +| `examples/chip-tool` | | UNMAINTAINED | +| `examples/contact-sensor-app` | | UNMAINTAINED | +| `examples/darwin-framework-tool` | Boris Zbarsky | | +| `examples/dishwasher-app` | | UNMAINTAINED | +| `examples/energy-management-app` | James Harrow | | +| `examples/fabric-admin` | Yufeng Wang, Terence Hampson | | +| `examples/fabric-bridge-app` | Yufeng Wang, Terence Hampson | | +| `examples/java-matter-controller` | Yunhan Wang, Yufeng Wang | | +| `examples/kotlin-matter-controller` | Yunhan Wang, Yufeng Wang | | +| `examples/laundry-washer-app` | | UNMAINTAINED | +| `examples/lighting-app` | Junior Martinez | | +| `examples/lighting-app-data-mode-no-unique-id` | | UNMAINTAINED | +| `examples/light-switch-app` | | UNMAINTAINED | +| `examples/lit-icd-app` | Yunhan Wang | | +| `examples/lock-app` | | UNMAINTAINED | +| `examples/log-source-app` | | UNMAINTAINED | +| `examples/microwave-oven-app` | Rob Bultman | | +| `examples/minimal-mdns` | Andrei Litvin | | +| `examples/network-manager-app` | Thomas Lea | | +| `examples/ota-provider-app` | | UNMAINTAINED | +| `examples/ota-requestor-app` | | UNMAINTAINED | +| `examples/persistent-storage` | | UNMAINTAINED | +| `examples/pigweed-app` | | UNMAINTAINED | +| `examples/placeholder` | | UNMAINTAINED | +| `examples/providers` | | UNMAINTAINED | +| `examples/pump-app` | | UNMAINTAINED | +| `examples/pump-controller-app` | | UNMAINTAINED | +| `examples/refrigerator-app` | | UNMAINTAINED | +| `examples/resource-monitoring-app` | | UNMAINTAINED | +| `examples/rvc-app` | | UNMAINTAINED | +| `examples/smoke-co-alarm-app` | | UNMAINTAINED | +| `examples/temperature-measurement-app` | | UNMAINTAINED | +| `examples/thermostat` | | UNMAINTAINED | +| `examples/thread-br-app` | | UNMAINTAINED | +| `examples/tv-app` | Chris DeCenzo, Lazar Kovacic | | +| `examples/tv-casting-app` | Chris DeCenzo, Lazar Kovacic | | +| `examples/virtual-device-app` | | UNMAINTAINED | +| `examples/water-leak-detector-app` | | UNMAINTAINED | +| `examples/window-app` | | UNMAINTAINED | diff --git a/docs/platforms/nxp/index.md b/docs/platforms/nxp/index.md index be225ac938f7b5..fc11ed78b2baff 100644 --- a/docs/platforms/nxp/index.md +++ b/docs/platforms/nxp/index.md @@ -10,5 +10,5 @@ - [NXP - Android Commissioning](nxp_k32w_android_commissioning.md) - [NXP - Linux Examples](nxp_imx8m_linux_examples.md) - [NXP - Manufacturing Data](nxp_manufacturing_flow.md) -- [NXP - RW61x OTA Software Update Guide](nxp_rw61x_ota_software_update.md) +- [NXP - RTs OTA Software Update Guide](nxp_RTs_ota_software_update.md) - [NXP - Zephyr OTA Software Update Guide](nxp_zephyr_ota_software_update.md) diff --git a/docs/platforms/nxp/nxp_rw61x_ota_software_update.md b/docs/platforms/nxp/nxp_RTs_ota_software_update.md similarity index 68% rename from docs/platforms/nxp/nxp_rw61x_ota_software_update.md rename to docs/platforms/nxp/nxp_RTs_ota_software_update.md index af67b1419d0526..696f5078c1941d 100644 --- a/docs/platforms/nxp/nxp_rw61x_ota_software_update.md +++ b/docs/platforms/nxp/nxp_RTs_ota_software_update.md @@ -1,13 +1,19 @@ -# Matter Over-The-Air Software Update with NXP RW61x example applications +# Matter Over-The-Air Software Update with NXP RTs example applications ## Overview +This document describes OTA feature on NXP devices: + +- RW61x +- RT1060_EVK-C +- RT1170_EVK-B + The OTA Requestor feature enables the device to be informed of, download and apply a software update from an OTA Provider. -This section explains how to perform an OTA Software Update with NXP RW61x -example applications. Throughout this guide, the all-clusters application is -used as an example. +This section explains how to perform an OTA Software Update with NXP RTs example +applications. Throughout this guide, the all-clusters application is used as an +example. In general, the Over-The-Air Software Update process consists of the following steps : @@ -24,10 +30,9 @@ steps : ### Flash Memory Layout -The RW61x Flash is divided into different regions as follow : +The RTs Flash is divided into different regions as follow : -- Bootloader : MCUBoot resides at the base of the flash and occupies 0x20000 - (128 kB). +- Bootloader : MCUBoot resides at the base of the flash. - Primary application partition : The example application which would be run by the bootloader (active application). The size reserved for this partition is 4.4 MB. @@ -36,11 +41,12 @@ The RW61x Flash is divided into different regions as follow : Notes : -- The CPU1/CPU2 firmware are embedded in the CPU3 example application. +- For RW61x: The CPU1/CPU2 firmware are embedded in the CPU3 example + application. - The sizes of the primary and secondary applications are provided as an example (currently 4.4 MB is reserved for each partition). The size can be changed by modifying the `m_app_max_sectors` value in the linker script of - the application (`RW610_flash.ld`). + the application . ### MCUBoot Bootloader @@ -48,11 +54,11 @@ MCUBoot is an open-source secure bootloader used by RW61x to apply the self-upgrade. For more details, please refer to the [MCUBoot documentation](https://github.com/mcu-tools/mcuboot/blob/main/docs/design.md). -For RW61x platform, the bootloader is configured to use the flash remapping +For RTs platform, the bootloader is configured to use the flash remapping mechanism by default, in order to perform the image upgrade. This is achieved by using the `MCUBoot DIRECT-XIP` upgrade mode. -## OTA Software Update process for RW61x example application +## OTA Software Update process for RTs example application ### Flashing the bootloader @@ -71,9 +77,11 @@ $ JLink Run the following commands : -``` +Connect J-Link debugger to device: + +```sh J-Link > connect -Device> ? # you will be presented with a dialog -> select `RW612` +Device> ? # you will be presented with a dialog -> select `RW612` for RW61x, `MIMXRT1062XXX6B` for RT1060, `MIMXRT1176xxxA_M7` for RT1170 Please specify target interface: J) JTAG (Default) S) SWD @@ -81,34 +89,60 @@ T) cJTAG TIF> S Specify target interface speed [kHz]. : 4000 kHz Speed> # +``` + +Erase flash: + +``` J-Link > exec EnableEraseAllFlashBanks +``` + +For RW61x + +``` J-Link > erase 0x8000000, 0x88a0000 ``` -- MCUBoot application can be built with SDK installed, using instructions +For RT1060-EVK-C - below. +``` +J-Link > erase 0x60000000, 0x61000000 +``` -- Retrieve the mcuboot directory with : +For RT1170-EVK-B ``` -user@ubuntu: cd ~/Desktop/connectedhomeip/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/armgcc +J-Link > erase 0x30000000, 0x34000000 ``` -``: Supported rw612 boards are: `rdrw612bga` or `frdmrw612` +- MCUBoot application can be built with SDK installed, using instructions + below. +- Retrieve the mcuboot directory located at + _'/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/`RTboard`1/ota_examples/`mcuboot_opensource/armgcc`'_ + +_1 `rdrw612bga` or `frdmrw612` for RW61x, +`evkcmimxrt1060` for RT1060-EVK-C, `evkbmimxrt1170` for RT1170-EVK-B_ + +``` +user@ubuntu: cd ~/Desktop/connectedhomeip/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/armgcc +``` -- Build the mcuboot application : +- Build the mcuboot application with running + `build_script`2 ``` -user@ubuntu: chmod +x build_flash_release.sh +user@ubuntu: chmod +x user@ubuntu: export ARMGCC_DIR=/opt/gcc-arm-none-eabi-10.3-2021.10 # with ARMGCC_DIR referencing the compiler path -user@ubuntu: ./build_flash_release.sh +user@ubuntu: ./ ``` +_2 `build_flash_release.sh` for RW61x, +`build_flexspi_nor_release.sh` for RT1060 and RT1170_ + - Program the generated binary to the target board. ``` -J-Link > loadbin ~/Desktop/connectedhomeip/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/armgcc/flash_release/mcuboot_opensource.elf +J-Link > loadbin /mcuboot_opensource.elf ``` - If it runs successfully, the following logs will be displayed on the @@ -126,10 +160,11 @@ Unable to find bootable image Note : By default, mcuboot application considers the primary and secondary partitions to be the size of 4.4 MB. If the size is to be changed, the partition -addresses should be modified in the flash_partitioning.h accordingly. For more +addresses should be modified in the `flash_partitioning.h` accordingly. For more information about the flash partitioning with mcuboot, please refer to the -dedicated readme.txt located in -"`/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/`". +dedicated `readme.txt` located in + +> _/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples/`RTboard`1/ota_examples/`mcuboot_opensource`/._ ### Generating and flashing the signed application image @@ -143,15 +178,25 @@ The image must have the following format : signature, the upgrade type, the swap status... The all-clusters application can be generated using the instructions from the -[README.md 'Building'](../../../examples/all-clusters-app/nxp/rt/rw61x/README.md#building) -section. The application is automatically linked to be executed from the primary -image partition, taking into consideration the offset imposed by mcuboot. -The resulting executable file found in out/debug/chip-rw61x-all-cluster-example +README.md3'Building' section. The +application is automatically linked to be executed from the primary image +partition, taking into consideration the offset imposed by mcuboot. + +_3 +[RW61x README.md 'Building'](../../../examples/all-clusters-app/nxp/rt/rw61x/README.md#building), +[RT1060 README.md 'Building'](../../../examples/all-clusters-app/nxp/rt/rt1060/README.md#building), +[RT1170 README.md 'Building'](../../../examples/all-clusters-app/nxp/rt/rt1170/README.md#building)_ + +The resulting executable file found in +out/release/chip-`board`4-all-cluster-example needs to be converted into raw binary format as shown below. -``` -arm-none-eabi-objcopy -R .flash_config -R .NVM -O binary chip-rw61x-all-cluster-example chip-rw61x-all-cluster-example.bin +_4 `rw61x` for RW61x, `rt1060` for +RT1060-EVK-C, `rt1170` for RT1170-EVK-B_ + +```sh +arm-none-eabi-objcopy -R .flash_config -R .NVM -O binary chip-<"board">-all-cluster-example chip-<"board">-all-cluster-example.bin ``` To sign the image and wrap the raw binary of the application with the header and @@ -161,10 +206,10 @@ trailer, "`imgtool`" is provided in the SDK and can be found in The following commands can be run (make sure to replace the /path/to/file/binary with the adequate files): -``` +```sh user@ubuntu: cd ~/Desktop//third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/middleware/mcuboot_opensource/scripts/ -user@ubuntu: python3 imgtool.py sign --key ~/Desktop//third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/keys/sign-rsa2048-priv.pem --align 4 --header-size 0x1000 --pad-header --pad --confirm --slot-size 0x440000 --max-sectors 1088 --version "1.0" ~/Desktop/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x/out/debug/chip-rw61x-all-cluster-example.bin ~/Desktop/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x/out/debug/chip-rw61x-all-cluster-example_SIGNED.bin +user@ubuntu: python3 imgtool.py sign --key ~/Desktop//third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/keys/sign-rsa2048-priv.pem --align 4 --header-size 0x1000 --pad-header --pad --confirm --slot-size 0x440000 --max-sectors 1088 --version "1.0" ~/Desktop/connectedhomeip/examples/all-clusters-app/nxp/rt/<"rt_board">/out/debug/chip-<"rt_board">-all-cluster-example.bin ~/Desktop/connectedhomeip/examples/all-clusters-app/nxp/rt/<"rt_board">/out/debug/chip-<"rt_board">-all-cluster-example_SIGNED.bin ``` Notes : @@ -176,7 +221,7 @@ Notes : adjusted accordingly. - In this example, the image is signed with the private key provided by the SDK as an example - (`/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/keys/sign-rsa2048-priv.pem`), + (`/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/keys/sign-rsa2048-priv.pem`), MCUBoot is built with its corresponding public key which would be used to verify the integrity of the image. It is possible to generate a new pair of keys using the following commands. This procedure should be done prior to @@ -195,18 +240,31 @@ user@ubuntu: python3 imgtool.py getpub -k priv_key.pem ``` - The extracted public key can then be copied to the - `/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/keys/sign-rsa2048-pub.c`, + `/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/examples//ota_examples/mcuboot_opensource/keys/sign-rsa2048-pub.c`, given as a value to the rsa_pub_key[] array. The resulting output is the signed binary of the application version "1.0". -JLink can be used to flash the application at the address 0x8020000, using the -command : +JLink can be used to flash the application using the command : + +For RW61x ``` J-Link > loadbin chip-rw61x-all-cluster-example_SIGNED.bin 0x8020000 ``` +For RT1060-EVK-C + +``` +J-Link > loadbin chip-rt1060-all-cluster-example_SIGNED.bin 0x60040000 +``` + +For RT1170-EVK-B + +``` +J-Link > loadbin chip-rt1170-all-cluster-example_SIGNED.bin 0x30040000 +``` + The bootloader should then be able to jump directly to the start of the application and run it. @@ -226,8 +284,8 @@ When the signed binary of the update is generated, the file should be converted into OTA format. To do so, the ota_image_tool is provided in the repo and can be used to convert a binary file into an .ota file. -``` -user@ubuntu:~/connectedhomeip$ : ./src/app/ota_image_tool.py create -v 0xDEAD -p 0xBEEF -vn 2 -vs "2.0" -da sha256 chip-rw61x-all-cluster-example_SIGNED.bin chip-rw61x-all-cluster-example.ota +```sh +user@ubuntu:~/connectedhomeip$ : ./src/app/ota_image_tool.py create -v 0xDEAD -p 0xBEEF -vn 2 -vs "2.0" -da sha256 chip-<"rt_board">-all-cluster-example_SIGNED.bin chip-rw61x-all-cluster-example.ota ``` The generated OTA file can be used to perform the OTA Software Update. The @@ -240,7 +298,7 @@ Setup example : - [Chip-tool](../../../examples/chip-tool/README.md) application running on the RPi. - OTA Provider application built on the same RPi (as explained below). -- RW61x board programmed with the example application (with the instructions +- RT board programmed with the example application (with the instructions above). Before starting the OTA process, the Linux OTA Provider application can be built @@ -248,9 +306,11 @@ on the RPi (if not already present in the pre-installed apps) : ``` user@ubuntu:~/connectedhomeip$ : ./scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/ota-provider-app chip_config_network_layer_ble=false - user@ubuntu:~/connectedhomeip$ : rm -rf /tmp/chip_* -user@ubuntu:~/connectedhomeip$ : ./out/ota-provider-app/chip-ota-provider-app -f chip-rw61x-all-cluster-example.ota +``` + +```sh +user@ubuntu:~/connectedhomeip$ : ./out/ota-provider-app/chip-ota-provider-app -f chip-<"rt_board">-all-cluster-example.ota ``` The OTA Provider should first be provisioned with chip-tool by assigning it the 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 45e58fffca24ea..aa3ef44b066cdd 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 @@ -8774,8 +8774,6 @@ endpoint 1 { server cluster EnergyEvseMode { callback attribute supportedModes; callback attribute currentMode; - ram attribute startUpMode; - ram attribute onMode; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; @@ -8790,8 +8788,6 @@ endpoint 1 { server cluster WaterHeaterMode { callback attribute supportedModes; callback attribute currentMode; - ram attribute startUpMode; - ram attribute onMode; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; @@ -8806,8 +8802,6 @@ endpoint 1 { server cluster DeviceEnergyManagementMode { callback attribute supportedModes; callback attribute currentMode; - ram attribute startUpMode; - ram attribute onMode; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index f8e3dbd8806c3f..741812bc3c2b26 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -1,6 +1,6 @@ { "fileFormat": 2, - "featureLevel": 103, + "featureLevel": 104, "creator": "zap", "keyValuePairs": [ { @@ -41,20 +41,23 @@ "code": 17, "profileId": 259, "label": "MA-powersource", - "name": "MA-powersource" + "name": "MA-powersource", + "deviceTypeOrder": 0 }, "deviceTypes": [ { "code": 17, "profileId": 259, "label": "MA-powersource", - "name": "MA-powersource" + "name": "MA-powersource", + "deviceTypeOrder": 0 }, { "code": 22, "profileId": 259, "label": "MA-rootdevice", - "name": "MA-rootdevice" + "name": "MA-rootdevice", + "deviceTypeOrder": 1 } ], "deviceVersions": [ @@ -6102,20 +6105,23 @@ "code": 256, "profileId": 259, "label": "MA-onofflight", - "name": "MA-onofflight" + "name": "MA-onofflight", + "deviceTypeOrder": 0 }, "deviceTypes": [ { "code": 256, "profileId": 259, "label": "MA-onofflight", - "name": "MA-onofflight" + "name": "MA-onofflight", + "deviceTypeOrder": 0 }, { "code": 17, "profileId": 259, "label": "MA-powersource", - "name": "MA-powersource" + "name": "MA-powersource", + "deviceTypeOrder": 1 } ], "deviceVersions": [ @@ -14526,38 +14532,6 @@ "maxInterval": 65534, "reportableChange": 0 }, - { - "name": "StartUpMode", - "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": "OnMode", - "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": "GeneratedCommandList", "code": 65528, @@ -14714,38 +14688,6 @@ "maxInterval": 65534, "reportableChange": 0 }, - { - "name": "StartUpMode", - "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": "OnMode", - "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": "GeneratedCommandList", "code": 65528, @@ -14903,38 +14845,6 @@ "maxInterval": 65534, "reportableChange": 0 }, - { - "name": "StartUpMode", - "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": "OnMode", - "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": "GeneratedCommandList", "code": 65528, @@ -23363,20 +23273,23 @@ "code": 256, "profileId": 259, "label": "MA-onofflight", - "name": "MA-onofflight" + "name": "MA-onofflight", + "deviceTypeOrder": 0 }, "deviceTypes": [ { "code": 256, "profileId": 259, "label": "MA-onofflight", - "name": "MA-onofflight" + "name": "MA-onofflight", + "deviceTypeOrder": 0 }, { "code": 17, "profileId": 259, "label": "MA-powersource", - "name": "MA-powersource" + "name": "MA-powersource", + "deviceTypeOrder": 1 } ], "deviceVersions": [ @@ -24815,14 +24728,16 @@ "code": 15, "profileId": 259, "label": "MA-genericswitch", - "name": "MA-genericswitch" + "name": "MA-genericswitch", + "deviceTypeOrder": 0 }, "deviceTypes": [ { "code": 15, "profileId": 259, "label": "MA-genericswitch", - "name": "MA-genericswitch" + "name": "MA-genericswitch", + "deviceTypeOrder": 0 } ], "deviceVersions": [ @@ -25274,14 +25189,16 @@ "code": 15, "profileId": 259, "label": "MA-genericswitch", - "name": "MA-genericswitch" + "name": "MA-genericswitch", + "deviceTypeOrder": 0 }, "deviceTypes": [ { "code": 15, "profileId": 259, "label": "MA-genericswitch", - "name": "MA-genericswitch" + "name": "MA-genericswitch", + "deviceTypeOrder": 0 } ], "deviceVersions": [ @@ -25685,14 +25602,16 @@ "code": 25, "profileId": 259, "label": "MA-secondary-network-interface", - "name": "MA-secondary-network-interface" + "name": "MA-secondary-network-interface", + "deviceTypeOrder": 0 }, "deviceTypes": [ { "code": 25, "profileId": 259, "label": "MA-secondary-network-interface", - "name": "MA-secondary-network-interface" + "name": "MA-secondary-network-interface", + "deviceTypeOrder": 0 } ], "deviceVersions": [ diff --git a/examples/all-clusters-app/nxp/rt/rt1060/.gn b/examples/all-clusters-app/nxp/rt/rt1060/.gn new file mode 100644 index 00000000000000..0985ed955a426f --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1060/.gn @@ -0,0 +1,35 @@ +# 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") +import("//build_overrides/chip.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 = { + target_cpu = "arm" + target_os = "freertos" + + import("//args.gni") + + # Import common example GN args + import("${chip_root}/examples/platform/nxp/common/gn/args.gni") + + # Import default platform configs + import("${chip_root}/src/platform/nxp/rt/rt1060/args.gni") +} diff --git a/examples/all-clusters-app/nxp/rt/rt1060/BUILD.gn b/examples/all-clusters-app/nxp/rt/rt1060/BUILD.gn new file mode 100644 index 00000000000000..16e0b03e017c94 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1060/BUILD.gn @@ -0,0 +1,284 @@ +# Copyright (c) 2021-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. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") +import("${chip_root}/src/platform/device.gni") + +#allows to get common NXP SDK gn options +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +# Allows to get various RT gn options +import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni") + +import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni") +import( + "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni") +import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni") + +assert(current_os == "freertos") +assert(target_os == "freertos") +assert(nxp_platform == "rt/rt1060") + +declare_args() { + # Allows to enable to ota_provider support + enable_ota_provider = false + + # Allows to connect to a predefine Wi-Fi network at boot + wifi_auto_connect_at_boot = false + wifi_auto_connect_at_boot_ssid = "" + wifi_auto_connect_at_boot_password = "" + + # Setup discriminator as argument + setup_discriminator = 3840 +} + +example_platform_dir = + "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}" +common_example_dir = "${chip_root}/examples/platform/nxp/common" + +app_common_folder = "all-clusters-app/all-clusters-common" + +# Create here the SDK instance. +# Particular sources/defines/includes could be added/changed depending on the target application. +rt_sdk("sdk") { + defines = [] + + cflags = [] + public_deps = [] + public_configs = [] + sources = [] + include_dirs = [] + + # Indicate paths to default board files + include_dirs += [ "${example_platform_dir}/board/" ] + + # RT1060 rev A use same pin mux as rev B + # If user needs different pin mux files for rev A and rev B boards, the source and include from below needs to be updated accordingly + if (evkname == "evkmimxrt1060") { + include_dirs += [ "${example_platform_dir}/board/evkbmimxrt1060/" ] + sources += [ "${example_platform_dir}/board/evkbmimxrt1060/pin_mux.c" ] + } else { + include_dirs += [ "${example_platform_dir}/board/${evkname}/" ] + sources += [ "${example_platform_dir}/board/${evkname}/pin_mux.c" ] + } + + sources += [ "${example_platform_dir}/board/hardware_init.c" ] + sources += [ "${example_platform_dir}/board/clock_config.c" ] + sources += [ "${example_platform_dir}/board/board.c" ] + sources += [ "${example_platform_dir}/board/peripherals.c" ] + + # Indicate the path to CHIPProjectConfig.h + include_dirs += [ "include/config" ] + + # Indicate the default path to FreeRTOSConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ] + + # Indicate the default path to OpenThreadConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ] + + # For matter with BR feature, increase FreeRTOS heap size + if (chip_enable_wifi && chip_enable_openthread) { + defines += [ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)" ] + } + + defines += [ + "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}", + ] +} + +# Create the SDK driver instance. +# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template +rt1060_sdk_drivers("sdk_driver") { +} + +rt_executable("all_cluster_app") { + output_name = "chip-rt1060-all-cluster-example" + + defines = [ + "CONFIG_RENDEZVOUS_MODE=7", + "CONFIG_APP_FREERTOS_OS=1", + ] + + if (chip_enable_openthread) { + defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ] + } + + include_dirs = [ + "../../common/main/include", + "../../common/main", + "${chip_root}/examples/all-clusters-app/all-clusters-common/include", + "${chip_root}/examples/providers/", + ] + + sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", + "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp", + "../../common/main/AppTask.cpp", + "../../common/main/DeviceCallbacks.cpp", + "../../common/main/ZclCallbacks.cpp", + "../../common/main/include/AppEvent.h", + "../../common/main/include/AppTask.h", + "../../common/main/include/DeviceCallbacks.h", + "../../common/main/main.cpp", + ] + + # App common files + include_dirs += [ + "${common_example_dir}/icd/include", + "${common_example_dir}/matter_cli/include", + "${common_example_dir}/device_manager/include", + "${common_example_dir}/device_callbacks/include", + "${common_example_dir}/matter_button/include", + "${common_example_dir}/factory_data/include", + "${common_example_dir}/app_task/include", + ] + + sources += [ + "${chip_root}/examples/platform/nxp/${nxp_platform}/factory_data/source/AppFactoryDataExample.cpp", + "${common_example_dir}/app_task/source/AppTaskBase.cpp", + "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp", + "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp", + "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp", + "${common_example_dir}/icd/source/ICDUtil.cpp", + "${common_example_dir}/matter_button/source/ButtonDefault.cpp", + "${common_example_dir}/matter_button/source/ButtonManager.cpp", + "${common_example_dir}/matter_button/source/ButtonRegistrationDefault.cpp", + ] + + deps = [ "${chip_root}/examples/${app_common_folder}" ] + + sources += [ + "${chip_root}/examples/${app_common_folder}/src/bridged-actions-stub.cpp", + "${chip_root}/examples/${app_common_folder}/src/smco-stub.cpp", + "${chip_root}/examples/${app_common_folder}/src/static-supported-modes-manager.cpp", + ] + + if (chip_enable_matter_cli) { + defines += [ "ENABLE_CHIP_SHELL" ] + deps += [ + "${chip_root}/examples/shell/shell_common:shell_common", + "${chip_root}/src/lib/shell:shell", + ] + sources += [ + "${common_example_dir}/matter_cli/source/AppCLIBase.cpp", + "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp", + ] + } + + if (chip_enable_ota_requestor) { + include_dirs += [ "${common_example_dir}/ota_requestor/include" ] + sources += [ + "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp", + "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp", + ] + } + + if (wifi_auto_connect_at_boot) { + assert(wifi_auto_connect_at_boot_ssid != "" && + wifi_auto_connect_at_boot_password != "", + "WiFi SSID and password must be specified at build time!") + + defines += [ + "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1", + "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"", + "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"", + ] + + include_dirs += [ "${common_example_dir}/wifi_connect/include" ] + sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ] + } + + if (enable_ota_provider) { + defines += [ "CONFIG_CHIP_OTA_PROVIDER=1" ] + + include_dirs += [ + "${common_example_dir}/ota_provider/include", + "${common_example_dir}/ota_provider/ota-provider-common", + ] + + sources += [ + "${common_example_dir}/ota_provider/ota-provider-common/RTBdxOtaSender.cpp", + "${common_example_dir}/ota_provider/ota-provider-common/RTOTAProviderExample.cpp", + "${common_example_dir}/ota_provider/source/OTAProvider.cpp", + ] + + deps += [ + "${chip_root}/src/app/server", + "${chip_root}/src/protocols/bdx", + "${chip_root}/third_party/jsoncpp", + ] + } + + # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false + # The would add to the build a dedicated application assert implementation. + if (!sdk_fsl_assert_support) { + sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ] + } + + cflags = [ "-Wconversion" ] + + ldscript = + "${example_platform_dir}/app/ldscripts/MIMXRT1062xxxxx_flexspi_nor.ld" + + inputs = [ ldscript ] + + ldflags = [ + "-T" + rebase_path(ldscript, root_build_dir), + "-fno-common", + "-Wl,--defsym=__stack_size__=2048", + "-ffreestanding", + "-fno-builtin", + "-mapcs", + "-u qspiflash_config", + "-u image_vector_table", + "-u boot_data", + "-u dcd_data", + "-Wl,-print-memory-usage", + "-Wl,--no-warn-rwx-segments", + ] + + if (evkname == "evkcmimxrt1060") { + ldflags += [ "-Wl,--defsym=gEVKCFlashSize_d=0x1000000" ] + } + + if (enable_ota_provider) { + # As the OTA file will be stored in the littlefs file system, it is required to increase the size of the file system + # To be able to store an OTA file with a MAX size of 640K, + # it recommended to size the file system with: + # 161 sectors of 4K => reserved for the OTA file + # 32 sectors of 4K => reserved for Matter/OT/BLE settings storage + ldflags += [ "-Wl,--defsym=gNVMSectorCountLink_d=193" ] + } + + if (chip_enable_ota_requestor) { + # If OTA build flag is enabled, + # we would need to reserve enough space for the bootloader (MCUBoot) + # MCUBoot requires 0x11000 Bytes to be reserved at the base of the flash + # Consequently, some sections will need to be shifted + ldflags += [ "-Wl,--defsym=__m_mcuboot_size__=0x40000" ] + } + + output_dir = root_out_dir +} + +group("rt1060") { + deps = [ ":all_cluster_app" ] +} + +group("default") { + deps = [ ":rt1060" ] +} diff --git a/examples/all-clusters-app/nxp/rt/rt1060/README.md b/examples/all-clusters-app/nxp/rt/rt1060/README.md new file mode 100644 index 00000000000000..558ae4127fe72e --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1060/README.md @@ -0,0 +1,723 @@ +# CHIP RT1060 All-clusters Application + +The all-clusters example implements a server which can be accessed by a CHIP +controller and can accept basic cluster commands. + +The example is based on +[Project CHIP](https://github.com/project-chip/connectedhomeip) and the NXP +RT1060 SDK, and provides a prototype application that demonstrates device +commissioning and different cluster control. + +
+ +- [CHIP RT1060 All-clusters Application](#chip-rt1060-all-clusters-application) + - [Introduction](#introduction) + - [Configurations supported](#configurations-supported) + - [Hardware requirements RT1060 + transceiver](#hardware-requirements-rt1060--transceiver) + - [Hardware requirements RT1060+IW416](#hardware-requirements-rt1060iw416) + - [Hardware requirements RT1060+88W8801](#hardware-requirements-rt106088w8801) + - [Hardware requirements RT1060 + K32W0](#hardware-requirements-rt1060--k32w0) + - [Hardware requirements RT1060-EVK-C+IW612](#hardware-requirements-rt1060-evk-ciw612) + - [Hardware requirements RT1060 + 88W8801 + K32W0x1DK6](#hardware-requirements-rt1060--88w8801--k32w0x1dk6) + - [Building](#building) + - [Building with Matter over Wifi configuration on RT1060 + transceiver](#building-with-matter-over-wifi-configuration-on-rt1060--transceiver) + - [Build with Matter over Thread configuration on RT1060 + transceiver](#build-with-matter-over-thread-configuration-on-rt1060--transceiver) + - [Build with Matter over Thread configuration on RT1060 + K32W0](#build-with-matter-over-thread-configuration-on-rt1060--k32w0) + - [Build with Matter over Thread configuration on RT1060-EVK-C + IW612](#build-with-matter-over-thread-configuration-on-rt1060-evk-c--iw612) + - [Build with Matter over Wi-Fi + OpenThread Border Router configuration on RT1060 + 88W8801 + K32W0x1DK6](#build-with-matter-over-wi-fi--openthread-border-router-configuration-on-rt1060--88w8801--k32w0x1dk6) + - [General Information](#general-information) + - [Manufacturing data](#manufacturing-data) + - [Flashing and debugging](#flashing-and-debugging) + - [Testing the example](#testing-the-example) + - [Matter over wifi configuration :](#matter-over-wifi-configuration-) + - [Matter over thread configuration :](#matter-over-thread-configuration-) + - [Matter over wifi with openthread border router configuration :](#matter-over-wifi-with-openthread-border-router-configuration-) + - [Testing the all-clusters application without Matter CLI:](#testing-the-all-clusters-application-without-matter-cli) + - [Testing the all-clusters application with Matter CLI enabled:](#testing-the-all-clusters-application-with-matter-cli-enabled) + - [Thread Border Router overview](#thread-border-router-overview) +
+ + + +## Introduction + +![RT1060 EVK-B](../../../../platform/nxp/rt/rt1060/doc/images/MIMXRT1060-EVKB-TOP.png) + +The RT1060 all-cluster application provides a working demonstration of the +RT1060 board integration, built using the Project CHIP codebase and the NXP +RT1060 SDK. + +The example supports: + +- Matter over Wi-Fi +- Matter over Openthread +- Matter over Wi-Fi with Openthread Border Router support + +The example targets the +[NXP MIMXRT1060-EVK-B](https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/mimxrt1060-evk-i-mx-rt1060-evaluation-kit:MIMXRT1060-EVK) +board by default. It is also possible to use the older MIMXRT1060-EVK board, +build and board setup instructions differ in some steps. + +### Configurations supported + +Here are listed configurations supported on RT1060. + +Matter over Wi-Fi : + +- RT1060 + IW416 (Wi-Fi + BLE) +- RT1060 + 88W8801 (Wi-Fi) +- **Experimental:** _RT1060-EVK-C + IW612 (Wi-fi +BLE)_ + +Matter over Thread : + +- RT1060 + K32W0 (15.4 + BLE) +- **Experimental:** _RT1060-EVK-C + IW612 (15.4 + BLE)_ + +Matter over Wi-Fi with Openthread Border Router support : + +- RT1060 + 88W8801 + K32W0x1DK6 + +### Hardware requirements RT1060 + transceiver + +#### Hardware requirements RT1060+IW416 + +Host part: + +- 1 MIMXRT1060-EVK-B or MIMXRT1060-EVK board +- external 5V supply + +Transceiver part: + +- 1 AzureWave AW-AM510-uSD evaluation board + +Jumper settings for MIMXRT1060-EVK-B (enables external 5V supply): + +- remove J40 5-6 +- connect J40 1-2 +- connect J45 with external power (controlled by SW6 - position 3) + +Jumper settings for MIMXRT1060-EVK (enables external 5V supply): + +- remove J1 5-6 +- connect J1 1-2 +- connect J2 with external power (enabled by SW1 - position 3) + +The hardware should be reworked according to the chapter _Hardware Rework Guide +for MIMXRT1060-EVK-B and AW-AM510-uSD_ or the chapter _Hardware Rework Guide for +MIMXRT1060-EVK and AW-AM510-uSD_ in the document +_`Hardware Rework Guide for EdgeFast BT PAL`_ which can be found in the NXP +RT1060 SDK (_docs/wireless/bluetooth/`edgefast_bluetooth`/Hardware Rework Guide +for EdgeFast BT PAL.pdf_): + +- Make sure resistors R368/R376/R347/R349/R365/R363/R193/R186 are removed. + +Only the SDK package downloaded from https://mcuxpresso.nxp.com contains the PDF +document mentioned above, it is not present in the SDK downloaded from GitHub +using the west tool. + +Jumper settings for AzureWave AW-AM510-uSD Module: + +- J4 1-2: `VIO` 1.8V (Voltage level of SD-IO pins is 1.8V) +- J2 1-2: 3.3V `VIO_uSD` (Power Supply from uSD connector) +- The pin 1 of J4 is not marked on the board. Please note that pin numbering + of J4 is opposite to J2. + +Plug AW-AM510-uSD into uSD connector J22 on MIMXRT1060-EVK-B or J39 on +MIMXRT1060-EVK. + +Connect the following pins between RT1060 and AW-AM510-uSD to enable Bluetooth +HCI UART: + +| PIN NAME | AW-AM510-uSD | MIMXRT1060-EVK-B | MIMXRT1060-EVK | PIN NAME OF RT1060 | GPIO NAME OF RT1060 | +| :--------: | :-----------: | :--------------: | :------------: | :----------------: | :-----------------: | +| `UART_TXD` | `J10 (pin 4)` | `J16 (pin 1)` | `J22 (pin 1)` | `LPUART3_RXD` | `GPIO_AD_B1_07` | +| `UART_RXD` | `J10 (pin 2)` | `J16 (pin 2)` | `J22 (pin 2)` | `LPUART3_TXD` | `GPIO_AD_B1_06` | +| `UART_RTS` | `J10 (pin 6)` | `J33 (pin 3)` | `J23 (pin 3)` | `LPUART3_CTS` | `GPIO_AD_B1_04` | +| `UART_CTS` | `J10 (pin 8)` | `J33 (pin 4)` | `J23 (pin 4)` | `LPUART3_RTS` | `GPIO_AD_B1_05` | +| `GND` | `J6 (pin 7)` | `J32 (pin 7)` | `J25 (pin 7)` | `GND` | `GND` | + +Attach external antenna into connector on AW-AM510-uSD. + +Additional information about the AW-AM510-uSD can be found in the user manual +_UM11441 - Getting Started with NXP-based Wireless Modules and i.MX RT Platform +Running RTOS_, which can be found in the NXP RT1060 SDK +(docs/wireless/UM11441-Getting-Started-with-NXP-based-Wireless-Modules-and-i.MX-RT-Platform-Running-on-RTOS.pdf). +Only the SDK package downloaded from https://mcuxpresso.nxp.com contains the PDF +document, it is not present in the SDK downloaded from GitHub using the west +tool. + +#### Hardware requirements RT1060+88W8801 + +Host part: + +- 1 MIMXRT1060-EVK-B + +Transceiver part : + +- 1 88W8801 2DS M.2 Module (rev A) +- 1 Murata uSD-M.2 Adapter (rev B1) + +The 88W8801 2DS M.2 Module should be inserted into the Murata uSD-M.2 Adapter +and inserted in the uSD slot J22 of MIMXRT1060-EVK-B. The Murata uSD-M.2 Adapter +can be powered up using uSD pins. For that, set the J1 jumper of Murata uSD-M.2 +to position 2-3 (Position 2-3: `VBAT supply`, typical 3.1 ~ 3.3V, from microSD +connector). + +Note: as the 88W8801 module supports only the 2.4 GHz Wi-Fi band, it is +mandatory to connect it to a Wi-Fi access point on the 2.4 GHz band. + +#### Hardware requirements RT1060 + K32W0 + +Host part: + +- 1 MIMXRT1060-EVK-B or MIMXRT1060-EVK board + +Transceiver part: + +- 1 OM15076-3 Carrier Board (DK6 board) +- 1 K32W0 Module to be plugged on the Carrier Board + +**Board settings** + +The below table explains pin settings (UART settings) to connect the +MIMXRT1060-EVK-B (host) to a k32w061 transceiver (rcp). + +| PIN NAME | DK6 (K32W061) | MIMXRT1060-EVK-B | MIMXRT1060-EVK | PIN NAME OF RT1060 | GPIO NAME OF RT1060 | +| :--------------: | :-----------: | :--------------: | :------------: | :----------------: | :-----------------: | +| `UART_TXD` | `PIO, pin 8` | `J16, pin 1` | `J22, pin 1` | `LPUART3_RXD` | `GPIO_AD_B1_07` | +| `UART_RXD` | `PIO, pin 9` | `J16, pin 2` | `J22, pin 2` | `LPUART3_TXD` | `GPIO_AD_B1_06` | +| `UART_RTS` | `PIO, pin 6` | `J33, pin 3` | `J23, pin 3` | `LPUART3_CTS` | `GPIO_AD_B1_04` | +| `UART_CTS` | `PIO, pin 7` | `J33, pin 4` | `J23, pin 4` | `LPUART3_RTS` | `GPIO_AD_B1_05` | +| `GND` | `J3, pin 1` | `J32, pin 7` | `J25, pin 7` | `XX` | `XX` | +| `RESET` | `RSTN` | `J33, pin 2` | `J23, pin 2` | `GPIO_AD_B1_11` | `GPIO_AD_B1_11` | +| `DIO5/ISP Entry` | `PIO, pin 5` | `J33, pin 1` | `J23, pin 1` | `GPIO_AD_B1_10` | `GPIO_AD_B1_10` | + +The below picture shows pins connections for the MIMXRT1060-EVK. + +![rt1060_k32w061_pin_settings](../../../../platform/nxp/rt/rt1060/doc/images/rt1060_k32w061_pin_settings.jpg) + +#### Hardware requirements RT1060-EVK-C+IW612 + +Host part: + +- 1 MIMXRT1060-EVK-C + + Hardware should be reworked as below: + + - populate R93, R96, R2155, R2156, R2157, R2158, R2159 with 0Ohm resistors + - J76 and J107 jumpers in 2-3 position. + - J109 and J110 jumpers in 1-2 position. + - disconnect pin15 of component U9 + +![rt1060_evkc_IW612_hw_rework](../../../../platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework.jpg) + +![rt1060_evkc_IW612_hw_rework_detail](../../../../platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework_detail.jpg) + +Transceiver part : + +- 1 + [2EL M2 A1 IW612 Secure Module](https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth-plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-2-plus-802-15-4-tri-radio-solution:IW612) + +![](../../../../platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg) + +#### Hardware requirements RT1060 + 88W8801 + K32W0x1DK6 + +- i.MX RT1060 EVK-A or EVK-B board +- 88W8801 module (for Wi-Fi connection), for example 88W8801 2DS M.2 Module + (rev A) and Murata uSD-M.2 Adapter (rev B1) +- K32W0x1 mezzanine module (for Thread connection) +- `IOT_ZTB-DK006` carrier board for the K32W0x1 module (referenced as DK6 + carrier board) + + + +## Building + +In order to build the Project CHIP example, we recommend using a Linux +distribution. Supported Operating Systems are listed in +[BUILDING.md](../../../../../docs/guides/BUILDING.md). + +- Make sure that below prerequisites are correctly installed, as described in + [BUILDING.md](../../../../../docs/guides/BUILDING.md). + +``` +sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \ + libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \ + python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev +``` + +- Step 1: checkout NXP specific submodules only + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ scripts/checkout_submodules.py --shallow --platform nxp --recursive +``` + +- Step 2: activate local environment + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/activate.sh +``` + +If the script says the environment is out of date, you can update it by running +the following command: + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/bootstrap.sh +``` + +- Step 3: Init NXP SDK(s) + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ third_party/nxp/nxp_matter_support/scripts/update_nxp_sdk.py --platform common +``` + +Note: By default update_nxp_sdk.py will try to initialize all NXP SDKs. Arg "-- +help" could be used to view all available options. + +- Start building the application. + +### Building with Matter over Wifi configuration on RT1060 + transceiver + +- Build the Wi-fi configuration for **MIMXRT1060-EVK-B board + IW416 + transceiver** (with BLE for commissioning). + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true iw416_transceiver=true" out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug +``` + +- Build the Wi-fi configuration for **MIMXRT1060-EVK-B board + 88W8801 + transceiver** with Matter-over-Wifi configuration and only onnetwork + commissioning (without BLE, the WiFi network credentials are provided at + build-time which will enable the device to join the Wi-Fi AP at startup): + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ export ssid_name= && export ssid_password= && gn gen --args="chip_enable_wifi=true w8801_transceiver=true chip_config_network_layer_ble=false wifi_auto_connect_at_boot=true wifi_auto_connect_at_boot_ssid=\"${ssid_name}\" wifi_auto_connect_at_boot_password=\"${ssid_password}\"" out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug +``` + +- Build the Wi-fi configuration for **MIMXRT1060-EVK-C board + IW612 + transceiver** (with BLE for commissioning). + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true iwx12_transceiver=true evkname=\"evkcmimxrt1060\" " out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug +``` + +- Build the Wi-fi configuration for **MIMXRT1060-EVK-C board + IW612 + transceiver** with Matter-over-Wifi configuration and only onnetwork + commissioning (without BLE, the WiFi network credentials are provided at + build-time which will enable the device to join the Wi-Fi AP at startup): + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true iwx12_transceiver=true evkname=\"evkcmimxrt1060\" chip_config_network_layer_ble=false tcp_download=true wifi_ssid=\"your_wifi_ssid\" wifi_password=\"your_wifi_password\"" out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug +``` + +### Build with Matter over Thread configuration on RT1060 + transceiver + +#### Build with Matter over Thread configuration on RT1060 + K32W0 + +For this configuration a K32W0 RCP image is required and must support in a +single image the openthread RCP configuration and the BLE HCI BB configuration. +Messages between the host and the K32W0 transceiver are transferred on a single +UART with flow control support. For that the HDLC-Lite framing protocol is used +to transfer spinel and hci frames. In addition, hci and spinel frames can be +distinguished by using the Spinel convention which is line compatible with +BT/BLE HCI. + +Before building the Matter host application, it is required to generate the +K32W0 image supporting features as described above. To build this binary the +target `ot_rcp_ble_hci_bb_single_uart_fc` should be built by following the +[Readme.md][ot_rcp_ble_hci_bb_k32w0_readme]. After a successful build, a `".h"` +file will be generated and would contain the K32W0 RCP binary. As described in +the [Readme.md][ot_rcp_ble_hci_bb_k32w0_readme], the application binaries will +be generated in +`ot_nxp/build_k32w061/ot_rcp_ble_hci_bb_single_uart_fc/bin/ot-rcp-ble-hci-bb-k32w061.elf.bin.h`. + +The generate K32W0 transceiver binary `".h"` file path must be indicated to the +host Matter application build. In fact the Matter host application is in charge +of storing the K32W0 firmware in its flash to be able to use the +`The Over The Wire (OTW) protocol (over UART)` to download (at host startup) the +k32w0 transceiver image from the host to the K32W0 internal flash. For more +information on the k32w0 `OTW` protocol, user can consult the doxygen header of +the file located in +`/third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/middleware/wireless/framework/OTW/k32w0_transceiver/fwk_otw.c`. + +Here is a summary of the k32w0 _gn gen_ arguments that are mandatory or +optional: + +- Mandatory: `k32w0_transceiver=true` +- Mandatory: `hci_spinel_single_uart=true` +- Optional: + `k32w0_transceiver_bin_path=\"/home/ot-nxp/build_k32w061/ot_rcp_ble_hci_bb_single_uart_fc/bin/ot-rcp-ble-hci-bb-k32w061.elf.bin.h\"` + This argument is optional, by default, if not set, the binary file located + in + "\${chip_root}/third_party/openthread/ot_nxp/build_k32w061/ot_rcp_ble_hci_bb_single_uart_fc/bin/ot-rcp-ble-hci-bb-k32w061.elf.bin.h" + will be used. If the K32W061 transceiver binary is saved at another location + an absolute path of its location should be given. +- Optional: `otw_logs_enabled=true` This argument is optional, by default + being set to false. If set to true, RT logging will print the `OTW` logs. + +[ot_rcp_ble_hci_bb_k32w0_readme]: + https://github.com/NXP/ot-nxp/blob/v1.0.0.2-tag-nxp/examples/hybrid/ot_rcp_ble_hci_bb/k32w061/README.md#building-the-examples + +Below is presented an example of _gn gen_ argument that could be used to +generate the host matter application with a k32w0 transceiver. + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_openthread=true k32w0_transceiver=true k32w0_transceiver_bin_path=\"/home/ot-nxp/build_k32w061/ot_rcp_ble_hci_bb_single_uart_fc/bin/ot-rcp-ble-hci-bb-k32w061.elf.bin.h\" hci_spinel_single_uart=true chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=true" out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug +``` + +#### Build with Matter over Thread configuration on RT1060-EVK-C + IW612 + +Build the OpenThread configuration for MIMXRT1060-EVK-C board + IW612 +transceiver (with BLE for commissioning). + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_openthread=true iwx12_transceiver=true evkname=\"evkcmimxrt1060\" chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=true" " out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug +``` + +### Build with Matter over Wi-Fi + OpenThread Border Router configuration on RT1060 + 88W8801 + K32W0x1DK6 + +This configuration supports the Thread Border Router management cluster to +provision the Thread credentials. Enabling the Matter CLI in order to control +the Thread network on the Border Router is optional but recommended for other +features like the Thread credential sharing. + +Note that the Thread Border Router management cluster is only supported on the +thermostat application for now. + +- Build Matter with Border Router configuration with ble-wifi commissioning: + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true w8801_transceiver=true chip_enable_matter_cli=true chip_config_network_layer_ble=true chip_enable_openthread=true k32w0_transceiver=true k32w0_transceiver_bin_path=\"/path/to/ot-rcp/ot-rcp-ble-hci-bb-k32w061.elf.bin.h\" hci_spinel_single_uart=true" out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug +``` + +- Build Matter with Border Router configuration with onnetwork commissioning: + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ gn gen --args="chip_enable_wifi=true w8801_transceiver=true chip_enable_matter_cli=true chip_config_network_layer_ble=false wifi_auto_connect_at_boot=true wifi_auto_connect_at_boot_ssid=\"your_wifi_ssid\" wifi_auto_connect_at_boot_password=\"your_wifi_password\" chip_enable_openthread=true k32w0_transceiver=true k32w0_transceiver_bin_path=\"/path/to/ot-rcp/ot-rcp-ble-hci-bb-k32w061.elf.bin.h\"" out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1060$ ninja -C out/debug +``` + +### General Information + +The resulting output file can be found in +out/debug/chip-rt1060-all-cluster-example. + +Optional GN options that can be added when building an application: + +- To enable the + [secondary network commissioning interface](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-secondary-network-commissioning-interface), + the arguments `chip_enable_secondary_nwk_if=true` and + `chip_device_config_thread_network_endpoint_id=3` must be added to the _gn + gen_ command. Note that this is only supported when building the Matter over + Wifi + OpenThread Border Router configuration. Note that is only supported + on the on the thermostat application for now. +- To enable the [matter CLI](README.md#matter-shell), the argument + `chip_enable_matter_cli=true` must be added to the _gn gen_ command. +- To build the application in debug mode, the argument + `is_debug=true optimize_debug=false` must be added to the _gn gen_ command. +- By default, the MIMXRT1060-EVK-B will be chosen. To switch to an + MIMXRT1060-EVK, the argument `evkname=\"evkmimxrt1060\"` must be added to + the _gn gen_ command. +- To build with the option to have Matter certificates/keys pre-loaded in a + specific flash area the argument `chip_with_factory_data=1` must be added to + the _gn gen_ command. For more information, see + [Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md) + + + +## Manufacturing data + +See +[Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md) + +Other comments: + +The RT1060 all cluster app demonstrates the usage of encrypted Matter +manufacturing data storage. Matter manufacturing data should be encrypted before +flashing them to the RT1060 flash. + +For development purpose the RT1060 all cluster app code could use the hardcoded +AES 128 software key. This software key should be used only during development +stage. + +For production usage, it is recommended to use the `OTP key` which needs to be +fused in the RT1060 SW_GP2. The application note AN12800 should be followed to +get more information. In this case the all cluster app should be updated to +indicate to the `DCP` module to use the `OTP key` instead of the software key. +For that the call to `FactoryDataPrvdImpl().SetAes128Key()` should be changed to +`FactoryDataPrvdImpl().SetKeySelected(KeySelect::)` with the arg value +specifying where the `OTP key` is stored (`kDCP_OCOTPKeyLow` for [127:0] of +SW_GP2 or `kDCP_OCOTPKeyHigh` for [255:128] of SW_GP2). For more information the +RT1060 `FactoryDataProviderImpl` class description should be checked. + + + +## Flashing and debugging + +In order to flash the application we recommend using +[MCUXpresso IDE (version >= 11.6.0)](https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE). + +- Import the previously downloaded NXP SDK into MCUXpresso IDE. + +Right click the empty space in the MCUXpresso IDE "Installed SDKs" tab to show +the menu, select the "Import local SDK Git repository" menu item. + +![Import local SDK Git repository](../../../../platform/nxp/rt/rt1060/doc/images/import-local-repository.png) + +The "Import SDK Git" window will open. The "Repository location" text field +should point to the west workspace +(third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo subfolder of the +Matter repository). The "Manifest(s) folder" text field should point to its core +subfolder (third_party/nxp/nxp_matter_support/github_sdk/common_sdk/repo/core +subfolder of the Matter repository). Click "OK" and wait for MCUXpresso IDE to +import the SDK. + +![Import SDK Git](../../../../platform/nxp/rt/rt1060/doc/images/import-sdk-git.png) + +Finally select the desired board's SDK manifest in the "Installed SDKs" tab. + +![Select SDK](../../../../platform/nxp/rt/rt1060/doc/images/select-sdk.png) + +- Import the connectedhomeip repo in MCUXpresso IDE as Makefile Project. Use + _none_ as _Toolchain for Indexer Settings_: + +``` +File -> Import -> C/C++ -> Existing Code as Makefile Project +``` + +- Configure MCU Settings: + +``` +Right click on the Project -> Properties -> C/C++ Build -> MCU Settings -> Select MIMXRT1060 -> Apply & Close +``` + +![MCU_Set](../../../../platform/nxp/rt/rt1060/doc/images/mcu-set.png) + +Sometimes when the MCU is selected it will not initialize all the memory regions +(usually the `BOARD_FLASH`, `BOARD_SDRAM` and `NCACHE_REGION`) so it is required +that this regions are added manually like in the image above. In addition to +that on the `BOARD_FLASH` line, in the driver tab: + +``` +click inside the tab and on the right side a button with three horizontal dots will appear +click on the button and an window will show +form the dropdown menu select the MIMXRT1060_SFDP_QSPI driver +``` + +![flash_driver](../../../../platform/nxp/rt/rt1060/doc/images/flash_driver.png) + +- Configure the toolchain editor: + +``` +Right click on the Project -> C/C++ Build-> Tool Chain Editor -> NXP MCU Tools -> Apply & Close +``` + +![toolchain](../../../../platform/nxp/rt/rt1060/doc/images/toolchain.JPG) + +- Create a debug configuration: + +``` +Right click on the Project -> Debug -> As->MCUXpresso IDE LinkServer (inc. CMSIS-DAP) probes -> OK -> Select elf file +``` + +![debug_0](../../../../platform/nxp/rt/rt1060/doc/images/debug0.png) + +![debug_1](../../../../platform/nxp/rt/rt1060/doc/images/debug1.png) + +- Set the _Connect script_ for the debug configuration to _RT1060_connect.scp_ + from the dropdown list: + +``` +Right click on the Project -> Debug As -> Debug configurations... -> LinkServer Debugger +``` + +![connect](../../../../platform/nxp/rt/rt1060/doc/images/gdbdebugger.png) + +- Set the _Initialization Commands_ to: + +``` +Right click on the Project -> Debug As -> Debug configurations... -> Startup + +set non-stop on +set pagination off +set mi-async +set remotetimeout 60000 +##target_extended_remote## +set mem inaccessible-by-default ${mem.access} +mon ondisconnect ${ondisconnect} +set arm force-mode thumb +${load} +``` + +![init](../../../../platform/nxp/rt/rt1060/doc/images/startup.png) + +- Set the _vector.catch_ value to _false_ inside the .launch file: + +``` +Right click on the Project -> Utilities -> Open Directory Browser here -> edit *.launch file: + + + +``` + +- Debug using the newly created configuration file: + + + +## Testing the example + +To know how to commission a device over BLE, follow the instructions from +[chip-tool's README.md 'Commission a device over +BLE'][readme_ble_commissioning_section]. + +[readme_ble_commissioning_section]: + ../../../../chip-tool/README.md#commission-a-device-over-ble + +To know how to commissioning a device over IP, follow the instructions from +[chip-tool's README.md 'Pair a device over +IP'][readme_pair_ip_commissioning_section] + +[readme_pair_ip_commissioning_section]: + ../../../../chip-tool/README.md#pair-a-device-over-ip + +#### Matter over wifi configuration : + +The "ble-wifi" pairing method can be used in order to commission the device. + +#### Matter over thread configuration : + +The "ble-thread" pairing method can be used in order to commission the device. + +#### Matter over wifi with openthread border router configuration : + +In order to create or join a Thread network on the Matter Border Router, the TBR +management cluster or the `otcli` commands from the matter CLI can be used. For +more information about using the TBR management cluster follow instructions from +['Using the TBR management cluster'](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-thread-border-router-management-cluster). +For more information about using the matter shell, follow instructions from +['Testing the all-clusters application with Matter CLI'](#testing-the-all-clusters-application-with-matter-cli-enabled). + +In this configuration, the device can be commissioned over Wi-Fi with the +'ble-wifi' or 'onnetwork' pairing method. + +### Testing the all-clusters application without Matter CLI: + +1. Prepare the board with the flashed `All-cluster application` (as shown + above). +2. The All-cluster example uses UART1 to print logs while running the server. To + view raw UART output, start a terminal emulator like PuTTY and connect to the + used COM port with the following UART settings: + + - Baud rate: 115200 + - 8 data bits + - 1 stop bit + - No parity + - No flow control + +3. Open a terminal connection on the board and watch the printed logs. + +4. On the client side, start sending commands using the chip-tool application as + it is described + [here](../../../../chip-tool/README.md#using-the-client-to-send-matter-commands). + +### Testing the all-clusters application with Matter CLI enabled: + +The Matter CLI can be enabled with the all-clusters application. + +For more information about the Matter CLI default commands, you can refer to the +dedicated [ReadMe](../../../../shell/README.md). + +The All-clusters application supports additional commands : + +``` +> help +[...] +mattercommissioning Open/close the commissioning window. Usage : mattercommissioning [on|off] +matterfactoryreset Perform a factory reset on the device +matterreset Reset the device +``` + +- `matterfactoryreset` command erases the file system completely (all Matter + settings are erased). +- `matterreset` enables the device to reboot without erasing the settings. + +Here are described steps to use the all-cluster-app with the Matter CLI enabled + +1. Prepare the board with the flashed `All-cluster application` (as shown + above). +2. The matter CLI is accessible in UART1. For that, start a terminal emulator + like PuTTY and connect to the used COM port with the following UART settings: + + - Baud rate: 115200 + - 8 data bits + - 1 stop bit + - No parity + - No flow control + +3. The All-cluster example uses UART2 to print logs while running the server. To + view raw UART output, a pin should be plugged to an USB to UART adapter + (connector J16 pin 7 in case of MIMXRT1060-EVK-B board or connector J22 pin 7 + in case of MIMXRT1060-EVK board), then start a terminal emulator like PuTTY + and connect to the used COM port with the following UART settings: + + - Baud rate: 115200 + - 8 data bits + - 1 stop bit + - No parity + - No flow control + +4. On the client side, start sending commands using the chip-tool application as + it is described + [here](../../../../chip-tool/README.md#using-the-client-to-send-matter-commands). + +For Matter with OpenThread Border Router support, the matter CLI can be used to +start/join the Thread network, using the following ot-cli commands. (Note that +setting channel, panid, and network key is not enough anymore because of an Open +Thread stack update. We first need to initialize a new dataset.) + +``` +> otcli dataset init new +Done +> otcli dataset +Active Timestamp: 1 +Channel: 25 +Channel Mask: 0x07fff800 +Ext PAN ID: 42af793f623aab54 +Mesh Local Prefix: fd6e:c358:7078:5a8d::/64 +Network Key: f824658f79d8ca033fbb85ecc3ca91cc +Network Name: OpenThread-b870 +PAN ID: 0xb870 +PSKc: f438a194a5e968cc43cc4b3a6f560ca4 +Security Policy: 672 onrc 0 +Done +> otcli dataset panid 0xabcd +Done +> otcli dataset channel 25 +Done +> otcli dataset commit active +Done +> otcli ifconfig up +Done +> otcli thread start +Done +> otcli state +leader +Done +``` + + + +## Thread Border Router overview + +To enable Thread Border Router support see the [build](README.md#building) +section. + +The complete Border Router guide is located +[here](../../../../../docs/platforms/nxp/nxp_otbr_guide.md). diff --git a/examples/all-clusters-app/nxp/rt/rt1060/args.gni b/examples/all-clusters-app/nxp/rt/rt1060/args.gni new file mode 100644 index 00000000000000..c2d91a5db7bae7 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1060/args.gni @@ -0,0 +1,19 @@ +# 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. + +import("//build_overrides/chip.gni") + +# SDK target definitions +nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain") +nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain") diff --git a/examples/all-clusters-app/nxp/rt/rt1060/build_overrides b/examples/all-clusters-app/nxp/rt/rt1060/build_overrides new file mode 120000 index 00000000000000..f10867042f4d19 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1060/build_overrides @@ -0,0 +1 @@ +../../../../build_overrides \ No newline at end of file diff --git a/examples/all-clusters-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h b/examples/all-clusters-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h new file mode 100644 index 00000000000000..dd73c6c9eaaedd --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2020 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + +/* + * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data. + */ +#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0 +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID + * + * 0xFFF1: Test vendor. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID + * + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005 + +#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +// Use a default pairing code if one hasn't been provisioned in flash. +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#endif + +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 +#endif + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS" + +/** + * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER + * + * Enables the use of a hard-coded default serial number if none + * is found in CHIP NV storage. + */ +#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN" + +#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */ + +/** + * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION + * + * The hardware version number assigned to device or product by the device vendor. This + * number is scoped to the device product id, and typically corresponds to a revision of the + * physical device, a change to its packaging, and/or a change to its marketing presentation. + * This value is generally *not* incremented for device software versions. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100 + +#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0" +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING + * + * A string identifying the software version running on the device. + * CHIP currently expects the software version to be in the format + * {MAJOR_VERSION}.0d{MINOR_VERSION} + */ +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors" +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App" +#endif + +#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION +//-> format_version = 1 +//-> vendor_id = 0xFFF1 +//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B, +// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, +// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029, +// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038, +// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, +// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, +// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ] +//-> device_type_id = 0x0016 +//-> certificate_id = "ZIG20142ZB330003-24" +//-> security_level = 0 +//-> security_information = 0 +//-> version_number = 0x2694 +//-> certification_type = 0 +//-> dac_origin_vendor_id is not present +//-> dac_origin_product_id is not present +#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \ + { \ + 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \ + 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \ + 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \ + 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \ + 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \ + 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \ + 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \ + 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \ + 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \ + 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \ + 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \ + 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \ + 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \ + 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \ + 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \ + 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \ + 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \ + 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \ + 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \ + 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \ + 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \ + 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \ + 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \ + 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \ + 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \ + 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \ + 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \ + 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \ + 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \ + } +#endif + +/** + * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC + * + * Enables synchronizing the device's real time clock with a remote CHIP Time service + * using the CHIP Time Sync protocol. + */ +// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1 + +/** + * CHIP_CONFIG_MAX_BINDINGS + * + * Maximum number of simultaneously active bindings per ChipExchangeManager + * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4 + * in the worst case. Keeping another 4 as buffer. + */ +#define CHIP_CONFIG_MAX_BINDINGS 6 + +/** + * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD + * + * Select the ability to offload event logs to any interested subscribers using WDM. + */ +#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1 + +/** + * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS + * + * Enable recording UTC timestamps. + */ +#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1 + +/** + * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE + * + * A size, in bytes, of the individual debug event logging buffer. + */ +#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512) + +/** + * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE + * + * For a development build, set the default importance of events to be logged as Debug. + * Since debug is the lowest importance level, this means all standard, critical, info and + * debug importance level vi events get logged. + */ +#if BUILD_RELEASE +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production +#else +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug +#endif // BUILD_RELEASE + +/* Increasing the retransmission interval of the MRP messages after subsequent failures */ +#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL +#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32) +#endif diff --git a/examples/all-clusters-app/nxp/rt/rt1060/third_party/connectedhomeip b/examples/all-clusters-app/nxp/rt/rt1060/third_party/connectedhomeip new file mode 120000 index 00000000000000..305f2077ffe860 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1060/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../.. \ No newline at end of file diff --git a/examples/all-clusters-app/nxp/rt/rt1170/.gn b/examples/all-clusters-app/nxp/rt/rt1170/.gn new file mode 100644 index 00000000000000..59dcfeb229ae70 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1170/.gn @@ -0,0 +1,35 @@ +# 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") +import("//build_overrides/chip.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 = { + target_cpu = "arm" + target_os = "freertos" + + import("//args.gni") + + # Import common example GN args + import("${chip_root}/examples/platform/nxp/common/gn/args.gni") + + # Import default platform configs + import("${chip_root}/src/platform/nxp/rt/rt1170/args.gni") +} diff --git a/examples/all-clusters-app/nxp/rt/rt1170/BUILD.gn b/examples/all-clusters-app/nxp/rt/rt1170/BUILD.gn new file mode 100644 index 00000000000000..724a6e89ec6558 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1170/BUILD.gn @@ -0,0 +1,241 @@ +# Copyright (c) 2021-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. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") +import("${chip_root}/src/platform/device.gni") + +#allows to get common NXP SDK gn options +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +# Allows to get various RT gn options +import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni") + +import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni") +import( + "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni") +import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni") + +assert(current_os == "freertos") +assert(target_os == "freertos") +assert(nxp_platform == "rt/rt1170") + +declare_args() { + # Allows to connect to a predefine Wi-Fi network at boot + wifi_auto_connect_at_boot = false + wifi_auto_connect_at_boot_ssid = "" + wifi_auto_connect_at_boot_password = "" + + # Setup discriminator as argument + setup_discriminator = 3840 +} + +example_platform_dir = + "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}" +common_example_dir = "${chip_root}/examples/platform/nxp/common" + +app_common_folder = "all-clusters-app/all-clusters-common" + +# Create here the SDK instance. +# Particular sources/defines/includes could be added/changed depending on the target application. +rt_sdk("sdk") { + defines = [] + + cflags = [] + public_deps = [] + public_configs = [] + sources = [] + include_dirs = [] + + # Indicate paths to default board files + include_dirs += [ "${example_platform_dir}/board/" ] + sources += [ "${example_platform_dir}/board/pin_mux.c" ] + sources += [ "${example_platform_dir}/board/hardware_init.c" ] + sources += [ "${example_platform_dir}/board/clock_config.c" ] + sources += [ "${example_platform_dir}/board/board.c" ] + sources += [ "${example_platform_dir}/board/peripherals.c" ] + sources += [ "${example_platform_dir}/board/sdmmc_config.c" ] + + # Indicate the path to CHIPProjectConfig.h + include_dirs += [ "include/config" ] + + # Indicate the default path to FreeRTOSConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ] + + # Indicate the default path to OpenThreadConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ] + + # For matter with BR feature, increase FreeRTOS heap size + if (chip_enable_wifi && chip_enable_openthread) { + defines += [ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)" ] + } + + defines += [ + "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}", + ] +} + +# Create the SDK driver instance. +# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template +rt1170_sdk_drivers("sdk_driver") { +} + +rt_executable("all_cluster_app") { + output_name = "chip-rt1170-all-cluster-example" + + defines = [ + "CONFIG_RENDEZVOUS_MODE=7", + "CONFIG_APP_FREERTOS_OS=1", + ] + + if (chip_enable_openthread) { + defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ] + } + + include_dirs = [ + "../../common/main/include", + "../../common/main", + "${chip_root}/examples/all-clusters-app/all-clusters-common/include", + "${chip_root}/examples/providers/", + ] + + sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", + "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp", + "../../common/main/AppTask.cpp", + "../../common/main/DeviceCallbacks.cpp", + "../../common/main/ZclCallbacks.cpp", + "../../common/main/include/AppEvent.h", + "../../common/main/include/AppTask.h", + "../../common/main/include/DeviceCallbacks.h", + "../../common/main/main.cpp", + ] + + # App common files + include_dirs += [ + "${common_example_dir}/icd/include", + "${common_example_dir}/matter_button/include", + "${common_example_dir}/matter_cli/include", + "${common_example_dir}/device_manager/include", + "${common_example_dir}/device_callbacks/include", + "${common_example_dir}/factory_data/include", + "${common_example_dir}/app_task/include", + ] + + sources += [ + "${common_example_dir}/app_task/source/AppTaskBase.cpp", + "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp", + "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp", + "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp", + "${common_example_dir}/factory_data/source/AppFactoryDataDefaultImpl.cpp", + "${common_example_dir}/icd/source/ICDUtil.cpp", + "${common_example_dir}/matter_button/source/ButtonRegistrationEmpty.cpp", + ] + + deps = [ "${chip_root}/examples/${app_common_folder}" ] + + sources += [ + "${chip_root}/examples/${app_common_folder}/src/bridged-actions-stub.cpp", + "${chip_root}/examples/${app_common_folder}/src/smco-stub.cpp", + "${chip_root}/examples/${app_common_folder}/src/static-supported-modes-manager.cpp", + ] + + if (chip_enable_matter_cli) { + defines += [ "ENABLE_CHIP_SHELL" ] + deps += [ + "${chip_root}/examples/shell/shell_common:shell_common", + "${chip_root}/src/lib/shell:shell", + ] + sources += [ + "${common_example_dir}/matter_cli/source/AppCLIBase.cpp", + "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp", + ] + } + + if (chip_enable_ota_requestor) { + include_dirs += [ "${common_example_dir}/ota_requestor/include" ] + sources += [ + "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp", + "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp", + ] + } + + if (wifi_auto_connect_at_boot) { + assert(wifi_auto_connect_at_boot_ssid != "" && + wifi_auto_connect_at_boot_password != "", + "WiFi SSID and password must be specified at build time!") + + defines += [ + "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1", + "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"", + "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"", + ] + + include_dirs += [ "${common_example_dir}/wifi_connect/include" ] + sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ] + } + + # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false + # The would add to the build a dedicated application assert implementation. + if (!sdk_fsl_assert_support) { + sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ] + } + + cflags = [ "-Wconversion" ] + + ldscript = + "${example_platform_dir}/app/ldscripts/MIMXRT1176xxxxx_cm7_flexspi_nor.ld" + + inputs = [ ldscript ] + + ldflags = [ + "-T" + rebase_path(ldscript, root_build_dir), + "-fno-common", + "-Wl,--defsym=__stack_size__=2048", + "-ffreestanding", + "-fno-builtin", + "-mapcs", + "-u qspiflash_config", + "-u image_vector_table", + "-u boot_data", + "-u dcd_data", + "-Wl,-print-memory-usage", + "-Wl,--no-warn-rwx-segments", + ] + + if (chip_enable_ota_requestor) { + if (no_mcuboot) { + # If "no_mcuboot" is set to true, the application will be linked at the base of the flash. + print( + "Warning : The OTA Requestor is enabled without MCUBoot. This will prevent the application from applying software updates.") + } else { + # we need to reserve enough space for the bootloader (MCUBoot) + # MCUBoot requires 0x40000 Bytes to be reserved at the base of the flash + # Consequently, some sections will need to be shifted + ldflags += [ "-Wl,--defsym=__m_mcuboot_size__=0x40000" ] + } + } + + output_dir = root_out_dir +} + +group("rt1170") { + deps = [ ":all_cluster_app" ] +} + +group("default") { + deps = [ ":rt1170" ] +} diff --git a/examples/all-clusters-app/nxp/rt/rt1170/README.md b/examples/all-clusters-app/nxp/rt/rt1170/README.md new file mode 100644 index 00000000000000..7ff91872a4b1b4 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1170/README.md @@ -0,0 +1,505 @@ +# CHIP RT1170 All-clusters Application + +The all-clusters example implements a server which can be accessed by a CHIP +controller and can accept basic cluster commands. + +The example is based on +[Project CHIP](https://github.com/project-chip/connectedhomeip) and the NXP +RT1170 SDK, and provides a prototype application that demonstrates device +commissioning and different cluster control. + +
+ +- [CHIP RT1170 All-clusters Application](#chip-rt1170-all-clusters-application) + - [Introduction](#introduction) + - [Configuration(s) supported](#configurations-supported) + - [Hardware requirements for RT1170 + IW612](#hardware-requirements-for-rt1170--iw612) + - [Hardware rework for SPI support on MIMXRT1170-EVK-B](#hardware-rework-for-spi-support-on-mimxrt1170-evk-b) + - [Board settings (Spinel over SPI, I2C, BLE over UART)](#board-settings-spinel-over-spi-i2c-ble-over-uart) + - [Building](#building) + - [Building with Matter over Wifi configuration on RT1170 + IW612](#building-with-matter-over-wifi-configuration-on-rt1170--iw612) + - [Building with Matter over Thread configuration on RT1170 + IW612](#building-with-matter-over-thread-configuration-on-rt1170--iw612) + - [Building with Matter over Wifi + OpenThread Border Router configuration on RT1170 + IW612](#building-with-matter-over-wifi--openthread-border-router-configuration-on-rt1170--iw612) + - [General information](#general-information) + - [Manufacturing data](#manufacturing-data) + - [Flashing and debugging](#flashing-and-debugging) + - [Testing the example](#testing-the-example) + - [Matter over wifi configuration :](#matter-over-wifi-configuration-) + - [Matter over thread configuration :](#matter-over-thread-configuration-) + - [Matter over wifi with openthread border router configuration :](#matter-over-wifi-with-openthread-border-router-configuration-) + - [Testing the all-clusters application without Matter CLI:](#testing-the-all-clusters-application-without-matter-cli) + - [Testing the all-clusters application with Matter CLI enabled:](#testing-the-all-clusters-application-with-matter-cli-enabled) + - [Thread Border Router overview](#thread-border-router-overview) +
+ +## Introduction + +![RT1170 EVK](../../../../platform/nxp/rt/rt1170/doc/images/IMX-RT1170-EVK-TOP.jpg) + +The RT1170 all-cluster application provides a working demonstration of the +RT1170 board integration, built using the Project CHIP codebase and the NXP +RT1170 SDK. + +The example supports: + +- Matter over Wi-Fi +- Matter over Openthread +- Matter over Wi-Fi with Openthread Border Router support + +The example targets the +[NXP MIMXRT1170-EVKB](https://www.nxp.com/part/MIMXRT1170-EVKB#/) board by +default. + +### Configuration(s) supported + +Here are listed configurations that allow to support Matter over Wi-Fi & Matter +over Thread on RT1170 : + +- RT1170 + IW612 (Wi-Fi + BLE + 15.4) + +### Hardware requirements for RT1170 + IW612 + +Host part: + +- 1 MIMXRT1170-EVK-B + +Transceiver part : + +- 1 + [2EL M2 A1 IW612 Secure Module](https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth-plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-2-plus-802-15-4-tri-radio-solution:IW612) + +![](../../../../platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg) + +- 1 + [Murata uSD to M2 adapter revC](https://www.murata.com/en-eu/products/connectivitymodule/wi-fi-bluetooth/overview/lineup/usd-m2-adapter-2we-2wf) + +![](../../../../platform/nxp/rt/rt1170/doc/images/murata_usd-M2_adapter.jpg) + +- Male to female Burg cables + +#### Hardware rework for SPI support on MIMXRT1170-EVK-B + +To support SPI on the MIMXRT1170-EVK-B board, it is required to remove 0Ω +resistors R404,R406,R2015. + +#### Board settings (Spinel over SPI, I2C, BLE over UART) + +Plug IW612 module to M.2 connector on Murata uSD to M2 adapter + +The Murata uSD-M2 adapter should be plugged to the RT1170 via SD-IO. + +The below tables explain pin settings (SPI settings) to connect the +MIMXRT1170-EVK-B (host) to a IW612 transceiver (rcp). + +- Murata uSD to M2 adapter connections description: + +![](../../../../platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_1.jpg) + +![](../../../../platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_2.jpg) + +- Jumpers positions on Murata uSD to M2 adapter: + + Use USB-C power supply | Jumper | Position| | :----: | :-----: | | J1 | 1-2 + | | J12 | 1-2 | | J13 | 1-2 | | J14 | 1-2 | | JP1.1 (back side)| ON | + +- Jumpers positions on MIMXRT1170-EVK-B: + + | Jumper | Position | + | :----: | :------: | + | `J56` | `2-3` | + +- I2C connection to program `IO_Expander` on the IW612 module + + | MIMXRT1170-EVK-B | uSD-M2 adapter | + | :----------------: | :------------: | + | `I2C_SDA (J10.18)` | `J5.2` | + | `I2C_SDL (J10.20)` | `J5.4` | + +- SPI connection between RT1170 and uSD-M2 adapter + + | MIMXRT1170-EVK-B | uSD-M2 adapter | + | :-----------------: | :------------: | + | `SPI_MOSI (J10.8)` | `J5.10` | + | `SPI_MISO (J10.10)` | `J9.7` | + | `SPI_CLK (J10.12)` | `J9.8` | + | `SPI_CS (J10.6)` | `J5.8` | + | `SPI_INT (J26.4)` | `J5.6` | + | `GND (J10.14)` | `J5.15` | + +- UART BLE and Reset connections between RT1170 and uSD-M2 adapter + + | MIMXRT1170-EVK-B | uSD-M2 adapter | + | :-----------------: | :------------: | + | `RESET (J26.2)` | `J9.3` | + | `UART_RXD (J25.13)` | `J9.1` | + | `UART_TXD (J25.15)` | `J9.2` | + | `UART_CTS (J25.9)` | `J8.4` | + | `UART_RTS (J25.11)` | `J8.3` | + | `GND (J26.1)` | `J7.6` | + +## Building + +In order to build the Project CHIP example, we recommend using a Linux +distribution. Supported Operating Systems are listed in +[BUILDING.md](../../../../../docs/guides/BUILDING.md). + +- Make sure that below prerequisites are correctly installed, as described in + [BUILDING.md](../../../../../docs/guides/BUILDING.md). + +``` +sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \ + libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \ + python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev +``` + +- Step 1: checkout NXP specific submodules only + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ scripts/checkout_submodules.py --shallow --platform nxp --recursive +``` + +- Step 2: activate local environment + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/activate.sh +``` + +If the script says the environment is out of date, you can update it by running +the following command: + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/bootstrap.sh +``` + +- Step 3: Init NXP SDK(s) + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ third_party/nxp/nxp_matter_support/scripts/update_nxp_sdk.py --platform common +``` + +Note: By default update_nxp_sdk.py will try to initialize all NXP SDKs. Arg "-- +help" could be used to view all available options. + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ cd examples/all-cluster-app/nxp/rt/rt1170/ +``` + +### Building with Matter over Wifi configuration on RT1170 + IW612 + +- Build the Wi-fi configuration for MIMXRT1170 board + IW612 transceiver (with + BLE for commissioning). + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1170$ gn gen --args="chip_enable_wifi=true iwx12_transceiver=true chip_config_network_layer_ble=true chip_enable_ble=true " out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1170$ ninja -C out/debug +``` + +### Building with Matter over Thread configuration on RT1170 + IW612 + +- Build the Openthread configuration for MIMXRT1170 board + IW612 transceiver + (with BLE for commissioning). + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-cluster/nxp/rt/rt1170$ gn gen --args="chip_enable_openthread=true iwx12_transceiver=true chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=true" out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-cluster/nxp/rt/rt1170/$ ninja -C out/debug +``` + +### Building with Matter over Wifi + OpenThread Border Router configuration on RT1170 + IW612 + +This configuration supports the Thread Border Router management cluster to +provision the Thread credentials. Enabling the Matter CLI in order to control +the Thread network on the Border Router is optional but recommended for other +features like the Thread credential sharing. + +Note that the Thread Border Router management cluster is only supported on the +thermostat application for now. + +- Build Matter with Border Router configuration with BLE commissioning + (ble-wifi) : + +``` +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt11170$ gn gen --args="chip_enable_wifi=true iwx12_transceiver=true chip_config_network_layer_ble=true chip_enable_ble=true chip_enable_openthread=true chip_enable_matter_cli=true" out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rt1170$ ninja -C out/debug +``` + +### General information + +The resulting output file can be found in +out/debug/chip-rt1170-all-cluster-example. + +Optional GN options that can be added when building an application: + +- To enable the + [secondary network commissioning interface](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-secondary-network-commissioning-interface), + the arguments `chip_enable_secondary_nwk_if=true` and + `chip_device_config_thread_network_endpoint_id=3` must be added to the _gn + gen_ command. Note that this is only supported when building the Matter over + Wifi + OpenThread Border Router configuration. Note that is only supported + on the on the thermostat application for now. +- To enable the + [matter CLI](#testing-the-all-clusters-application-with-matter-cli-enabled), + the argument `chip_enable_matter_cli=true` must be added to the _gn gen_ + command. +- To build the application in debug mode, the argument + `is_debug=true optimize_debug=false` must be added to the _gn gen_ command. +- To build with the option to have Matter certificates/keys pre-loaded in a + specific flash area the argument `chip_with_factory_data=1` must be added to + the _gn gen_ command. For more information, see + [Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md) +- To build the application with the OTA Requestor enabled, the arguments + `chip_enable_ota_requestor=true no_mcuboot=false` must be added to the _gn + gen_ command. More information about the OTA Requestor feature in + [OTA Requestor README](../../../../../docs/platforms/nxp/nxp_RTs_ota_software_update.md). + +## Manufacturing data + +See +[Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md) + +Other comments: + +The all cluster app demonstrates the usage of encrypted Matter manufacturing +data storage. Matter manufacturing data should be encrypted using an AES 128 +software key before flashing them to the device flash. + +## Flashing and debugging + +In order to flash the application we recommend using +[MCUXpresso IDE (version >= 11.5.0)](https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE). + +- Import the previously downloaded NXP SDK into MCUXpresso IDE. This can be + done by drag-and-dropping the SDK archive into MCUXpresso IDE "Installed + SDKs" tab; + ![Select SDK](../../../../platform/nxp/rt/rt1170/doc/images/select-sdk.png) +- Import the connectedhomeip repo in MCUXpresso IDE as Makefile Project. Use + _none_ as _Toolchain for Indexer Settings_: + +``` +File -> Import -> C/C++ -> Existing Code as Makefile Project +``` + +- Configure MCU Settings: + +``` +Right click on the Project -> Properties -> C/C++ Build -> MCU Settings -> Select MIMXRT1170 -> Apply & Close +``` + +![MCU_Sett](../../../../platform/nxp/rt/rt1170/doc/images/mcu-set.png) + +Sometimes when the MCU is selected it will not initialize all the memory regions +(usually the `BOARD_FLASH`, `BOARD_SDRAM` and `NCACHE_REGION`) so it is required +that this regions are added manually like in the image above. In addition to +that on the `BOARD_FLASH` line, in the driver tab: + +``` +click inside the tab and on the right side a button with three horizontal dots will appear +click on the button and an window will show +form the dropdown menu select the MIMXRT1170_SFDP_QSPI driver +``` + +![flash_driver](../../../../platform/nxp/rt/rt1170/doc/images/flash_driver.png) + +- Configure the toolchain editor: + +``` +Right click on the Project -> C/C++ Build-> Tool Chain Editor -> NXP MCU Tools -> Apply & Close +``` + +![toolchain](../../../../platform/nxp/rt/rt1170/doc/images/toolchain.JPG) + +- Create a debug configuration: + + MIMXRT1170-EVK-B board supports CMSIS-DAP debug protocol by default. It + should be switched to JLink. + + - download and install + [MCU-LINK_INSTALLER 2.263](https://www.nxp.com/webapp/Download?colCode=MCU-LINK_INSTALLER_2.263_LIN) + - connect jumper JP3 to get board in ISP mode when powered + - connect board and run installed MCU-LINK, follow steps to flash JLINK + firmware + - remove jumper JP3 and reboot board + +``` +Right click on the Project -> Debug -> As->SEGGER J-Link probes -> OK -> Select elf file +``` + +![debug_0](../../../../platform/nxp/rt/rt1170/doc/images/debug0.png) + +- Set the _Initialization Commands_ to: + +``` +Right click on the Project -> Debug As -> Debug configurations... -> Startup + +set non-stop on +set pagination off +set mi-async +set remotetimeout 60000 +##target_extended_remote## +set mem inaccessible-by-default ${mem.access} +mon ondisconnect ${ondisconnect} +set arm force-mode thumb +${load} +``` + +![init](../../../../platform/nxp/rt/rt1170/doc/images/startup.png) + +- Set the _vector.catch_ value to _false_ inside the .launch file: + +``` +Right click on the Project -> Utilities -> Open Directory Browser here -> edit .launch file: + + + +``` + +- Debug using the newly created configuration file: + +## Testing the example + +To know how to commission a device over BLE, follow the instructions from +[chip-tool's README.md 'Commission a device over +BLE'][readme_ble_commissioning_section]. + +[readme_ble_commissioning_section]: + ../../../../chip-tool/README.md#commission-a-device-over-ble + +To know how to commissioning a device over IP, follow the instructions from +[chip-tool's README.md 'Pair a device over +IP'][readme_pair_ip_commissioning_section] + +[readme_pair_ip_commissioning_section]: + ../../../../chip-tool/README.md#pair-a-device-over-ip + +#### Matter over wifi configuration : + +The "ble-wifi" pairing method can be used in order to commission the device. + +#### Matter over thread configuration : + +The "ble-thread" pairing method can be used in order to commission the device. + +#### Matter over wifi with openthread border router configuration : + +In order to create or join a Thread network on the Matter Border Router, the TBR +management cluster or the `otcli` commands from the matter CLI can be used. For +more information about using the TBR management cluster follow instructions from +['Using the TBR management cluster'](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-thread-border-router-management-cluster). +For more information about using the matter shell, follow instructions from +['Testing the all-clusters application with Matter CLI'](#testing-the-all-clusters-application-with-matter-cli-enabled). + +In this configuration, the device can be commissioned over Wi-Fi with the +'ble-wifi' pairing method. + +### Testing the all-clusters application without Matter CLI: + +1. Prepare the board with the flashed `All-cluster application` (as shown + above). +2. The All-cluster example uses UART1 to print logs while running the server. To + view raw UART output, start a terminal emulator like PuTTY and connect to the + used COM port with the following UART settings: + + - Baud rate: 115200 + - 8 data bits + - 1 stop bit + - No parity + - No flow control + +3. Open a terminal connection on the board and watch the printed logs. + +4. On the client side, start sending commands using the chip-tool application as + it is described + [here](../../../../chip-tool/README.md#using-the-client-to-send-matter-commands). + +### Testing the all-clusters application with Matter CLI enabled: + +Testing the all-clusters application with Matter CLI enabled: + +The Matter CLI can be enabled with the all-clusters application. + +For more information about the Matter CLI default commands, you can refer to the +dedicated [ReadMe](../../../../shell/README.md). + +The All-clusters application supports additional commands : + +``` +> help +[...] +mattercommissioning Open/close the commissioning window. Usage : mattercommissioning [on|off] +matterfactoryreset Perform a factory reset on the device +matterreset Reset the device +``` + +- `matterfactoryreset` command erases the file system completely (all Matter + settings are erased). +- `matterreset` enables the device to reboot without erasing the settings. + +Here are described steps to use the all-cluster-app with the Matter CLI enabled + +1. Prepare the board with the flashed `All-cluster application` (as shown + above). +2. The matter CLI is accessible in UART1. For that, start a terminal emulator + like PuTTY and connect to the used COM port with the following UART settings: + + - Baud rate: 115200 + - 8 data bits + - 1 stop bit + - No parity + - No flow control + +3. The All-cluster example uses UART2 to print logs while running the server. To + view raw UART output, a pin should be plugged to an USB to UART adapter + (connector J9 pin 4), then start a terminal emulator like PuTTY and connect + to the used COM port with the following UART settings: + + - Baud rate: 115200 + - 8 data bits + - 1 stop bit + - No parity + - No flow control + +4. On the client side, start sending commands using the chip-tool application as + it is described + [here](../../../../chip-tool/README.md#using-the-client-to-send-matter-commands). + +For Matter with OpenThread Border Router support, the matter CLI can be used to +start/join the Thread network, using the following ot-cli commands. (Note that +setting channel, panid, and network key is not enough anymore because of an Open +Thread stack update. We first need to initialize a new dataset.) + +``` +> otcli dataset init new +Done +> otcli dataset +Active Timestamp: 1 +Channel: 25 +Channel Mask: 0x07fff800 +Ext PAN ID: 42af793f623aab54 +Mesh Local Prefix: fd6e:c358:7078:5a8d::/64 +Network Key: f824658f79d8ca033fbb85ecc3ca91cc +Network Name: OpenThread-b870 +PAN ID: 0xb870 +PSKc: f438a194a5e968cc43cc4b3a6f560ca4 +Security Policy: 672 onrc 0 +Done +> otcli dataset panid 0xabcd +Done +> otcli dataset channel 25 +Done +> otcli dataset commit active +Done +> otcli ifconfig up +Done +> otcli thread start +Done +> otcli state +leader +Done +``` + +## Thread Border Router overview + +To enable Thread Border Router support see the [build](README.md#building) +section. + +The complete Border Router guide is located +[here](../../../../../docs/platforms/nxp/nxp_otbr_guide.md). diff --git a/examples/all-clusters-app/nxp/rt/rt1170/args.gni b/examples/all-clusters-app/nxp/rt/rt1170/args.gni new file mode 100644 index 00000000000000..c2d91a5db7bae7 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1170/args.gni @@ -0,0 +1,19 @@ +# 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. + +import("//build_overrides/chip.gni") + +# SDK target definitions +nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain") +nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain") diff --git a/examples/all-clusters-app/nxp/rt/rt1170/build_overrides b/examples/all-clusters-app/nxp/rt/rt1170/build_overrides new file mode 120000 index 00000000000000..f10867042f4d19 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1170/build_overrides @@ -0,0 +1 @@ +../../../../build_overrides \ No newline at end of file diff --git a/examples/all-clusters-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h b/examples/all-clusters-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h new file mode 100644 index 00000000000000..dd73c6c9eaaedd --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2020 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + +/* + * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data. + */ +#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0 +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID + * + * 0xFFF1: Test vendor. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID + * + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005 + +#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +// Use a default pairing code if one hasn't been provisioned in flash. +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#endif + +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 +#endif + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS" + +/** + * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER + * + * Enables the use of a hard-coded default serial number if none + * is found in CHIP NV storage. + */ +#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN" + +#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */ + +/** + * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION + * + * The hardware version number assigned to device or product by the device vendor. This + * number is scoped to the device product id, and typically corresponds to a revision of the + * physical device, a change to its packaging, and/or a change to its marketing presentation. + * This value is generally *not* incremented for device software versions. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100 + +#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0" +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING + * + * A string identifying the software version running on the device. + * CHIP currently expects the software version to be in the format + * {MAJOR_VERSION}.0d{MINOR_VERSION} + */ +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors" +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App" +#endif + +#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION +//-> format_version = 1 +//-> vendor_id = 0xFFF1 +//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B, +// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, +// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029, +// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038, +// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, +// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, +// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ] +//-> device_type_id = 0x0016 +//-> certificate_id = "ZIG20142ZB330003-24" +//-> security_level = 0 +//-> security_information = 0 +//-> version_number = 0x2694 +//-> certification_type = 0 +//-> dac_origin_vendor_id is not present +//-> dac_origin_product_id is not present +#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \ + { \ + 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \ + 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \ + 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \ + 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \ + 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \ + 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \ + 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \ + 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \ + 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \ + 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \ + 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \ + 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \ + 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \ + 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \ + 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \ + 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \ + 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \ + 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \ + 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \ + 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \ + 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \ + 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \ + 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \ + 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \ + 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \ + 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \ + 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \ + 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \ + 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \ + } +#endif + +/** + * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC + * + * Enables synchronizing the device's real time clock with a remote CHIP Time service + * using the CHIP Time Sync protocol. + */ +// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1 + +/** + * CHIP_CONFIG_MAX_BINDINGS + * + * Maximum number of simultaneously active bindings per ChipExchangeManager + * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4 + * in the worst case. Keeping another 4 as buffer. + */ +#define CHIP_CONFIG_MAX_BINDINGS 6 + +/** + * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD + * + * Select the ability to offload event logs to any interested subscribers using WDM. + */ +#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1 + +/** + * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS + * + * Enable recording UTC timestamps. + */ +#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1 + +/** + * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE + * + * A size, in bytes, of the individual debug event logging buffer. + */ +#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512) + +/** + * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE + * + * For a development build, set the default importance of events to be logged as Debug. + * Since debug is the lowest importance level, this means all standard, critical, info and + * debug importance level vi events get logged. + */ +#if BUILD_RELEASE +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production +#else +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug +#endif // BUILD_RELEASE + +/* Increasing the retransmission interval of the MRP messages after subsequent failures */ +#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL +#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32) +#endif diff --git a/examples/all-clusters-app/nxp/rt/rt1170/third_party/connectedhomeip b/examples/all-clusters-app/nxp/rt/rt1170/third_party/connectedhomeip new file mode 120000 index 00000000000000..305f2077ffe860 --- /dev/null +++ b/examples/all-clusters-app/nxp/rt/rt1170/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../.. \ No newline at end of file diff --git a/examples/all-clusters-app/nxp/rt/rw61x/README.md b/examples/all-clusters-app/nxp/rt/rw61x/README.md index df760e864e51d1..9b19031c00b44d 100644 --- a/examples/all-clusters-app/nxp/rt/rw61x/README.md +++ b/examples/all-clusters-app/nxp/rt/rw61x/README.md @@ -171,7 +171,7 @@ Optional GN options that can be added when building an application: - To build the application with the OTA Requestor enabled, the arguments `chip_enable_ota_requestor=true no_mcuboot=false` must be added to the _gn gen_ command. (More information about the OTA Requestor feature in - [OTA Requestor README](../../../../../docs/platforms/nxp/nxp_rw61x_ota_software_update.md) + [OTA Requestor README](../../../../../docs/platforms/nxp/nxp_RTs_ota_software_update.md) ## Manufacturing data @@ -407,7 +407,7 @@ Done Over-The-Air software updates are supported with the RW61x all-clusters example. The process to follow in order to perform a software update is described in the dedicated guide -['Matter Over-The-Air Software Update with NXP RW61x example applications'](../../../../../docs/platforms/nxp/nxp_rw61x_ota_software_update.md). +['Matter Over-The-Air Software Update with NXP RW61x example applications'](../../../../../docs/platforms/nxp/nxp_RTs_ota_software_update.md). diff --git a/examples/common/pigweed/protos/fabric_bridge_service.proto b/examples/common/pigweed/protos/fabric_bridge_service.proto index 4e01d4ec5c7e78..f1312f22ea0e75 100644 --- a/examples/common/pigweed/protos/fabric_bridge_service.proto +++ b/examples/common/pigweed/protos/fabric_bridge_service.proto @@ -34,9 +34,15 @@ message AdministratorCommissioningChanged { optional uint32 opener_vendor_id = 4; } +message ReachabilityChanged { + ScopedNode id = 1; + bool reachability = 2; +} + service FabricBridge { rpc AddSynchronizedDevice(SynchronizedDevice) returns (pw.protobuf.Empty){} rpc RemoveSynchronizedDevice(SynchronizedDevice) returns (pw.protobuf.Empty){} rpc ActiveChanged(KeepActiveChanged) returns (pw.protobuf.Empty){} rpc AdminCommissioningAttributeChanged(AdministratorCommissioningChanged) returns (pw.protobuf.Empty){} + rpc DeviceReachableChanged(ReachabilityChanged) returns (pw.protobuf.Empty){} } diff --git a/examples/common/pigweed/rpc_services/FabricBridge.h b/examples/common/pigweed/rpc_services/FabricBridge.h index 9bd520278c13b4..9a1dee017e3be6 100644 --- a/examples/common/pigweed/rpc_services/FabricBridge.h +++ b/examples/common/pigweed/rpc_services/FabricBridge.h @@ -54,6 +54,11 @@ class FabricBridge : public pw_rpc::nanopb::FabricBridge::Service { return pw::Status::Unimplemented(); } + + virtual pw::Status DeviceReachableChanged(const chip_rpc_ReachabilityChanged & request, pw_protobuf_Empty & response) + { + return pw::Status::Unimplemented(); + } }; } // namespace rpc diff --git a/examples/fabric-admin/BUILD.gn b/examples/fabric-admin/BUILD.gn index 38252cd30e7648..e95d6cb7c8f555 100644 --- a/examples/fabric-admin/BUILD.gn +++ b/examples/fabric-admin/BUILD.gn @@ -82,6 +82,8 @@ static_library("fabric-admin-utils") { "commands/pairing/ToTLVCert.cpp", "device_manager/BridgeSubscription.cpp", "device_manager/BridgeSubscription.h", + "device_manager/CommissionerControl.cpp", + "device_manager/CommissionerControl.h", "device_manager/DeviceManager.cpp", "device_manager/DeviceManager.h", "device_manager/DeviceSubscription.cpp", @@ -90,6 +92,8 @@ static_library("fabric-admin-utils") { "device_manager/DeviceSubscriptionManager.h", "device_manager/DeviceSynchronization.cpp", "device_manager/DeviceSynchronization.h", + "device_manager/FabricSyncGetter.cpp", + "device_manager/FabricSyncGetter.h", "device_manager/PairingManager.cpp", "device_manager/PairingManager.h", "device_manager/UniqueIdGetter.cpp", diff --git a/examples/fabric-admin/commands/clusters/ClusterCommand.h b/examples/fabric-admin/commands/clusters/ClusterCommand.h index edf2302219fa1c..7c66bebcecfbea 100644 --- a/examples/fabric-admin/commands/clusters/ClusterCommand.h +++ b/examples/fabric-admin/commands/clusters/ClusterCommand.h @@ -84,7 +84,6 @@ class ClusterCommand : public InteractionModelCommands, public ModelCommand, pub if (data != nullptr) { LogErrorOnFailure(RemoteDataModelLogger::LogCommandAsJSON(path, data)); - DeviceMgr().HandleCommandResponse(path, *data); } } diff --git a/examples/fabric-admin/commands/clusters/ReportCommand.cpp b/examples/fabric-admin/commands/clusters/ReportCommand.cpp index df6f329896036c..7f3decd78a83f0 100644 --- a/examples/fabric-admin/commands/clusters/ReportCommand.cpp +++ b/examples/fabric-admin/commands/clusters/ReportCommand.cpp @@ -45,8 +45,6 @@ void ReportCommand::OnAttributeData(const app::ConcreteDataAttributePath & path, } LogErrorOnFailure(RemoteDataModelLogger::LogAttributeAsJSON(path, data)); - - DeviceMgr().HandleAttributeData(path, *data); } void ReportCommand::OnEventData(const app::EventHeader & eventHeader, TLV::TLVReader * data, const app::StatusIB * status) diff --git a/examples/fabric-admin/commands/fabric-sync/Commands.h b/examples/fabric-admin/commands/fabric-sync/Commands.h index a6bf1c258f9475..47f7207922beae 100644 --- a/examples/fabric-admin/commands/fabric-sync/Commands.h +++ b/examples/fabric-admin/commands/fabric-sync/Commands.h @@ -31,7 +31,6 @@ void registerCommandsFabricSync(Commands & commands, CredentialIssuerCommands * make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), }; commands.RegisterCommandSet(clusterName, clusterCommands, "Commands for fabric synchronization."); diff --git a/examples/fabric-admin/commands/fabric-sync/FabricSyncCommand.cpp b/examples/fabric-admin/commands/fabric-sync/FabricSyncCommand.cpp index 879d28cd156956..f10db13e939acd 100644 --- a/examples/fabric-admin/commands/fabric-sync/FabricSyncCommand.cpp +++ b/examples/fabric-admin/commands/fabric-sync/FabricSyncCommand.cpp @@ -305,15 +305,3 @@ CHIP_ERROR FabricSyncDeviceCommand::RunCommand(EndpointId remoteId) return CHIP_NO_ERROR; } - -CHIP_ERROR FabricAutoSyncCommand::RunCommand(bool enableAutoSync) -{ - DeviceMgr().EnableAutoSync(enableAutoSync); - - // print to console - fprintf(stderr, "Auto Fabric Sync is %s.\n", enableAutoSync ? "enabled" : "disabled"); - fprintf(stderr, - "WARNING: The auto-sync command is currently under development and may contain bugs. Use it at your own risk.\n"); - - return CHIP_NO_ERROR; -} diff --git a/examples/fabric-admin/commands/fabric-sync/FabricSyncCommand.h b/examples/fabric-admin/commands/fabric-sync/FabricSyncCommand.h index 16ee40e5b40f3e..8d14529155cab4 100644 --- a/examples/fabric-admin/commands/fabric-sync/FabricSyncCommand.h +++ b/examples/fabric-admin/commands/fabric-sync/FabricSyncCommand.h @@ -136,22 +136,3 @@ class FabricSyncDeviceCommand : public CHIPCommand, public CommissioningWindowDe CHIP_ERROR RunCommand(chip::EndpointId remoteId); }; - -class FabricAutoSyncCommand : public CHIPCommand -{ -public: - FabricAutoSyncCommand(CredentialIssuerCommands * credIssuerCommands) : CHIPCommand("enable-auto-sync", credIssuerCommands) - { - AddArgument("state", 0, 1, &mEnableAutoSync, "Set to true to enable auto Fabric Sync, false to disable."); - } - - /////////// CHIPCommand Interface ///////// - CHIP_ERROR RunCommand() override { return RunCommand(mEnableAutoSync); } - - chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(1); } - -private: - bool mEnableAutoSync; - - CHIP_ERROR RunCommand(bool enableAutoSync); -}; diff --git a/examples/fabric-admin/device_manager/CommissionerControl.cpp b/examples/fabric-admin/device_manager/CommissionerControl.cpp new file mode 100644 index 00000000000000..b919ceb0683192 --- /dev/null +++ b/examples/fabric-admin/device_manager/CommissionerControl.cpp @@ -0,0 +1,141 @@ +#include "CommissionerControl.h" +#include + +using namespace ::chip; + +void CommissionerControl::Init(Controller::DeviceCommissioner & commissioner, NodeId nodeId, EndpointId endpointId) +{ + // Ensure that mCommissioner is not already initialized + VerifyOrDie(mCommissioner == nullptr); + + ChipLogProgress(NotSpecified, "Initilize CommissionerControl"); + mCommissioner = &commissioner; + mDestinationId = nodeId; + mEndpointId = endpointId; +} + +CHIP_ERROR CommissionerControl::RequestCommissioningApproval(uint64_t requestId, uint16_t vendorId, uint16_t productId, + Optional label) +{ + VerifyOrReturnError(mCommissioner != nullptr, CHIP_ERROR_INCORRECT_STATE); + + ChipLogProgress(NotSpecified, "Sending RequestCommissioningApproval to node " ChipLogFormatX64, + ChipLogValueX64(mDestinationId)); + + mRequestCommissioningApproval.requestID = requestId; + mRequestCommissioningApproval.vendorID = static_cast(vendorId); + mRequestCommissioningApproval.productID = productId; + + if (label.HasValue()) + { + VerifyOrReturnError(label.Value().size() <= kMaxDeviceLabelLength, CHIP_ERROR_BUFFER_TOO_SMALL); + memcpy(mLabelBuffer, label.Value().data(), label.Value().size()); + mRequestCommissioningApproval.label = Optional>(CharSpan(mLabelBuffer, label.Value().size())); + } + + mCommandType = CommandType::kRequestCommissioningApproval; + return mCommissioner->GetConnectedDevice(mDestinationId, &mOnDeviceConnectedCallback, &mOnDeviceConnectionFailureCallback); +} + +CHIP_ERROR CommissionerControl::CommissionNode(uint64_t requestId, uint16_t responseTimeoutSeconds) +{ + VerifyOrReturnError(mCommissioner != nullptr, CHIP_ERROR_INCORRECT_STATE); + + ChipLogProgress(NotSpecified, "Sending CommissionNode to node " ChipLogFormatX64, ChipLogValueX64(mDestinationId)); + + mCommissionNode.requestID = requestId; + mCommissionNode.responseTimeoutSeconds = responseTimeoutSeconds; + + mCommandType = CommandType::kCommissionNode; + return mCommissioner->GetConnectedDevice(mDestinationId, &mOnDeviceConnectedCallback, &mOnDeviceConnectionFailureCallback); +} + +void CommissionerControl::OnResponse(app::CommandSender * client, const app::ConcreteCommandPath & path, + const app::StatusIB & status, TLV::TLVReader * data) +{ + ChipLogProgress(NotSpecified, "CommissionerControl: OnResponse."); + + CHIP_ERROR error = status.ToChipError(); + if (CHIP_NO_ERROR != error) + { + ChipLogError(NotSpecified, "Response Failure: %s", ErrorStr(error)); + return; + } + + if (data != nullptr) + { + DeviceMgr().HandleCommandResponse(path, *data); + } +} + +void CommissionerControl::OnError(const app::CommandSender * client, CHIP_ERROR error) +{ + // Handle the error, then reset mCommandSender + ChipLogProgress(NotSpecified, "CommissionerControl: OnError: Error: %s", ErrorStr(error)); +} + +void CommissionerControl::OnDone(app::CommandSender * client) +{ + ChipLogProgress(NotSpecified, "CommissionerControl: OnDone."); + + switch (mCommandType) + { + case CommandType::kRequestCommissioningApproval: + ChipLogProgress(NotSpecified, "CommissionerControl: Command RequestCommissioningApproval has been successfully processed."); + break; + + case CommandType::kCommissionNode: + ChipLogProgress(NotSpecified, "CommissionerControl: Command CommissionNode has been successfully processed."); + break; + + default: + ChipLogError(NotSpecified, "CommissionerControl: Unknown or unhandled command type in OnDone."); + break; + } + + // Reset command type to undefined after processing is done + mCommandType = CommandType::kUndefined; + + // Ensure that mCommandSender is cleaned up after it is done + mCommandSender.reset(); +} + +CHIP_ERROR CommissionerControl::SendCommandForType(CommandType commandType, DeviceProxy * device) +{ + switch (commandType) + { + case CommandType::kRequestCommissioningApproval: + return SendCommand(device, mEndpointId, app::Clusters::CommissionerControl::Id, + app::Clusters::CommissionerControl::Commands::RequestCommissioningApproval::Id, + mRequestCommissioningApproval); + case CommandType::kCommissionNode: + return SendCommand(device, mEndpointId, app::Clusters::CommissionerControl::Id, + app::Clusters::CommissionerControl::Commands::CommissionNode::Id, mCommissionNode); + default: + return CHIP_ERROR_INVALID_ARGUMENT; + } +} + +void CommissionerControl::OnDeviceConnectedFn(void * context, Messaging::ExchangeManager & exchangeMgr, + const SessionHandle & sessionHandle) +{ + CommissionerControl * self = reinterpret_cast(context); + VerifyOrReturn(self != nullptr, ChipLogError(NotSpecified, "OnDeviceConnectedFn: context is null")); + + OperationalDeviceProxy device(&exchangeMgr, sessionHandle); + + CHIP_ERROR err = self->SendCommandForType(self->mCommandType, &device); + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "Failed to send CommissionerControl command."); + self->OnDone(nullptr); + } +} + +void CommissionerControl::OnDeviceConnectionFailureFn(void * context, const ScopedNodeId & peerId, CHIP_ERROR err) +{ + LogErrorOnFailure(err); + CommissionerControl * self = reinterpret_cast(context); + VerifyOrReturn(self != nullptr, ChipLogError(NotSpecified, "OnDeviceConnectedFn: context is null")); + self->OnDone(nullptr); +} diff --git a/examples/fabric-admin/device_manager/CommissionerControl.h b/examples/fabric-admin/device_manager/CommissionerControl.h new file mode 100644 index 00000000000000..1fad323e125c2a --- /dev/null +++ b/examples/fabric-admin/device_manager/CommissionerControl.h @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2024 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 + +/** + * @class CommissionerControl + * @brief This class handles sending CHIP commands related to commissioning, including sending + * commissioning approval requests and commissioning nodes. + * + * The class acts as a command sender and implements the `chip::app::CommandSender::Callback` interface + * to handle responses, errors, and completion events for the commands it sends. It relies on external + * CCTRL delegate and server mechanisms to manage the overall protocol and state transitions, including + * processing the CommissioningRequestResult and invoking CommissionNode. + */ +class CommissionerControl : public chip::app::CommandSender::Callback +{ +public: + CommissionerControl() : + mOnDeviceConnectedCallback(OnDeviceConnectedFn, this), mOnDeviceConnectionFailureCallback(OnDeviceConnectionFailureFn, this) + {} + + /** + * @brief Initializes the CommissionerControl with a DeviceCommissioner, NodeId, and EndpointId. + * + * @param commissioner The DeviceCommissioner to use for the commissioning process. + * @param nodeId The node ID of the remote fabric bridge. + * @param endpointId The endpoint on which to send CommissionerControl commands. + */ + void Init(chip::Controller::DeviceCommissioner & commissioner, chip::NodeId nodeId, chip::EndpointId endpointId); + + /** + * @brief Sends a RequestCommissioningApproval command to the device. + * + * @param requestId The unique request ID. + * @param vendorId The vendor ID of the device. + * @param productId The product ID of the device. + * @param label Optional label for the device. + * @return CHIP_ERROR CHIP_NO_ERROR on success, or an appropriate error code on failure. + */ + CHIP_ERROR RequestCommissioningApproval(uint64_t requestId, uint16_t vendorId, uint16_t productId, + chip::Optional label); + /** + * @brief Sends a CommissionNode command to the device. + * + * @param requestId The unique request ID. + * @param responseTimeoutSeconds Timeout for the response in seconds. + * @return CHIP_ERROR CHIP_NO_ERROR on success, or an appropriate error code on failure. + */ + CHIP_ERROR CommissionNode(uint64_t requestId, uint16_t responseTimeoutSeconds); + + /////////// CommandSender Callback Interface ///////// + virtual void OnResponse(chip::app::CommandSender * client, const chip::app::ConcreteCommandPath & path, + const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override; + + virtual void OnError(const chip::app::CommandSender * client, CHIP_ERROR error) override; + + virtual void OnDone(chip::app::CommandSender * client) override; + +private: + static constexpr uint16_t kMaxDeviceLabelLength = 64; + + enum class CommandType : uint8_t + { + kUndefined = 0, + kRequestCommissioningApproval = 1, + kCommissionNode = 2, + }; + + template + CHIP_ERROR SendCommand(chip::DeviceProxy * device, chip::EndpointId endpointId, chip::ClusterId clusterId, + chip::CommandId commandId, const T & value) + { + chip::app::CommandPathParams commandPath = { endpointId, clusterId, commandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + mCommandSender = std::make_unique(this, device->GetExchangeManager(), false, false, + device->GetSecureSession().Value()->AllowsLargePayload()); + + VerifyOrReturnError(mCommandSender != nullptr, CHIP_ERROR_NO_MEMORY); + + chip::app::CommandSender::AddRequestDataParameters addRequestDataParams(chip::NullOptional); + ReturnErrorOnFailure(mCommandSender->AddRequestData(commandPath, value, addRequestDataParams)); + ReturnErrorOnFailure(mCommandSender->SendCommandRequest(device->GetSecureSession().Value())); + + return CHIP_NO_ERROR; + } + + CHIP_ERROR SendCommandForType(CommandType commandType, chip::DeviceProxy * device); + + static void OnDeviceConnectedFn(void * context, chip::Messaging::ExchangeManager & exchangeMgr, + const chip::SessionHandle & sessionHandle); + static void OnDeviceConnectionFailureFn(void * context, const chip::ScopedNodeId & peerId, CHIP_ERROR error); + + // Private data members + chip::Controller::DeviceCommissioner * mCommissioner = nullptr; + std::unique_ptr mCommandSender; + chip::NodeId mDestinationId = chip::kUndefinedNodeId; + chip::EndpointId mEndpointId = chip::kRootEndpointId; + CommandType mCommandType = CommandType::kUndefined; + char mLabelBuffer[kMaxDeviceLabelLength]; + + chip::Callback::Callback mOnDeviceConnectedCallback; + chip::Callback::Callback mOnDeviceConnectionFailureCallback; + + chip::app::Clusters::CommissionerControl::Commands::RequestCommissioningApproval::Type mRequestCommissioningApproval; + chip::app::Clusters::CommissionerControl::Commands::CommissionNode::Type mCommissionNode; +}; diff --git a/examples/fabric-admin/device_manager/DeviceManager.cpp b/examples/fabric-admin/device_manager/DeviceManager.cpp index 2968bcf001e9bc..0d7d656a4e685e 100644 --- a/examples/fabric-admin/device_manager/DeviceManager.cpp +++ b/examples/fabric-admin/device_manager/DeviceManager.cpp @@ -26,7 +26,6 @@ #include using namespace chip; -using namespace chip::app::Clusters; namespace { @@ -67,6 +66,12 @@ void DeviceManager::UpdateLastUsedNodeId(NodeId nodeId) } } +void DeviceManager::SetRemoteBridgeNodeId(chip::NodeId nodeId) +{ + mRemoteBridgeNodeId = nodeId; + mCommissionerControl.Init(PairingManager::Instance().CurrentCommissioner(), mRemoteBridgeNodeId, kAggregatorEndpointId); +} + void DeviceManager::AddSyncedDevice(const Device & device) { mSyncedDevices.insert(device); @@ -212,20 +217,25 @@ void DeviceManager::ReadSupportedDeviceCategories() return; } - StringBuilder commandBuilder; + ChipLogProgress(NotSpecified, "Read SupportedDeviceCategories from the remote bridge."); - commandBuilder.Add("commissionercontrol read supported-device-categories "); - commandBuilder.AddFormat("%ld ", mRemoteBridgeNodeId); - commandBuilder.AddFormat("%d", kAggregatorEndpointId); + CHIP_ERROR error = mFabricSyncGetter.GetFabricSynchronizationData( + [this](TLV::TLVReader & data) { this->HandleReadSupportedDeviceCategories(data); }, + PairingManager::Instance().CurrentCommissioner(), this->GetRemoteBridgeNodeId(), kAggregatorEndpointId); - PushCommand(commandBuilder.c_str()); + if (error != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, + "Failed to read SupportedDeviceCategories from the remote bridge (NodeId: %lu). Error: %" CHIP_ERROR_FORMAT, + mRemoteBridgeNodeId, error.Format()); + } } void DeviceManager::HandleReadSupportedDeviceCategories(TLV::TLVReader & data) { ChipLogProgress(NotSpecified, "Attribute SupportedDeviceCategories detected."); - BitMask value; + BitMask value; CHIP_ERROR error = app::DataModel::Decode(data, value); if (error != CHIP_NO_ERROR) { @@ -233,7 +243,7 @@ void DeviceManager::HandleReadSupportedDeviceCategories(TLV::TLVReader & data) return; } - if (value.Has(CommissionerControl::SupportedDeviceCategoryBitmap::kFabricSynchronization)) + if (value.Has(app::Clusters::CommissionerControl::SupportedDeviceCategoryBitmap::kFabricSynchronization)) { ChipLogProgress(NotSpecified, "Remote Fabric-Bridge supports Fabric Synchronization, start reverse commissioning."); RequestCommissioningApproval(); @@ -249,19 +259,24 @@ void DeviceManager::RequestCommissioningApproval() uint16_t vendorId = static_cast(CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID); uint16_t productId = static_cast(CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID); - StringBuilder commandBuilder; - commandBuilder.Add("commissionercontrol request-commissioning-approval "); - commandBuilder.AddFormat("%lu %u %u %lu %d", requestId, vendorId, productId, mRemoteBridgeNodeId, kAggregatorEndpointId); + CHIP_ERROR error = mCommissionerControl.RequestCommissioningApproval(requestId, vendorId, productId, NullOptional); + + if (error != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, + "Failed to request commissioning-approval to the remote bridge (NodeId: %lu). Error: %" CHIP_ERROR_FORMAT, + mRemoteBridgeNodeId, error.Format()); + return; + } mRequestId = requestId; - PushCommand(commandBuilder.c_str()); } void DeviceManager::HandleCommissioningRequestResult(TLV::TLVReader & data) { ChipLogProgress(NotSpecified, "CommissioningRequestResult event received."); - CommissionerControl::Events::CommissioningRequestResult::DecodableType value; + app::Clusters::CommissionerControl::Events::CommissioningRequestResult::DecodableType value; CHIP_ERROR error = app::DataModel::Decode(data, value); if (error != CHIP_NO_ERROR) { @@ -346,14 +361,6 @@ void DeviceManager::HandleAttributePartsListUpdate(TLV::TLVReader & data) { // print to console fprintf(stderr, "A new device is added on Endpoint: %u\n", endpoint); - - if (mAutoSyncEnabled) - { - StringBuilder commandBuilder; - commandBuilder.Add("fabricsync sync-device "); - commandBuilder.AddFormat("%d", endpoint); - PushCommand(commandBuilder.c_str()); - } } // Process removed endpoints @@ -368,19 +375,6 @@ void DeviceManager::HandleAttributePartsListUpdate(TLV::TLVReader & data) ChipLogProgress(NotSpecified, "No device on Endpoint: %u", endpoint); continue; } - - if (mAutoSyncEnabled) - { - NodeId nodeId = device->GetNodeId(); - if (PairingManager::Instance().UnpairDevice(nodeId) != CHIP_NO_ERROR) - { - ChipLogError(NotSpecified, "Failed to unpair device " ChipLogFormatX64, ChipLogValueX64(nodeId)); - } - else - { - PairingManager::Instance().SetPairingDelegate(this); - } - } } } @@ -388,16 +382,20 @@ void DeviceManager::SendCommissionNodeRequest(uint64_t requestId, uint16_t respo { ChipLogProgress(NotSpecified, "Request the Commissioner Control Server to begin commissioning a previously approved request."); - StringBuilder commandBuilder; - commandBuilder.Add("commissionercontrol commission-node "); - commandBuilder.AddFormat("%lu %u %lu %d", requestId, responseTimeoutSeconds, mRemoteBridgeNodeId, kAggregatorEndpointId); + CHIP_ERROR error = mCommissionerControl.CommissionNode(requestId, responseTimeoutSeconds); - PushCommand(commandBuilder.c_str()); + if (error != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, + "Failed to send CommissionNode command to the remote bridge (NodeId: %lu). Error: %" CHIP_ERROR_FORMAT, + mRemoteBridgeNodeId, error.Format()); + return; + } } void DeviceManager::HandleReverseOpenCommissioningWindow(TLV::TLVReader & data) { - CommissionerControl::Commands::ReverseOpenCommissioningWindow::DecodableType value; + app::Clusters::CommissionerControl::Commands::ReverseOpenCommissioningWindow::DecodableType value; CHIP_ERROR error = app::DataModel::Decode(data, value); if (error != CHIP_NO_ERROR) @@ -421,14 +419,8 @@ void DeviceManager::HandleReverseOpenCommissioningWindow(TLV::TLVReader & data) void DeviceManager::HandleAttributeData(const app::ConcreteDataAttributePath & path, TLV::TLVReader & data) { - if (path.mClusterId == CommissionerControl::Id && - path.mAttributeId == CommissionerControl::Attributes::SupportedDeviceCategories::Id) - { - HandleReadSupportedDeviceCategories(data); - return; - } - - if (path.mClusterId == Descriptor::Id && path.mAttributeId == Descriptor::Attributes::PartsList::Id) + if (path.mClusterId == app::Clusters::Descriptor::Id && + path.mAttributeId == app::Clusters::Descriptor::Attributes::PartsList::Id) { HandleAttributePartsListUpdate(data); return; @@ -437,8 +429,8 @@ void DeviceManager::HandleAttributeData(const app::ConcreteDataAttributePath & p void DeviceManager::HandleEventData(const app::EventHeader & header, TLV::TLVReader & data) { - if (header.mPath.mClusterId == CommissionerControl::Id && - header.mPath.mEventId == CommissionerControl::Events::CommissioningRequestResult::Id) + if (header.mPath.mClusterId == app::Clusters::CommissionerControl::Id && + header.mPath.mEventId == app::Clusters::CommissionerControl::Events::CommissioningRequestResult::Id) { HandleCommissioningRequestResult(data); } @@ -448,8 +440,8 @@ void DeviceManager::HandleCommandResponse(const app::ConcreteCommandPath & path, { ChipLogProgress(NotSpecified, "Command Response received."); - if (path.mClusterId == CommissionerControl::Id && - path.mCommandId == CommissionerControl::Commands::ReverseOpenCommissioningWindow::Id) + if (path.mClusterId == app::Clusters::CommissionerControl::Id && + path.mCommandId == app::Clusters::CommissionerControl::Commands::ReverseOpenCommissioningWindow::Id) { HandleReverseOpenCommissioningWindow(data); } diff --git a/examples/fabric-admin/device_manager/DeviceManager.h b/examples/fabric-admin/device_manager/DeviceManager.h index 62d5ae045bb6af..d405bd358d5fdb 100644 --- a/examples/fabric-admin/device_manager/DeviceManager.h +++ b/examples/fabric-admin/device_manager/DeviceManager.h @@ -20,9 +20,10 @@ #include #include +#include +#include #include #include - #include constexpr uint32_t kDefaultSetupPinCode = 20202021; @@ -62,20 +63,16 @@ class DeviceManager : public PairingDelegate void UpdateLastUsedNodeId(chip::NodeId nodeId); - void SetRemoteBridgeNodeId(chip::NodeId nodeId) { mRemoteBridgeNodeId = nodeId; } + void SetRemoteBridgeNodeId(chip::NodeId nodeId); void SetLocalBridgePort(uint16_t port) { mLocalBridgePort = port; } void SetLocalBridgeSetupPinCode(uint32_t pinCode) { mLocalBridgeSetupPinCode = pinCode; } void SetLocalBridgeNodeId(chip::NodeId nodeId) { mLocalBridgeNodeId = nodeId; } - bool IsAutoSyncEnabled() const { return mAutoSyncEnabled; } - bool IsFabricSyncReady() const { return mRemoteBridgeNodeId != chip::kUndefinedNodeId; } bool IsLocalBridgeReady() const { return mLocalBridgeNodeId != chip::kUndefinedNodeId; } - void EnableAutoSync(bool state) { mAutoSyncEnabled = state; } - void AddSyncedDevice(const Device & device); void RemoveSyncedDevice(chip::NodeId nodeId); @@ -207,11 +204,12 @@ class DeviceManager : public PairingDelegate chip::NodeId mLocalBridgeNodeId = chip::kUndefinedNodeId; std::set mSyncedDevices; - bool mAutoSyncEnabled = false; - bool mInitialized = false; - uint64_t mRequestId = 0; + bool mInitialized = false; + uint64_t mRequestId = 0; BridgeSubscription mBridgeSubscriber; + CommissionerControl mCommissionerControl; + FabricSyncGetter mFabricSyncGetter; }; /** diff --git a/examples/fabric-admin/device_manager/DeviceSubscription.cpp b/examples/fabric-admin/device_manager/DeviceSubscription.cpp index a5625707a5363b..0da2bdddd4fbf5 100644 --- a/examples/fabric-admin/device_manager/DeviceSubscription.cpp +++ b/examples/fabric-admin/device_manager/DeviceSubscription.cpp @@ -120,7 +120,7 @@ void DeviceSubscription::OnDone(ReadClient * apReadClient) // After calling mOnDoneCallback we are indicating that `this` is deleted and we shouldn't do anything else with // DeviceSubscription. MoveToState(State::AwaitingDestruction); - mOnDoneCallback(mNodeId); + mOnDoneCallback(mScopedNodeId); } void DeviceSubscription::OnError(CHIP_ERROR error) @@ -135,7 +135,7 @@ void DeviceSubscription::OnDeviceConnected(Messaging::ExchangeManager & exchange // After calling mOnDoneCallback we are indicating that `this` is deleted and we shouldn't do anything else with // DeviceSubscription. MoveToState(State::AwaitingDestruction); - mOnDoneCallback(mNodeId); + mOnDoneCallback(mScopedNodeId); return; } VerifyOrDie(mState == State::Connecting); @@ -160,7 +160,7 @@ void DeviceSubscription::OnDeviceConnected(Messaging::ExchangeManager & exchange // After calling mOnDoneCallback we are indicating that `this` is deleted and we shouldn't do anything else with // DeviceSubscription. MoveToState(State::AwaitingDestruction); - mOnDoneCallback(mNodeId); + mOnDoneCallback(mScopedNodeId); return; } MoveToState(State::SubscriptionStarted); @@ -203,29 +203,31 @@ void DeviceSubscription::OnDeviceConnectionFailure(const ScopedNodeId & peerId, // After calling mOnDoneCallback we are indicating that `this` is deleted and we shouldn't do anything else with // DeviceSubscription. MoveToState(State::AwaitingDestruction); - mOnDoneCallback(mNodeId); + mOnDoneCallback(mScopedNodeId); } CHIP_ERROR DeviceSubscription::StartSubscription(OnDoneCallback onDoneCallback, Controller::DeviceController & controller, - NodeId nodeId) + ScopedNodeId scopedNodeId) { assertChipStackLockedByCurrentThread(); VerifyOrDie(mState == State::Idle); + VerifyOrReturnError(controller.GetFabricIndex() == scopedNodeId.GetFabricIndex(), CHIP_ERROR_INVALID_ARGUMENT); - mNodeId = nodeId; + mScopedNodeId = scopedNodeId; #if defined(PW_RPC_ENABLED) mCurrentAdministratorCommissioningAttributes = chip_rpc_AdministratorCommissioningChanged_init_default; mCurrentAdministratorCommissioningAttributes.has_id = true; - mCurrentAdministratorCommissioningAttributes.id.node_id = nodeId; - mCurrentAdministratorCommissioningAttributes.id.fabric_index = controller.GetFabricIndex(); + mCurrentAdministratorCommissioningAttributes.id.node_id = scopedNodeId.GetNodeId(); + mCurrentAdministratorCommissioningAttributes.id.fabric_index = scopedNodeId.GetFabricIndex(); mCurrentAdministratorCommissioningAttributes.window_status = static_cast(Clusters::AdministratorCommissioning::CommissioningWindowStatusEnum::kWindowNotOpen); #endif mOnDoneCallback = onDoneCallback; MoveToState(State::Connecting); - CHIP_ERROR err = controller.GetConnectedDevice(nodeId, &mOnDeviceConnectedCallback, &mOnDeviceConnectionFailureCallback); + CHIP_ERROR err = + controller.GetConnectedDevice(scopedNodeId.GetNodeId(), &mOnDeviceConnectedCallback, &mOnDeviceConnectionFailureCallback); if (err != CHIP_NO_ERROR) { MoveToState(State::Idle); @@ -258,5 +260,5 @@ void DeviceSubscription::StopSubscription() // After calling mOnDoneCallback we are indicating that `this` is deleted and we shouldn't do anything else with // DeviceSubscription. MoveToState(State::AwaitingDestruction); - mOnDoneCallback(mNodeId); + mOnDoneCallback(mScopedNodeId); } diff --git a/examples/fabric-admin/device_manager/DeviceSubscription.h b/examples/fabric-admin/device_manager/DeviceSubscription.h index 5d8403777364b7..8db31d6e9037fc 100644 --- a/examples/fabric-admin/device_manager/DeviceSubscription.h +++ b/examples/fabric-admin/device_manager/DeviceSubscription.h @@ -39,12 +39,12 @@ class DeviceSubscriptionManager; class DeviceSubscription : public chip::app::ReadClient::Callback { public: - using OnDoneCallback = std::function; + using OnDoneCallback = std::function; DeviceSubscription(); CHIP_ERROR StartSubscription(OnDoneCallback onDoneCallback, chip::Controller::DeviceController & controller, - chip::NodeId nodeId); + chip::ScopedNodeId nodeId); /// This will trigger stopping the subscription. Once subscription is stopped the OnDoneCallback /// provided in StartSubscription will be called to indicate that subscription have been terminated. @@ -80,7 +80,7 @@ class DeviceSubscription : public chip::app::ReadClient::Callback void MoveToState(const State aTargetState); const char * GetStateStr() const; - chip::NodeId mNodeId = chip::kUndefinedNodeId; + chip::ScopedNodeId mScopedNodeId; OnDoneCallback mOnDoneCallback; std::unique_ptr mClient; diff --git a/examples/fabric-admin/device_manager/DeviceSubscriptionManager.cpp b/examples/fabric-admin/device_manager/DeviceSubscriptionManager.cpp index 8dd43f28751591..0410c162a8e43a 100644 --- a/examples/fabric-admin/device_manager/DeviceSubscriptionManager.cpp +++ b/examples/fabric-admin/device_manager/DeviceSubscriptionManager.cpp @@ -38,25 +38,25 @@ DeviceSubscriptionManager & DeviceSubscriptionManager::Instance() return instance; } -CHIP_ERROR DeviceSubscriptionManager::StartSubscription(Controller::DeviceController & controller, NodeId nodeId) +CHIP_ERROR DeviceSubscriptionManager::StartSubscription(Controller::DeviceController & controller, ScopedNodeId scopedNodeId) { assertChipStackLockedByCurrentThread(); - auto it = mDeviceSubscriptionMap.find(nodeId); + auto it = mDeviceSubscriptionMap.find(scopedNodeId); VerifyOrReturnError((it == mDeviceSubscriptionMap.end()), CHIP_ERROR_INCORRECT_STATE); auto deviceSubscription = std::make_unique(); VerifyOrReturnError(deviceSubscription, CHIP_ERROR_NO_MEMORY); ReturnErrorOnFailure(deviceSubscription->StartSubscription( - [this](NodeId aNodeId) { this->DeviceSubscriptionTerminated(aNodeId); }, controller, nodeId)); + [this](ScopedNodeId aNodeId) { this->DeviceSubscriptionTerminated(aNodeId); }, controller, scopedNodeId)); - mDeviceSubscriptionMap[nodeId] = std::move(deviceSubscription); + mDeviceSubscriptionMap[scopedNodeId] = std::move(deviceSubscription); return CHIP_NO_ERROR; } -CHIP_ERROR DeviceSubscriptionManager::RemoveSubscription(NodeId nodeId) +CHIP_ERROR DeviceSubscriptionManager::RemoveSubscription(ScopedNodeId scopedNodeId) { assertChipStackLockedByCurrentThread(); - auto it = mDeviceSubscriptionMap.find(nodeId); + auto it = mDeviceSubscriptionMap.find(scopedNodeId); VerifyOrReturnError((it != mDeviceSubscriptionMap.end()), CHIP_ERROR_NOT_FOUND); // We cannot safely erase the DeviceSubscription from mDeviceSubscriptionMap. // After calling StopSubscription we expect DeviceSubscription to eventually @@ -67,14 +67,14 @@ CHIP_ERROR DeviceSubscriptionManager::RemoveSubscription(NodeId nodeId) return CHIP_NO_ERROR; } -void DeviceSubscriptionManager::DeviceSubscriptionTerminated(NodeId nodeId) +void DeviceSubscriptionManager::DeviceSubscriptionTerminated(ScopedNodeId scopedNodeId) { assertChipStackLockedByCurrentThread(); - auto it = mDeviceSubscriptionMap.find(nodeId); + auto it = mDeviceSubscriptionMap.find(scopedNodeId); // DeviceSubscriptionTerminated is a private method that is expected to only // be called by DeviceSubscription when it is terminal and is ready to be // cleaned up and removed. If it is not mapped that means something has gone // really wrong and there is likely a memory leak somewhere. VerifyOrDie(it != mDeviceSubscriptionMap.end()); - mDeviceSubscriptionMap.erase(nodeId); + mDeviceSubscriptionMap.erase(scopedNodeId); } diff --git a/examples/fabric-admin/device_manager/DeviceSubscriptionManager.h b/examples/fabric-admin/device_manager/DeviceSubscriptionManager.h index 5f4e1158634a29..1b5c45fd05ae16 100644 --- a/examples/fabric-admin/device_manager/DeviceSubscriptionManager.h +++ b/examples/fabric-admin/device_manager/DeviceSubscriptionManager.h @@ -32,12 +32,23 @@ class DeviceSubscriptionManager /// Usually called after we have added a synchronized device to fabric-bridge to monitor /// for any changes that need to be propagated to fabric-bridge. - CHIP_ERROR StartSubscription(chip::Controller::DeviceController & controller, chip::NodeId nodeId); + CHIP_ERROR StartSubscription(chip::Controller::DeviceController & controller, chip::ScopedNodeId scopedNodeId); - CHIP_ERROR RemoveSubscription(chip::NodeId nodeId); + CHIP_ERROR RemoveSubscription(chip::ScopedNodeId scopedNodeId); private: - void DeviceSubscriptionTerminated(chip::NodeId nodeId); - - std::unordered_map> mDeviceSubscriptionMap; + struct ScopedNodeIdHasher + { + std::size_t operator()(const chip::ScopedNodeId & scopedNodeId) const + { + std::size_t h1 = std::hash{}(scopedNodeId.GetFabricIndex()); + std::size_t h2 = std::hash{}(scopedNodeId.GetNodeId()); + // Bitshifting h2 reduces collisions when fabricIndex == nodeId. + return h1 ^ (h2 << 1); + } + }; + + void DeviceSubscriptionTerminated(chip::ScopedNodeId scopedNodeId); + + std::unordered_map, ScopedNodeIdHasher> mDeviceSubscriptionMap; }; diff --git a/examples/fabric-admin/device_manager/DeviceSynchronization.cpp b/examples/fabric-admin/device_manager/DeviceSynchronization.cpp index ec350239d7be38..6c2284018e0d19 100644 --- a/examples/fabric-admin/device_manager/DeviceSynchronization.cpp +++ b/examples/fabric-admin/device_manager/DeviceSynchronization.cpp @@ -239,23 +239,23 @@ void DeviceSynchronizer::GetUniqueId() auto remoteBridgeNodeId = DeviceMgr().GetRemoteBridgeNodeId(); EndpointId remoteEndpointIdOfInterest = device->GetEndpointId(); - ChipLogDetail(NotSpecified, "Attempting to get UniqueId from remote Fabric Sync Aggregator") CHIP_ERROR err = - mUniqueIdGetter.GetUniqueId( - [this](std::optional aUniqueId) { - if (aUniqueId.has_value()) - { + ChipLogDetail(NotSpecified, "Attempting to get UniqueId from remote Fabric Sync Aggregator"); + CHIP_ERROR err = mUniqueIdGetter.GetUniqueId( + [this](std::optional aUniqueId) { + if (aUniqueId.has_value()) + { #if defined(PW_RPC_ENABLED) - this->mCurrentDeviceData.has_unique_id = true; - memcpy(this->mCurrentDeviceData.unique_id, aUniqueId.value().data(), aUniqueId.value().size()); + this->mCurrentDeviceData.has_unique_id = true; + memcpy(this->mCurrentDeviceData.unique_id, aUniqueId.value().data(), aUniqueId.value().size()); #endif - } - else - { - ChipLogError(NotSpecified, "We expected to get UniqueId from remote Fabric Sync Aggregator, but failed"); - } - this->SynchronizationCompleteAddDevice(); - }, - *mController, remoteBridgeNodeId, remoteEndpointIdOfInterest); + } + else + { + ChipLogError(NotSpecified, "We expected to get UniqueId from remote Fabric Sync Aggregator, but failed"); + } + this->SynchronizationCompleteAddDevice(); + }, + *mController, remoteBridgeNodeId, remoteEndpointIdOfInterest); if (err == CHIP_NO_ERROR) { @@ -278,7 +278,8 @@ void DeviceSynchronizer::SynchronizationCompleteAddDevice() { VerifyOrDie(mController); // TODO(#35333) Figure out how we should recover in this circumstance. - CHIP_ERROR err = DeviceSubscriptionManager::Instance().StartSubscription(*mController, mNodeId); + ScopedNodeId scopedNodeId(mNodeId, mController->GetFabricIndex()); + CHIP_ERROR err = DeviceSubscriptionManager::Instance().StartSubscription(*mController, scopedNodeId); if (err != CHIP_NO_ERROR) { ChipLogError(NotSpecified, "Failed start subscription to NodeId:" ChipLogFormatX64, ChipLogValueX64(mNodeId)); diff --git a/examples/fabric-admin/device_manager/FabricSyncGetter.cpp b/examples/fabric-admin/device_manager/FabricSyncGetter.cpp new file mode 100644 index 00000000000000..5201048c3faea6 --- /dev/null +++ b/examples/fabric-admin/device_manager/FabricSyncGetter.cpp @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2024 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 "FabricSyncGetter.h" + +using namespace ::chip; +using namespace ::chip::app; +using chip::app::ReadClient; + +namespace { + +void OnDeviceConnectedWrapper(void * context, Messaging::ExchangeManager & exchangeMgr, const SessionHandle & sessionHandle) +{ + reinterpret_cast(context)->OnDeviceConnected(exchangeMgr, sessionHandle); +} + +void OnDeviceConnectionFailureWrapper(void * context, const ScopedNodeId & peerId, CHIP_ERROR error) +{ + reinterpret_cast(context)->OnDeviceConnectionFailure(peerId, error); +} + +} // namespace + +FabricSyncGetter::FabricSyncGetter() : + mOnDeviceConnectedCallback(OnDeviceConnectedWrapper, this), + mOnDeviceConnectionFailureCallback(OnDeviceConnectionFailureWrapper, this) +{} + +CHIP_ERROR FabricSyncGetter::GetFabricSynchronizationData(OnDoneCallback onDoneCallback, Controller::DeviceController & controller, + NodeId nodeId, EndpointId endpointId) +{ + assertChipStackLockedByCurrentThread(); + + mEndpointId = endpointId; + mOnDoneCallback = onDoneCallback; + + CHIP_ERROR err = controller.GetConnectedDevice(nodeId, &mOnDeviceConnectedCallback, &mOnDeviceConnectionFailureCallback); + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "Failed to connect to remote fabric bridge %" CHIP_ERROR_FORMAT, err.Format()); + } + return err; +} + +void FabricSyncGetter::OnAttributeData(const ConcreteDataAttributePath & path, TLV::TLVReader * data, const StatusIB & status) +{ + VerifyOrDie(path.mClusterId == Clusters::CommissionerControl::Id); + + if (!status.IsSuccess()) + { + ChipLogError(NotSpecified, "Response Failure: %" CHIP_ERROR_FORMAT, status.ToChipError().Format()); + return; + } + + switch (path.mAttributeId) + { + case Clusters::CommissionerControl::Attributes::SupportedDeviceCategories::Id: { + mOnDoneCallback(*data); + break; + } + default: + break; + } +} + +void FabricSyncGetter::OnError(CHIP_ERROR error) +{ + ChipLogProgress(NotSpecified, "Error Getting SupportedDeviceCategories: %" CHIP_ERROR_FORMAT, error.Format()); +} + +void FabricSyncGetter::OnDone(ReadClient * apReadClient) +{ + ChipLogProgress(NotSpecified, "Reading SupportedDeviceCategories is done."); +} + +void FabricSyncGetter::OnDeviceConnected(Messaging::ExchangeManager & exchangeMgr, const SessionHandle & sessionHandle) +{ + mClient = std::make_unique(app::InteractionModelEngine::GetInstance(), &exchangeMgr, *this /* callback */, + ReadClient::InteractionType::Read); + VerifyOrDie(mClient); + + AttributePathParams readPaths[1]; + readPaths[0] = AttributePathParams(mEndpointId, Clusters::CommissionerControl::Id, + Clusters::CommissionerControl::Attributes::SupportedDeviceCategories::Id); + + ReadPrepareParams readParams(sessionHandle); + + readParams.mpAttributePathParamsList = readPaths; + readParams.mAttributePathParamsListSize = 1; + + CHIP_ERROR err = mClient->SendRequest(readParams); + + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "Failed to read SupportedDeviceCategories from the bridged device."); + OnDone(nullptr); + return; + } +} + +void FabricSyncGetter::OnDeviceConnectionFailure(const ScopedNodeId & peerId, CHIP_ERROR error) +{ + ChipLogError(NotSpecified, "FabricSyncGetter failed to connect to " ChipLogFormatX64, ChipLogValueX64(peerId.GetNodeId())); + + OnDone(nullptr); +} diff --git a/examples/fabric-admin/device_manager/FabricSyncGetter.h b/examples/fabric-admin/device_manager/FabricSyncGetter.h new file mode 100644 index 00000000000000..d6d3a5bce8c9f5 --- /dev/null +++ b/examples/fabric-admin/device_manager/FabricSyncGetter.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2024 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 + +/** + * @brief Class used to get FabricSynchronization from SupportedDeviceCategories attribute of Commissioner Control Cluster. + * + * Functionality: + * - Establishes a CASE session to communicate with the remote bridge. + * - Retrieves the attribute data from the endpoint which host Aggregator. + * - Provides callbacks for success, error, and completion when retrieving data. + */ +class FabricSyncGetter : public chip::app::ReadClient::Callback +{ +public: + using OnDoneCallback = std::function; + + FabricSyncGetter(); + + /** + * @brief Initiates the process of retrieving fabric synchronization data from the target device. + * + * @param onDoneCallback A callback function to be invoked when the data retrieval is complete. + * @param controller The device controller used to establish a session with the target device. + * @param nodeId The Node ID of the target device. + * @param endpointId The Endpoint ID from which to retrieve the fabric synchronization data. + * @return CHIP_ERROR Returns an error if the process fails, CHIP_NO_ERROR on success. + */ + CHIP_ERROR GetFabricSynchronizationData(OnDoneCallback onDoneCallback, chip::Controller::DeviceController & controller, + chip::NodeId nodeId, chip::EndpointId endpointId); + + /////////////////////////////////////////////////////////////// + // ReadClient::Callback implementation + /////////////////////////////////////////////////////////////// + void OnAttributeData(const chip::app::ConcreteDataAttributePath & path, chip::TLV::TLVReader * data, + const chip::app::StatusIB & status) override; + void OnError(CHIP_ERROR error) override; + void OnDone(chip::app::ReadClient * apReadClient) override; + + /////////////////////////////////////////////////////////////// + // callbacks for CASE session establishment + /////////////////////////////////////////////////////////////// + void OnDeviceConnected(chip::Messaging::ExchangeManager & exchangeMgr, const chip::SessionHandle & sessionHandle); + void OnDeviceConnectionFailure(const chip::ScopedNodeId & peerId, CHIP_ERROR error); + +private: + std::unique_ptr mClient; + + OnDoneCallback mOnDoneCallback; + chip::EndpointId mEndpointId; + chip::Callback::Callback mOnDeviceConnectedCallback; + chip::Callback::Callback mOnDeviceConnectionFailureCallback; +}; diff --git a/examples/fabric-admin/device_manager/UniqueIdGetter.cpp b/examples/fabric-admin/device_manager/UniqueIdGetter.cpp index 49ce9b663c27af..3a6d6af69d032b 100644 --- a/examples/fabric-admin/device_manager/UniqueIdGetter.cpp +++ b/examples/fabric-admin/device_manager/UniqueIdGetter.cpp @@ -95,11 +95,6 @@ void UniqueIdGetter::OnAttributeData(const ConcreteDataAttributePath & path, TLV } } -void UniqueIdGetter::OnReportEnd() -{ - // We will call mOnDoneCallback in OnDone. -} - void UniqueIdGetter::OnError(CHIP_ERROR error) { ChipLogProgress(NotSpecified, "Error Getting UID: %" CHIP_ERROR_FORMAT, error.Format()); diff --git a/examples/fabric-admin/device_manager/UniqueIdGetter.h b/examples/fabric-admin/device_manager/UniqueIdGetter.h index 6680adf5bdfc97..86d5d82f656bd5 100644 --- a/examples/fabric-admin/device_manager/UniqueIdGetter.h +++ b/examples/fabric-admin/device_manager/UniqueIdGetter.h @@ -51,7 +51,6 @@ class UniqueIdGetter : public chip::app::ReadClient::Callback /////////////////////////////////////////////////////////////// void OnAttributeData(const chip::app::ConcreteDataAttributePath & path, chip::TLV::TLVReader * data, const chip::app::StatusIB & status) override; - void OnReportEnd() override; void OnError(CHIP_ERROR error) override; void OnDone(chip::app::ReadClient * apReadClient) override; diff --git a/examples/fabric-bridge-app/fabric-bridge-common/include/BridgedDevice.h b/examples/fabric-bridge-app/fabric-bridge-common/include/BridgedDevice.h index 526ecfff2157f2..d2c5a64b9ef4b7 100644 --- a/examples/fabric-bridge-app/fabric-bridge-common/include/BridgedDevice.h +++ b/examples/fabric-bridge-app/fabric-bridge-common/include/BridgedDevice.h @@ -54,6 +54,9 @@ class BridgedDevice [[nodiscard]] bool IsReachable() const { return mReachable; } void SetReachable(bool reachable); + // Reachability attribute changed and requires marking attribute as dirty and sending + // event. + void ReachableChanged(bool reachable); void LogActiveChangeEvent(uint32_t promisedActiveDurationMs); diff --git a/examples/fabric-bridge-app/fabric-bridge-common/src/BridgedDevice.cpp b/examples/fabric-bridge-app/fabric-bridge-common/src/BridgedDevice.cpp index 7d588112997570..f462d1cce6efd5 100644 --- a/examples/fabric-bridge-app/fabric-bridge-common/src/BridgedDevice.cpp +++ b/examples/fabric-bridge-app/fabric-bridge-common/src/BridgedDevice.cpp @@ -65,6 +65,29 @@ void BridgedDevice::SetReachable(bool reachable) } } +void BridgedDevice::ReachableChanged(bool reachable) +{ + EndpointId endpointId = mEndpointId; + bool reachableChanged = (mReachable != reachable); + if (reachableChanged) + { + SetReachable(reachable); + DeviceLayer::SystemLayer().ScheduleLambda([endpointId]() { + MatterReportingAttributeChangeCallback(endpointId, app::Clusters::BridgedDeviceBasicInformation::Id, + app::Clusters::BridgedDeviceBasicInformation::Attributes::Reachable::Id); + + app::Clusters::BridgedDeviceBasicInformation::Events::ReachableChanged::Type event{}; + EventNumber eventNumber = 0; + + CHIP_ERROR err = app::LogEvent(event, endpointId, eventNumber); + if (err != CHIP_NO_ERROR) + { + ChipLogProgress(NotSpecified, "LogEvent for ActiveChanged failed %s", err.AsString()); + } + }); + } +} + void BridgedDevice::SetAdminCommissioningAttributes(const AdminCommissioningAttributes & aAdminCommissioningAttributes) { EndpointId endpointId = mEndpointId; diff --git a/examples/fabric-bridge-app/linux/RpcServer.cpp b/examples/fabric-bridge-app/linux/RpcServer.cpp index 8271cc3c49f041..5fea43c6ef2953 100644 --- a/examples/fabric-bridge-app/linux/RpcServer.cpp +++ b/examples/fabric-bridge-app/linux/RpcServer.cpp @@ -48,6 +48,7 @@ class FabricBridge final : public chip::rpc::FabricBridge pw::Status ActiveChanged(const chip_rpc_KeepActiveChanged & request, pw_protobuf_Empty & response) override; pw::Status AdminCommissioningAttributeChanged(const chip_rpc_AdministratorCommissioningChanged & request, pw_protobuf_Empty & response) override; + pw::Status DeviceReachableChanged(const chip_rpc_ReachabilityChanged & request, pw_protobuf_Empty & response) override; }; pw::Status FabricBridge::AddSynchronizedDevice(const chip_rpc_SynchronizedDevice & request, pw_protobuf_Empty & response) @@ -210,6 +211,26 @@ pw::Status FabricBridge::AdminCommissioningAttributeChanged(const chip_rpc_Admin return pw::OkStatus(); } +pw::Status FabricBridge::DeviceReachableChanged(const chip_rpc_ReachabilityChanged & request, pw_protobuf_Empty & response) +{ + VerifyOrReturnValue(request.has_id, pw::Status::InvalidArgument()); + ScopedNodeId scopedNodeId(request.id.node_id, request.id.fabric_index); + ChipLogProgress(NotSpecified, "Received device reachable changed: Id=[%d:" ChipLogFormatX64 "]", scopedNodeId.GetFabricIndex(), + ChipLogValueX64(scopedNodeId.GetNodeId())); + + auto * device = BridgeDeviceMgr().GetDeviceByScopedNodeId(scopedNodeId); + if (device == nullptr) + { + ChipLogError(NotSpecified, "Could not find bridged device associated with Id=[%d:0x" ChipLogFormatX64 "]", + scopedNodeId.GetFabricIndex(), ChipLogValueX64(scopedNodeId.GetNodeId())); + return pw::Status::NotFound(); + } + + device->ReachableChanged(request.reachability); + + return pw::OkStatus(); +} + FabricBridge fabric_bridge_service; #endif // defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/.gn b/examples/laundry-washer-app/nxp/rt/rt1060/.gn new file mode 100644 index 00000000000000..0985ed955a426f --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1060/.gn @@ -0,0 +1,35 @@ +# 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") +import("//build_overrides/chip.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 = { + target_cpu = "arm" + target_os = "freertos" + + import("//args.gni") + + # Import common example GN args + import("${chip_root}/examples/platform/nxp/common/gn/args.gni") + + # Import default platform configs + import("${chip_root}/src/platform/nxp/rt/rt1060/args.gni") +} diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/BUILD.gn b/examples/laundry-washer-app/nxp/rt/rt1060/BUILD.gn new file mode 100644 index 00000000000000..eb7ea93bbd1d2c --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1060/BUILD.gn @@ -0,0 +1,291 @@ +# Copyright (c) 2021-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. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") +import("${chip_root}/src/platform/device.gni") + +#allows to get common NXP SDK gn options +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +# Allows to get various RT gn options +import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni") + +import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni") +import( + "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni") +import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni") + +assert(current_os == "freertos") +assert(target_os == "freertos") +assert(nxp_platform == "rt/rt1060") + +declare_args() { + # Allows to enable to ota_provider support + enable_ota_provider = false + + # Allows to connect to a predefine Wi-Fi network at boot + wifi_auto_connect_at_boot = false + wifi_auto_connect_at_boot_ssid = "" + wifi_auto_connect_at_boot_password = "" + + # Setup discriminator as argument + setup_discriminator = 3840 +} + +example_platform_dir = + "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}" +common_example_dir = "${chip_root}/examples/platform/nxp/common" + +app_common_folder = "laundry-washer-app/nxp/zap" + +# Create here the SDK instance. +# Particular sources/defines/includes could be added/changed depending on the target application. +rt_sdk("sdk") { + defines = [] + + cflags = [] + public_deps = [] + public_configs = [] + sources = [] + include_dirs = [] + + # Indicate paths to default board files + include_dirs += [ "${example_platform_dir}/board/" ] + + # RT1060 rev A use same pin mux as rev B + # If user needs different pin mux files for rev A and rev B boards, the source and include from below needs to be updated accordingly + if (evkname == "evkmimxrt1060") { + include_dirs += [ "${example_platform_dir}/board/evkbmimxrt1060/" ] + sources += [ "${example_platform_dir}/board/evkbmimxrt1060/pin_mux.c" ] + } else { + include_dirs += [ "${example_platform_dir}/board/${evkname}/" ] + sources += [ "${example_platform_dir}/board/${evkname}/pin_mux.c" ] + } + sources += [ "${example_platform_dir}/board/hardware_init.c" ] + sources += [ "${example_platform_dir}/board/clock_config.c" ] + sources += [ "${example_platform_dir}/board/board.c" ] + sources += [ "${example_platform_dir}/board/peripherals.c" ] + + # Indicate the path to CHIPProjectConfig.h + include_dirs += [ "include/config" ] + + # Indicate the default path to FreeRTOSConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ] + + # Indicate the default path to OpenThreadConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ] + + # For matter with BR feature, increase FreeRTOS heap size + if (chip_enable_wifi && chip_enable_openthread) { + defines += [ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)" ] + } + + defines += [ + "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}", + ] +} + +# Create the SDK driver instance. +# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template +rt1060_sdk_drivers("sdk_driver") { +} + +rt_executable("laundry-washer") { + output_name = "chip-rt1060-laundry-washer-example" + + defines = [ + "CONFIG_RENDEZVOUS_MODE=7", + "CONFIG_APP_FREERTOS_OS=1", + ] + + if (chip_enable_openthread) { + defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ] + } + + include_dirs = [ + "../../common/main/include", + "../../common/main", + "${chip_root}/examples/all-clusters-app/all-clusters-common/include", + "${chip_root}/examples/providers/", + ] + + sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", + "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp", + "../../common/main/AppTask.cpp", + "../../common/main/DeviceCallbacks.cpp", + "../../common/main/ZclCallbacks.cpp", + "../../common/main/include/AppEvent.h", + "../../common/main/include/AppTask.h", + "../../common/main/include/DeviceCallbacks.h", + "../../common/main/main.cpp", + ] + + # App common files + include_dirs += [ + "${common_example_dir}/icd/include", + "${common_example_dir}/matter_cli/include", + "${common_example_dir}/device_manager/include", + "${common_example_dir}/device_callbacks/include", + "${common_example_dir}/matter_button/include", + "${common_example_dir}/factory_data/include", + "${common_example_dir}/app_task/include", + ] + + sources += [ + "${chip_root}/examples/platform/nxp/${nxp_platform}/factory_data/source/AppFactoryDataExample.cpp", + "${common_example_dir}/app_task/source/AppTaskBase.cpp", + "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp", + "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp", + "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp", + "${common_example_dir}/icd/source/ICDUtil.cpp", + "${common_example_dir}/matter_button/source/ButtonDefault.cpp", + "${common_example_dir}/matter_button/source/ButtonManager.cpp", + "${common_example_dir}/matter_button/source/ButtonRegistrationDefault.cpp", + ] + + deps = [ "${chip_root}/examples/${app_common_folder}" ] + + sources += [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/laundry-washer-controls-delegate-impl.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-temperature-levels.cpp", + "../../common/main/laundry-washer-mode.cpp", + "../../common/main/operational-state-delegate-impl.cpp", + ] + + if (chip_enable_matter_cli) { + defines += [ "ENABLE_CHIP_SHELL" ] + deps += [ + "${chip_root}/examples/shell/shell_common:shell_common", + "${chip_root}/src/lib/shell:shell", + ] + sources += [ + "${common_example_dir}/matter_cli/source/AppCLIBase.cpp", + "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp", + ] + } + + if (chip_enable_ota_requestor) { + sources += [ + "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/flash_partitioning.h", + "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp", + "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp", + + #Adding mcuboot files + "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/mcuboot_app_support.c", + "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/mcuboot_app_support.h", + ] + include_dirs += [ + "$${common_example_dir}/ota_requestor/include", + "${chip_root}/examples/platform/nxp/common/mcuboot_app_support", + ] + } + + if (wifi_auto_connect_at_boot) { + assert(wifi_auto_connect_at_boot_ssid != "" && + wifi_auto_connect_at_boot_password != "", + "WiFi SSID and password must be specified at build time!") + + defines += [ + "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1", + "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"", + "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"", + ] + + include_dirs += [ "${common_example_dir}/wifi_connect/include" ] + sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ] + } + + if (enable_ota_provider) { + defines += [ "CONFIG_CHIP_OTA_PROVIDER=1" ] + + include_dirs += [ + "${common_example_dir}/ota_provider/include", + "${common_example_dir}/ota_provider/ota-provider-common", + ] + + sources += [ + "${common_example_dir}/ota_provider/ota-provider-common/RTBdxOtaSender.cpp", + "${common_example_dir}/ota_provider/ota-provider-common/RTOTAProviderExample.cpp", + "${common_example_dir}/ota_provider/source/OTAProvider.cpp", + ] + + deps += [ + "${chip_root}/src/app/server", + "${chip_root}/src/protocols/bdx", + "${chip_root}/third_party/jsoncpp", + ] + } + + # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false + # The would add to the build a dedicated application assert implementation. + if (!sdk_fsl_assert_support) { + sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ] + } + + cflags = [ "-Wconversion" ] + + ldscript = + "${example_platform_dir}/app/ldscripts/MIMXRT1062xxxxx_flexspi_nor.ld" + + inputs = [ ldscript ] + + ldflags = [ + "-T" + rebase_path(ldscript, root_build_dir), + "-fno-common", + "-Wl,--defsym=__stack_size__=2048", + "-ffreestanding", + "-fno-builtin", + "-mapcs", + "-u qspiflash_config", + "-u image_vector_table", + "-u boot_data", + "-u dcd_data", + "-Wl,-print-memory-usage", + "-Wl,--no-warn-rwx-segments", + ] + + if (enable_ota_provider) { + # As the OTA file will be stored in the littlefs file system, it is required to increase the size of the file system + # To be able to store an OTA file with a MAX size of 640K, + # it recommended to size the file system with: + # 161 sectors of 4K => reserved for the OTA file + # 32 sectors of 4K => reserved for Matter/OT/BLE settings storage + ldflags += [ "-Wl,--defsym=gNVMSectorCountLink_d=193" ] + } + + if (chip_enable_ota_requestor) { + # If OTA build flag is enabled, + # we would need to reserve enough space for the bootloader (MCUBoot) + # MCUBoot requires 0x11000 Bytes to be reserved at the base of the flash + # Consequently, some sections will need to be shifted + ldflags += [ "-Wl,--defsym=__mcu_boot_size__=0x11000" ] + } + + output_dir = root_out_dir +} + +group("rt1060") { + deps = [ ":laundry-washer" ] +} + +group("default") { + deps = [ ":rt1060" ] +} diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/README.md b/examples/laundry-washer-app/nxp/rt/rt1060/README.md new file mode 100644 index 00000000000000..62d4847a4a5cef --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1060/README.md @@ -0,0 +1,5 @@ +# CHIP RT1060 Thermostat Application + +All instructions describing how to use a Matter application on NXP RT1060 can be +found in [README.md](../../../../all-clusters-app/nxp/rt/rt1060/README.md) root +readme diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/args.gni b/examples/laundry-washer-app/nxp/rt/rt1060/args.gni new file mode 100644 index 00000000000000..d65714c9287ce5 --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1060/args.gni @@ -0,0 +1,25 @@ +# 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. + +import("//build_overrides/chip.gni") + +# SDK target definitions +nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain") +nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain") + +# ICDM +chip_enable_icd_server = true +chip_persist_subscriptions = true +chip_subscription_timeout_resumption = true +chip_enable_icd_checkin = true diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/build_overrides b/examples/laundry-washer-app/nxp/rt/rt1060/build_overrides new file mode 120000 index 00000000000000..f10867042f4d19 --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1060/build_overrides @@ -0,0 +1 @@ +../../../../build_overrides \ No newline at end of file diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h b/examples/laundry-washer-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h new file mode 100644 index 00000000000000..dd73c6c9eaaedd --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1060/include/config/CHIPProjectConfig.h @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2020 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + +/* + * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data. + */ +#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0 +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID + * + * 0xFFF1: Test vendor. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID + * + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005 + +#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +// Use a default pairing code if one hasn't been provisioned in flash. +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#endif + +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 +#endif + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS" + +/** + * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER + * + * Enables the use of a hard-coded default serial number if none + * is found in CHIP NV storage. + */ +#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN" + +#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */ + +/** + * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION + * + * The hardware version number assigned to device or product by the device vendor. This + * number is scoped to the device product id, and typically corresponds to a revision of the + * physical device, a change to its packaging, and/or a change to its marketing presentation. + * This value is generally *not* incremented for device software versions. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100 + +#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0" +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING + * + * A string identifying the software version running on the device. + * CHIP currently expects the software version to be in the format + * {MAJOR_VERSION}.0d{MINOR_VERSION} + */ +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors" +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App" +#endif + +#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION +//-> format_version = 1 +//-> vendor_id = 0xFFF1 +//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B, +// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, +// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029, +// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038, +// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, +// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, +// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ] +//-> device_type_id = 0x0016 +//-> certificate_id = "ZIG20142ZB330003-24" +//-> security_level = 0 +//-> security_information = 0 +//-> version_number = 0x2694 +//-> certification_type = 0 +//-> dac_origin_vendor_id is not present +//-> dac_origin_product_id is not present +#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \ + { \ + 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \ + 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \ + 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \ + 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \ + 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \ + 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \ + 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \ + 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \ + 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \ + 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \ + 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \ + 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \ + 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \ + 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \ + 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \ + 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \ + 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \ + 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \ + 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \ + 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \ + 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \ + 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \ + 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \ + 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \ + 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \ + 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \ + 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \ + 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \ + 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \ + } +#endif + +/** + * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC + * + * Enables synchronizing the device's real time clock with a remote CHIP Time service + * using the CHIP Time Sync protocol. + */ +// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1 + +/** + * CHIP_CONFIG_MAX_BINDINGS + * + * Maximum number of simultaneously active bindings per ChipExchangeManager + * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4 + * in the worst case. Keeping another 4 as buffer. + */ +#define CHIP_CONFIG_MAX_BINDINGS 6 + +/** + * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD + * + * Select the ability to offload event logs to any interested subscribers using WDM. + */ +#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1 + +/** + * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS + * + * Enable recording UTC timestamps. + */ +#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1 + +/** + * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE + * + * A size, in bytes, of the individual debug event logging buffer. + */ +#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512) + +/** + * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE + * + * For a development build, set the default importance of events to be logged as Debug. + * Since debug is the lowest importance level, this means all standard, critical, info and + * debug importance level vi events get logged. + */ +#if BUILD_RELEASE +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production +#else +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug +#endif // BUILD_RELEASE + +/* Increasing the retransmission interval of the MRP messages after subsequent failures */ +#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL +#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32) +#endif diff --git a/examples/laundry-washer-app/nxp/rt/rt1060/third_party/connectedhomeip b/examples/laundry-washer-app/nxp/rt/rt1060/third_party/connectedhomeip new file mode 120000 index 00000000000000..305f2077ffe860 --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1060/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../.. \ No newline at end of file diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/.gn b/examples/laundry-washer-app/nxp/rt/rt1170/.gn new file mode 100644 index 00000000000000..59dcfeb229ae70 --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1170/.gn @@ -0,0 +1,35 @@ +# 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") +import("//build_overrides/chip.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 = { + target_cpu = "arm" + target_os = "freertos" + + import("//args.gni") + + # Import common example GN args + import("${chip_root}/examples/platform/nxp/common/gn/args.gni") + + # Import default platform configs + import("${chip_root}/src/platform/nxp/rt/rt1170/args.gni") +} diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/BUILD.gn b/examples/laundry-washer-app/nxp/rt/rt1170/BUILD.gn new file mode 100644 index 00000000000000..96b035e8628f5d --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1170/BUILD.gn @@ -0,0 +1,246 @@ +# Copyright (c) 2021-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. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") +import("${chip_root}/src/platform/device.gni") + +#allows to get common NXP SDK gn options +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +# Allows to get various RT gn options +import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni") + +import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni") +import( + "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni") +import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni") + +assert(current_os == "freertos") +assert(target_os == "freertos") +assert(nxp_platform == "rt/rt1170") + +declare_args() { + # Allows to connect to a predefine Wi-Fi network at boot + wifi_auto_connect_at_boot = false + wifi_auto_connect_at_boot_ssid = "" + wifi_auto_connect_at_boot_password = "" + + # Setup discriminator as argument + setup_discriminator = 3840 +} + +example_platform_dir = + "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}" +common_example_dir = "${chip_root}/examples/platform/nxp/common" + +# Use NXP custom zap files for laundry-washer device-type +app_common_folder = "laundry-washer-app/nxp/zap" + +# Create here the SDK instance. +# Particular sources/defines/includes could be added/changed depending on the target application. +rt_sdk("sdk") { + defines = [] + + cflags = [] + public_deps = [] + public_configs = [] + sources = [] + include_dirs = [] + + # Indicate paths to default board files + include_dirs += [ "${example_platform_dir}/board/" ] + sources += [ "${example_platform_dir}/board/pin_mux.c" ] + sources += [ "${example_platform_dir}/board/hardware_init.c" ] + sources += [ "${example_platform_dir}/board/clock_config.c" ] + sources += [ "${example_platform_dir}/board/board.c" ] + sources += [ "${example_platform_dir}/board/peripherals.c" ] + sources += [ "${example_platform_dir}/board/sdmmc_config.c" ] + + # Indicate the path to CHIPProjectConfig.h + include_dirs += [ "include/config" ] + + # Indicate the default path to FreeRTOSConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ] + + # Indicate the default path to OpenThreadConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ] + + # For matter with BR feature, increase FreeRTOS heap size + if (chip_enable_wifi && chip_enable_openthread) { + defines += [ "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)" ] + } + + defines += [ + "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}", + ] +} + +# Create the SDK driver instance. +# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template +rt1170_sdk_drivers("sdk_driver") { +} + +rt_executable("laundry-washer-app") { + output_name = "chip-rt1170-laundry-washer-example" + + defines = [ + "CONFIG_RENDEZVOUS_MODE=7", + "CONFIG_APP_FREERTOS_OS=1", + ] + + if (chip_enable_openthread) { + defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ] + } + + include_dirs = [ + "../../common/main/include", + "../../common/main", + "${chip_root}/examples/all-clusters-app/all-clusters-common/include", + "${chip_root}/examples/providers/", + ] + + sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", + "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp", + "../../common/main/AppTask.cpp", + "../../common/main/DeviceCallbacks.cpp", + "../../common/main/ZclCallbacks.cpp", + "../../common/main/include/AppEvent.h", + "../../common/main/include/AppTask.h", + "../../common/main/include/DeviceCallbacks.h", + "../../common/main/main.cpp", + ] + + # App common files + include_dirs += [ + "${common_example_dir}/icd/include", + "${common_example_dir}/matter_button/include", + "${common_example_dir}/matter_cli/include", + "${common_example_dir}/device_manager/include", + "${common_example_dir}/device_callbacks/include", + "${common_example_dir}/factory_data/include", + "${common_example_dir}/app_task/include", + ] + + sources += [ + "${common_example_dir}/app_task/source/AppTaskBase.cpp", + "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp", + "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp", + "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp", + "${common_example_dir}/factory_data/source/AppFactoryDataDefaultImpl.cpp", + "${common_example_dir}/icd/source/ICDUtil.cpp", + "${common_example_dir}/matter_button/source/ButtonRegistrationEmpty.cpp", + ] + + deps = [ "${chip_root}/examples/${app_common_folder}" ] + + sources += [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/laundry-washer-controls-delegate-impl.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-temperature-levels.cpp", + "../../common/main/laundry-washer-mode.cpp", + "../../common/main/operational-state-delegate-impl.cpp", + ] + + if (chip_enable_matter_cli) { + defines += [ "ENABLE_CHIP_SHELL" ] + deps += [ + "${chip_root}/examples/shell/shell_common:shell_common", + "${chip_root}/src/lib/shell:shell", + ] + sources += [ + "${common_example_dir}/matter_cli/source/AppCLIBase.cpp", + "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp", + ] + } + + if (chip_enable_ota_requestor) { + include_dirs += [ "${common_example_dir}/ota_requestor/include" ] + sources += [ + "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp", + "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp", + ] + } + + if (wifi_auto_connect_at_boot) { + assert(wifi_auto_connect_at_boot_ssid != "" && + wifi_auto_connect_at_boot_password != "", + "WiFi SSID and password must be specified at build time!") + + defines += [ + "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1", + "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"", + "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"", + ] + + include_dirs += [ "${common_example_dir}/wifi_connect/include" ] + sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ] + } + + # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false + # The would add to the build a dedicated application assert implementation. + if (!sdk_fsl_assert_support) { + sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ] + } + + cflags = [ "-Wconversion" ] + + ldscript = + "${example_platform_dir}/app/ldscripts/MIMXRT1176xxxxx_cm7_flexspi_nor.ld" + + inputs = [ ldscript ] + + ldflags = [ + "-T" + rebase_path(ldscript, root_build_dir), + "-fno-common", + "-Wl,--defsym=__stack_size__=2048", + "-ffreestanding", + "-fno-builtin", + "-mapcs", + "-u qspiflash_config", + "-u image_vector_table", + "-u boot_data", + "-u dcd_data", + "-Wl,-print-memory-usage", + "-Wl,--no-warn-rwx-segments", + ] + + if (chip_enable_ota_requestor) { + if (no_mcuboot) { + # If "no_mcuboot" is set to true, the application will be linked at the base of the flash. + print( + "Warning : The OTA Requestor is enabled without MCUBoot. This will prevent the application from applying software updates.") + } else { + # we need to reserve enough space for the bootloader (MCUBoot) + # MCUBoot requires 0x40000 Bytes to be reserved at the base of the flash + # Consequently, some sections will need to be shifted + ldflags += [ "-Wl,--defsym=__m_mcuboot_size__=0x40000" ] + } + } + + output_dir = root_out_dir +} + +group("rt1170") { + deps = [ ":laundry-washer-app" ] +} + +group("default") { + deps = [ ":rt1170" ] +} diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/README.md b/examples/laundry-washer-app/nxp/rt/rt1170/README.md new file mode 100644 index 00000000000000..97101758c8e389 --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1170/README.md @@ -0,0 +1,5 @@ +# CHIP RT1170 Thermostat Application + +All instructions describing how to use a Matter application on NXP RT11170 can +be found in [README.md](../../../../all-clusters-app/nxp/rt/rt1170/README.md) +root readme diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/args.gni b/examples/laundry-washer-app/nxp/rt/rt1170/args.gni new file mode 100644 index 00000000000000..d65714c9287ce5 --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1170/args.gni @@ -0,0 +1,25 @@ +# 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. + +import("//build_overrides/chip.gni") + +# SDK target definitions +nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain") +nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain") + +# ICDM +chip_enable_icd_server = true +chip_persist_subscriptions = true +chip_subscription_timeout_resumption = true +chip_enable_icd_checkin = true diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/build_overrides b/examples/laundry-washer-app/nxp/rt/rt1170/build_overrides new file mode 120000 index 00000000000000..f10867042f4d19 --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1170/build_overrides @@ -0,0 +1 @@ +../../../../build_overrides \ No newline at end of file diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h b/examples/laundry-washer-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h new file mode 100644 index 00000000000000..dd73c6c9eaaedd --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1170/include/config/CHIPProjectConfig.h @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2020 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + +/* + * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data. + */ +#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0 +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID + * + * 0xFFF1: Test vendor. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID + * + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005 + +#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +// Use a default pairing code if one hasn't been provisioned in flash. +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#endif + +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 +#endif + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS" + +/** + * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER + * + * Enables the use of a hard-coded default serial number if none + * is found in CHIP NV storage. + */ +#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN" + +#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */ + +/** + * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION + * + * The hardware version number assigned to device or product by the device vendor. This + * number is scoped to the device product id, and typically corresponds to a revision of the + * physical device, a change to its packaging, and/or a change to its marketing presentation. + * This value is generally *not* incremented for device software versions. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100 + +#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0" +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING + * + * A string identifying the software version running on the device. + * CHIP currently expects the software version to be in the format + * {MAJOR_VERSION}.0d{MINOR_VERSION} + */ +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors" +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App" +#endif + +#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION +//-> format_version = 1 +//-> vendor_id = 0xFFF1 +//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B, +// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, +// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029, +// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038, +// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, +// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, +// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ] +//-> device_type_id = 0x0016 +//-> certificate_id = "ZIG20142ZB330003-24" +//-> security_level = 0 +//-> security_information = 0 +//-> version_number = 0x2694 +//-> certification_type = 0 +//-> dac_origin_vendor_id is not present +//-> dac_origin_product_id is not present +#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \ + { \ + 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \ + 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \ + 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \ + 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \ + 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \ + 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \ + 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \ + 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \ + 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \ + 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \ + 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \ + 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \ + 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \ + 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \ + 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \ + 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \ + 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \ + 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \ + 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \ + 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \ + 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \ + 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \ + 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \ + 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \ + 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \ + 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \ + 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \ + 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \ + 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \ + } +#endif + +/** + * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC + * + * Enables synchronizing the device's real time clock with a remote CHIP Time service + * using the CHIP Time Sync protocol. + */ +// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1 + +/** + * CHIP_CONFIG_MAX_BINDINGS + * + * Maximum number of simultaneously active bindings per ChipExchangeManager + * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4 + * in the worst case. Keeping another 4 as buffer. + */ +#define CHIP_CONFIG_MAX_BINDINGS 6 + +/** + * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD + * + * Select the ability to offload event logs to any interested subscribers using WDM. + */ +#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1 + +/** + * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS + * + * Enable recording UTC timestamps. + */ +#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1 + +/** + * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE + * + * A size, in bytes, of the individual debug event logging buffer. + */ +#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512) + +/** + * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE + * + * For a development build, set the default importance of events to be logged as Debug. + * Since debug is the lowest importance level, this means all standard, critical, info and + * debug importance level vi events get logged. + */ +#if BUILD_RELEASE +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production +#else +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug +#endif // BUILD_RELEASE + +/* Increasing the retransmission interval of the MRP messages after subsequent failures */ +#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL +#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32) +#endif diff --git a/examples/laundry-washer-app/nxp/rt/rt1170/third_party/connectedhomeip b/examples/laundry-washer-app/nxp/rt/rt1170/third_party/connectedhomeip new file mode 120000 index 00000000000000..305f2077ffe860 --- /dev/null +++ b/examples/laundry-washer-app/nxp/rt/rt1170/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../.. \ No newline at end of file diff --git a/examples/platform/nxp/common/device_callbacks/source/CommonDeviceCallbacks.cpp b/examples/platform/nxp/common/device_callbacks/source/CommonDeviceCallbacks.cpp index 1bab4b09f58eda..5d877aad9bed7a 100644 --- a/examples/platform/nxp/common/device_callbacks/source/CommonDeviceCallbacks.cpp +++ b/examples/platform/nxp/common/device_callbacks/source/CommonDeviceCallbacks.cpp @@ -79,7 +79,16 @@ void chip::NXP::App::CommonDeviceCallbacks::DeviceEventCallback(const ChipDevice case DeviceEventType::kCommissioningComplete: CommonDeviceCallbacks::OnComissioningComplete(event); break; -#endif +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + case DeviceEventType::kThreadConnectivityChange: + if (!ConnectivityMgr().IsWiFiStationConnected() && (event->ThreadConnectivityChange.Result == kConnectivity_Established)) + { + // Restart DnsSd service when operating as Matter over Thread + chip::app::DnssdServer::Instance().StartServer(); + } + break; +#endif // CHIP_DEVICE_CONFIG_ENABLE_WPA +#endif // CHIP_ENABLE_OPENTHREAD case DeviceLayer::DeviceEventType::kDnssdInitialized: ChipLogProgress(DeviceLayer, "kDnssdInitialized"); #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR @@ -158,20 +167,13 @@ void chip::NXP::App::CommonDeviceCallbacks::OnSessionEstablished(chip::DeviceLay #if CHIP_ENABLE_OPENTHREAD void chip::NXP::App::CommonDeviceCallbacks::OnComissioningComplete(const chip::DeviceLayer::ChipDeviceEvent * event) { -#ifndef _NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_ #if CHIP_DEVICE_CONFIG_ENABLE_WPA - if (ConnectivityMgr().IsWiFiStationConnected()) - { - // Disable thr nwk commissioining cluster - app::Clusters::NetworkCommissioning::Attributes::InterfaceEnabled::Set(CHIP_DEVICE_CONFIG_THREAD_NETWORK_ENDPOINT_ID, 0); - } - else if (ConnectivityMgr().IsThreadProvisioned()) + if (!ConnectivityMgr().IsWiFiStationConnected() && ConnectivityMgr().IsThreadProvisioned()) { // Set WIFI cluster interface attribute to disable. app::Clusters::NetworkCommissioning::Attributes::InterfaceEnabled::Set(0, 0); } #endif // CHIP_DEVICE_CONFIG_ENABLE_WPA -#endif // _NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_ #if CHIP_DEVICE_CONFIG_CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED /* diff --git a/examples/platform/nxp/rt/rt1060/doc/images/MIMXRT1060-EVKB-TOP.png b/examples/platform/nxp/rt/rt1060/doc/images/MIMXRT1060-EVKB-TOP.png new file mode 100644 index 00000000000000..1e9fbff94c977d Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/MIMXRT1060-EVKB-TOP.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/debug0.png b/examples/platform/nxp/rt/rt1060/doc/images/debug0.png new file mode 100644 index 00000000000000..6a594f4e0129e7 Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/debug0.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/debug1.png b/examples/platform/nxp/rt/rt1060/doc/images/debug1.png new file mode 100644 index 00000000000000..b5a9ee59f3a5eb Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/debug1.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/flash_driver.png b/examples/platform/nxp/rt/rt1060/doc/images/flash_driver.png new file mode 100644 index 00000000000000..0e5ab136918c1d Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/flash_driver.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/gdbdebugger.png b/examples/platform/nxp/rt/rt1060/doc/images/gdbdebugger.png new file mode 100644 index 00000000000000..ace1ff8c9bc910 Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/gdbdebugger.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/import-local-repository.png b/examples/platform/nxp/rt/rt1060/doc/images/import-local-repository.png new file mode 100644 index 00000000000000..630e9f9545eb6a Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/import-local-repository.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/import-sdk-git.png b/examples/platform/nxp/rt/rt1060/doc/images/import-sdk-git.png new file mode 100644 index 00000000000000..440db4359503b0 Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/import-sdk-git.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/mcu-set.png b/examples/platform/nxp/rt/rt1060/doc/images/mcu-set.png new file mode 100644 index 00000000000000..a3d83783d7d5da Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/mcu-set.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework.jpg b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework.jpg new file mode 100644 index 00000000000000..fd7c303cfaf6ae Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework.jpg differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework_detail.jpg b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework_detail.jpg new file mode 100644 index 00000000000000..c5a43e6f4ac750 Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_evkc_IW612_hw_rework_detail.jpg differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/rt1060_k32w061_pin_settings.jpg b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_k32w061_pin_settings.jpg new file mode 100644 index 00000000000000..ed616ee5a5cbbc Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/rt1060_k32w061_pin_settings.jpg differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/select-sdk.png b/examples/platform/nxp/rt/rt1060/doc/images/select-sdk.png new file mode 100644 index 00000000000000..335a05035e1829 Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/select-sdk.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/startup.png b/examples/platform/nxp/rt/rt1060/doc/images/startup.png new file mode 100644 index 00000000000000..cd9a8ad90fd805 Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/startup.png differ diff --git a/examples/platform/nxp/rt/rt1060/doc/images/toolchain.JPG b/examples/platform/nxp/rt/rt1060/doc/images/toolchain.JPG new file mode 100644 index 00000000000000..068ebfb35e1efa Binary files /dev/null and b/examples/platform/nxp/rt/rt1060/doc/images/toolchain.JPG differ diff --git a/examples/platform/nxp/rt/rt1060/factory_data/source/AppFactoryDataExample.cpp b/examples/platform/nxp/rt/rt1060/factory_data/source/AppFactoryDataExample.cpp new file mode 100644 index 00000000000000..a37ff1b5c47feb --- /dev/null +++ b/examples/platform/nxp/rt/rt1060/factory_data/source/AppFactoryDataExample.cpp @@ -0,0 +1,77 @@ +/* + * + * 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 "AppFactoryData.h" + +#include +#include +#include + +#if CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +#include "FactoryDataProvider.h" +/* + * Test key used to encrypt factory data before storing it to the flash. + * The software key should be used only during development stage. + * For production usage, it is recommended to use the OTP key which needs to be fused in the RT1060 SW_GP2. + */ +static const uint8_t aes128TestKey[] + __attribute__((aligned)) = { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }; +#else +#include +#endif + +using namespace chip; +using namespace ::chip::Credentials; +using namespace ::chip::DeviceLayer; + +/** + * Allows to register Matter factory data before initializing the Matter stack + * Load factory data from the flash to the RAM. + * Needs to be done before starting other Matter modules to avoid concurrent access issues with DCP hardware module. + * + * This example demonstrates the usage of the ecb with a software key, to use other encryption mode, + * or to use hardware keys, check available methodes from the FactoryDataProviderImpl class. + */ +CHIP_ERROR NXP::App::AppFactoryData_PreMatterStackInit(void) +{ +#if CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA + + FactoryDataPrvdImpl().SetEncryptionMode(FactoryDataProvider::encrypt_ecb); + FactoryDataPrvdImpl().SetAes128Key(&aes128TestKey[0]); + + return FactoryDataPrvdImpl().Init(); +#else + return CHIP_NO_ERROR; +#endif +} + +/** + * Allows to register Matter factory data after initializing the Matter stack + */ +CHIP_ERROR NXP::App::AppFactoryData_PostMatterStackInit(void) +{ +#if CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA + SetDeviceInstanceInfoProvider(&FactoryDataPrvd()); + SetDeviceAttestationCredentialsProvider(&FactoryDataPrvd()); + SetCommissionableDataProvider(&FactoryDataPrvd()); +#else + // Initialize device attestation with example one (only for debug purpose) + SetDeviceAttestationCredentialsProvider(Examples::GetExampleDACProvider()); +#endif + return CHIP_NO_ERROR; +} diff --git a/examples/platform/nxp/rt/rt1170/BUILD.gn b/examples/platform/nxp/rt/rt1170/BUILD.gn new file mode 100644 index 00000000000000..6585e31750db6c --- /dev/null +++ b/examples/platform/nxp/rt/rt1170/BUILD.gn @@ -0,0 +1,24 @@ +# Copyright (c) 2020-2022 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("//build_overrides/nxp_sdk.gni") + +config("chip_app_project_config") { + include_dirs = [ + "app/project_include", + "../../common/util/include", + "../../common/mbedtls", + ] +} diff --git a/examples/platform/nxp/rt/rt1170/doc/images/IMX-RT1170-EVK-TOP.jpg b/examples/platform/nxp/rt/rt1170/doc/images/IMX-RT1170-EVK-TOP.jpg new file mode 100644 index 00000000000000..a5dc1619edca9f Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/IMX-RT1170-EVK-TOP.jpg differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/debug0.png b/examples/platform/nxp/rt/rt1170/doc/images/debug0.png new file mode 100644 index 00000000000000..e5b02cfe13f986 Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/debug0.png differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/flash_driver.png b/examples/platform/nxp/rt/rt1170/doc/images/flash_driver.png new file mode 100644 index 00000000000000..610acab9043f37 Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/flash_driver.png differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg b/examples/platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg new file mode 100644 index 00000000000000..1482efefbc2f07 Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/iwx612_2EL.jpg differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/mcu-set.png b/examples/platform/nxp/rt/rt1170/doc/images/mcu-set.png new file mode 100644 index 00000000000000..27bc4d910a3653 Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/mcu-set.png differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_demo.PNG b/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_demo.PNG new file mode 100644 index 00000000000000..0c228b7227668c Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_demo.PNG differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_swap_config.png b/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_swap_config.png new file mode 100644 index 00000000000000..83c4fdb433494b Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/mcuboot_swap_config.png differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-M2_adapter.jpg b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-M2_adapter.jpg new file mode 100644 index 00000000000000..0d8166707b4701 Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-M2_adapter.jpg differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_1.jpg b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_1.jpg new file mode 100644 index 00000000000000..01febd90b55773 Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_1.jpg differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_2.jpg b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_2.jpg new file mode 100644 index 00000000000000..91bae4b5f55bee Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/murata_usd-m2_connections_2.jpg differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/select-sdk.png b/examples/platform/nxp/rt/rt1170/doc/images/select-sdk.png new file mode 100644 index 00000000000000..412731cc988531 Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/select-sdk.png differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/startup.png b/examples/platform/nxp/rt/rt1170/doc/images/startup.png new file mode 100644 index 00000000000000..c805bc53b05049 Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/startup.png differ diff --git a/examples/platform/nxp/rt/rt1170/doc/images/toolchain.JPG b/examples/platform/nxp/rt/rt1170/doc/images/toolchain.JPG new file mode 100644 index 00000000000000..068ebfb35e1efa Binary files /dev/null and b/examples/platform/nxp/rt/rt1170/doc/images/toolchain.JPG differ diff --git a/examples/thermostat/nxp/rt/rt1060/.gn b/examples/thermostat/nxp/rt/rt1060/.gn new file mode 100644 index 00000000000000..0985ed955a426f --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1060/.gn @@ -0,0 +1,35 @@ +# 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") +import("//build_overrides/chip.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 = { + target_cpu = "arm" + target_os = "freertos" + + import("//args.gni") + + # Import common example GN args + import("${chip_root}/examples/platform/nxp/common/gn/args.gni") + + # Import default platform configs + import("${chip_root}/src/platform/nxp/rt/rt1060/args.gni") +} diff --git a/examples/thermostat/nxp/rt/rt1060/BUILD.gn b/examples/thermostat/nxp/rt/rt1060/BUILD.gn new file mode 100644 index 00000000000000..5eba1a328f799f --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1060/BUILD.gn @@ -0,0 +1,304 @@ +# Copyright (c) 2021-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. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") +import("${chip_root}/src/platform/device.gni") + +#allows to get common NXP SDK gn options +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +# Allows to get various RT gn options +import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni") + +import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni") +import( + "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni") +import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni") + +assert(current_os == "freertos") +assert(target_os == "freertos") +assert(nxp_platform == "rt/rt1060") + +declare_args() { + # Allows to enable to ota_provider support + enable_ota_provider = false + + # Allows to connect to a predefine Wi-Fi network at boot + wifi_auto_connect_at_boot = false + wifi_auto_connect_at_boot_ssid = "" + wifi_auto_connect_at_boot_password = "" + + # Setup discriminator as argument + setup_discriminator = 3840 + + chip_with_diag_logs_demo = true +} + +example_platform_dir = + "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}" +common_example_dir = "${chip_root}/examples/platform/nxp/common" + +app_common_folder = "thermostat/nxp/zap" + +# Create here the SDK instance. +# Particular sources/defines/includes could be added/changed depending on the target application. +rt_sdk("sdk") { + defines = [] + + cflags = [] + public_deps = [] + public_configs = [] + sources = [] + include_dirs = [] + + # Indicate paths to default board files + include_dirs += [ "${example_platform_dir}/board/" ] + + # RT1060 rev A use same pin mux as rev B + # If user needs different pin mux files for rev A and rev B boards, the source and include from below needs to be updated accordingly + if (evkname == "evkmimxrt1060") { + include_dirs += [ "${example_platform_dir}/board/evkbmimxrt1060/" ] + sources += [ "${example_platform_dir}/board/evkbmimxrt1060/pin_mux.c" ] + } else { + include_dirs += [ "${example_platform_dir}/board/${evkname}/" ] + sources += [ "${example_platform_dir}/board/${evkname}/pin_mux.c" ] + } + sources += [ "${example_platform_dir}/board/hardware_init.c" ] + sources += [ "${example_platform_dir}/board/clock_config.c" ] + sources += [ "${example_platform_dir}/board/board.c" ] + sources += [ "${example_platform_dir}/board/peripherals.c" ] + + # Indicate the path to CHIPProjectConfig.h + include_dirs += [ "include/config" ] + + # Indicate the default path to FreeRTOSConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ] + + # Indicate the default path to OpenThreadConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ] + + # For matter with BR feature, increase FreeRTOS heap size and enable TBR cluster + if (chip_enable_wifi && chip_enable_openthread) { + defines += [ + "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)", + "CHIP_DEVICE_CONFIG_ENABLE_TBR=1", + ] + } + + defines += [ + "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}", + ] +} + +# Create the SDK driver instance. +# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template +rt1060_sdk_drivers("sdk_driver") { +} + +rt_executable("thermostat") { + output_name = "chip-rt1060-thermostat-example" + + defines = [ + "CONFIG_RENDEZVOUS_MODE=7", + "CONFIG_APP_FREERTOS_OS=1", + ] + + if (chip_enable_openthread) { + defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ] + } + + if (chip_with_diag_logs_demo) { + defines += [ + "CONFIG_DIAG_LOGS_DEMO=1", + "CHIP_DEVICE_CONFIG_MAX_DIAG_LOG_SIZE=1024", + ] + } + + include_dirs = [ + "../../common/main/include", + "../../common/main", + "${chip_root}/examples/all-clusters-app/all-clusters-common/include", + "${chip_root}/examples/providers/", + ] + + sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", + "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp", + "../../common/main/AppTask.cpp", + "../../common/main/DeviceCallbacks.cpp", + "../../common/main/ZclCallbacks.cpp", + "../../common/main/include/AppEvent.h", + "../../common/main/include/AppTask.h", + "../../common/main/include/DeviceCallbacks.h", + "../../common/main/main.cpp", + ] + + if (chip_with_diag_logs_demo) { + include_dirs += [ + "${common_example_dir}/diagnostic_logs/include", + "${chip_root}", + ] + sources += [ + "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsDemo.cpp", + "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsProviderDelegateImpl.cpp", + ] + } + + # App common files + include_dirs += [ + "${common_example_dir}/icd/include", + "${common_example_dir}/matter_cli/include", + "${common_example_dir}/device_manager/include", + "${common_example_dir}/device_callbacks/include", + "${common_example_dir}/matter_button/include", + "${common_example_dir}/factory_data/include", + "${common_example_dir}/app_task/include", + ] + + sources += [ + "${chip_root}/examples/platform/nxp/${nxp_platform}/factory_data/source/AppFactoryDataExample.cpp", + "${common_example_dir}/app_task/source/AppTaskBase.cpp", + "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp", + "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp", + "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp", + "${common_example_dir}/icd/source/ICDUtil.cpp", + "${common_example_dir}/matter_button/source/ButtonDefault.cpp", + "${common_example_dir}/matter_button/source/ButtonManager.cpp", + "${common_example_dir}/matter_button/source/ButtonRegistrationDefault.cpp", + ] + + deps = [ "${chip_root}/examples/${app_common_folder}" ] + + if (chip_enable_matter_cli) { + defines += [ "ENABLE_CHIP_SHELL" ] + deps += [ + "${chip_root}/examples/shell/shell_common:shell_common", + "${chip_root}/src/lib/shell:shell", + ] + sources += [ + "${common_example_dir}/matter_cli/source/AppCLIBase.cpp", + "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp", + ] + } + + if (chip_enable_ota_requestor) { + sources += [ + "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/flash_partitioning.h", + "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp", + "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp", + + #Adding mcuboot files + "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/mcuboot_app_support.c", + "${chip_root}/examples/platform/nxp/common/mcuboot_app_support/mcuboot_app_support.h", + ] + include_dirs += [ + "$${common_example_dir}/ota_requestor/include", + "${chip_root}/examples/platform/nxp/common/mcuboot_app_support", + ] + } + + if (wifi_auto_connect_at_boot) { + assert(wifi_auto_connect_at_boot_ssid != "" && + wifi_auto_connect_at_boot_password != "", + "WiFi SSID and password must be specified at build time!") + + defines += [ + "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1", + "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"", + "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"", + ] + + include_dirs += [ "${common_example_dir}/wifi_connect/include" ] + sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ] + } + + if (enable_ota_provider) { + defines += [ "CONFIG_CHIP_OTA_PROVIDER=1" ] + + include_dirs += [ + "${common_example_dir}/ota_provider/include", + "${common_example_dir}/ota_provider/ota-provider-common", + ] + + sources += [ + "${common_example_dir}/ota_provider/ota-provider-common/RTBdxOtaSender.cpp", + "${common_example_dir}/ota_provider/ota-provider-common/RTOTAProviderExample.cpp", + "${common_example_dir}/ota_provider/source/OTAProvider.cpp", + ] + + deps += [ + "${chip_root}/src/app/server", + "${chip_root}/src/protocols/bdx", + "${chip_root}/third_party/jsoncpp", + ] + } + + # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false + # The would add to the build a dedicated application assert implementation. + if (!sdk_fsl_assert_support) { + sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ] + } + + cflags = [ "-Wconversion" ] + + ldscript = + "${example_platform_dir}/app/ldscripts/MIMXRT1062xxxxx_flexspi_nor.ld" + + inputs = [ ldscript ] + + ldflags = [ + "-T" + rebase_path(ldscript, root_build_dir), + "-fno-common", + "-Wl,--defsym=__stack_size__=2048", + "-ffreestanding", + "-fno-builtin", + "-mapcs", + "-u qspiflash_config", + "-u image_vector_table", + "-u boot_data", + "-u dcd_data", + "-Wl,-print-memory-usage", + "-Wl,--no-warn-rwx-segments", + ] + + if (enable_ota_provider) { + # As the OTA file will be stored in the littlefs file system, it is required to increase the size of the file system + # To be able to store an OTA file with a MAX size of 640K, + # it recommended to size the file system with: + # 161 sectors of 4K => reserved for the OTA file + # 32 sectors of 4K => reserved for Matter/OT/BLE settings storage + ldflags += [ "-Wl,--defsym=gNVMSectorCountLink_d=193" ] + } + + if (chip_enable_ota_requestor) { + # If OTA build flag is enabled, + # we would need to reserve enough space for the bootloader (MCUBoot) + # MCUBoot requires 0x11000 Bytes to be reserved at the base of the flash + # Consequently, some sections will need to be shifted + ldflags += [ "-Wl,--defsym=__mcu_boot_size__=0x11000" ] + } + + output_dir = root_out_dir +} + +group("rt1060") { + deps = [ ":thermostat" ] +} + +group("default") { + deps = [ ":rt1060" ] +} diff --git a/examples/thermostat/nxp/rt/rt1060/README.md b/examples/thermostat/nxp/rt/rt1060/README.md new file mode 100644 index 00000000000000..62d4847a4a5cef --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1060/README.md @@ -0,0 +1,5 @@ +# CHIP RT1060 Thermostat Application + +All instructions describing how to use a Matter application on NXP RT1060 can be +found in [README.md](../../../../all-clusters-app/nxp/rt/rt1060/README.md) root +readme diff --git a/examples/thermostat/nxp/rt/rt1060/args.gni b/examples/thermostat/nxp/rt/rt1060/args.gni new file mode 100644 index 00000000000000..c2d91a5db7bae7 --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1060/args.gni @@ -0,0 +1,19 @@ +# 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. + +import("//build_overrides/chip.gni") + +# SDK target definitions +nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain") +nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain") diff --git a/examples/thermostat/nxp/rt/rt1060/build_overrides b/examples/thermostat/nxp/rt/rt1060/build_overrides new file mode 120000 index 00000000000000..f10867042f4d19 --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1060/build_overrides @@ -0,0 +1 @@ +../../../../build_overrides \ No newline at end of file diff --git a/examples/thermostat/nxp/rt/rt1060/include/config/CHIPProjectConfig.h b/examples/thermostat/nxp/rt/rt1060/include/config/CHIPProjectConfig.h new file mode 100644 index 00000000000000..dd73c6c9eaaedd --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1060/include/config/CHIPProjectConfig.h @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2020 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + +/* + * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data. + */ +#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0 +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID + * + * 0xFFF1: Test vendor. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID + * + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005 + +#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +// Use a default pairing code if one hasn't been provisioned in flash. +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#endif + +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 +#endif + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS" + +/** + * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER + * + * Enables the use of a hard-coded default serial number if none + * is found in CHIP NV storage. + */ +#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN" + +#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */ + +/** + * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION + * + * The hardware version number assigned to device or product by the device vendor. This + * number is scoped to the device product id, and typically corresponds to a revision of the + * physical device, a change to its packaging, and/or a change to its marketing presentation. + * This value is generally *not* incremented for device software versions. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100 + +#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0" +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING + * + * A string identifying the software version running on the device. + * CHIP currently expects the software version to be in the format + * {MAJOR_VERSION}.0d{MINOR_VERSION} + */ +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors" +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App" +#endif + +#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION +//-> format_version = 1 +//-> vendor_id = 0xFFF1 +//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B, +// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, +// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029, +// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038, +// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, +// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, +// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ] +//-> device_type_id = 0x0016 +//-> certificate_id = "ZIG20142ZB330003-24" +//-> security_level = 0 +//-> security_information = 0 +//-> version_number = 0x2694 +//-> certification_type = 0 +//-> dac_origin_vendor_id is not present +//-> dac_origin_product_id is not present +#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \ + { \ + 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \ + 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \ + 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \ + 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \ + 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \ + 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \ + 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \ + 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \ + 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \ + 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \ + 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \ + 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \ + 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \ + 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \ + 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \ + 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \ + 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \ + 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \ + 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \ + 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \ + 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \ + 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \ + 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \ + 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \ + 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \ + 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \ + 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \ + 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \ + 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \ + } +#endif + +/** + * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC + * + * Enables synchronizing the device's real time clock with a remote CHIP Time service + * using the CHIP Time Sync protocol. + */ +// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1 + +/** + * CHIP_CONFIG_MAX_BINDINGS + * + * Maximum number of simultaneously active bindings per ChipExchangeManager + * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4 + * in the worst case. Keeping another 4 as buffer. + */ +#define CHIP_CONFIG_MAX_BINDINGS 6 + +/** + * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD + * + * Select the ability to offload event logs to any interested subscribers using WDM. + */ +#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1 + +/** + * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS + * + * Enable recording UTC timestamps. + */ +#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1 + +/** + * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE + * + * A size, in bytes, of the individual debug event logging buffer. + */ +#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512) + +/** + * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE + * + * For a development build, set the default importance of events to be logged as Debug. + * Since debug is the lowest importance level, this means all standard, critical, info and + * debug importance level vi events get logged. + */ +#if BUILD_RELEASE +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production +#else +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug +#endif // BUILD_RELEASE + +/* Increasing the retransmission interval of the MRP messages after subsequent failures */ +#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL +#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32) +#endif diff --git a/examples/thermostat/nxp/rt/rt1060/third_party/connectedhomeip b/examples/thermostat/nxp/rt/rt1060/third_party/connectedhomeip new file mode 120000 index 00000000000000..305f2077ffe860 --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1060/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../.. \ No newline at end of file diff --git a/examples/thermostat/nxp/rt/rt1170/.gn b/examples/thermostat/nxp/rt/rt1170/.gn new file mode 100644 index 00000000000000..59dcfeb229ae70 --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1170/.gn @@ -0,0 +1,35 @@ +# 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") +import("//build_overrides/chip.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 = { + target_cpu = "arm" + target_os = "freertos" + + import("//args.gni") + + # Import common example GN args + import("${chip_root}/examples/platform/nxp/common/gn/args.gni") + + # Import default platform configs + import("${chip_root}/src/platform/nxp/rt/rt1170/args.gni") +} diff --git a/examples/thermostat/nxp/rt/rt1170/BUILD.gn b/examples/thermostat/nxp/rt/rt1170/BUILD.gn new file mode 100644 index 00000000000000..c89df14eb5fc01 --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1170/BUILD.gn @@ -0,0 +1,257 @@ +# Copyright (c) 2021-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. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") +import("${chip_root}/src/platform/device.gni") + +#allows to get common NXP SDK gn options +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +# Allows to get various RT gn options +import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni") + +import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni") +import( + "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni") +import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni") + +assert(current_os == "freertos") +assert(target_os == "freertos") +assert(nxp_platform == "rt/rt1170") + +declare_args() { + # Allows to connect to a predefine Wi-Fi network at boot + wifi_auto_connect_at_boot = false + wifi_auto_connect_at_boot_ssid = "" + wifi_auto_connect_at_boot_password = "" + + # Setup discriminator as argument + setup_discriminator = 3840 + + chip_with_diag_logs_demo = true +} + +example_platform_dir = + "${nxp_sdk_matter_support_root}/examples/platform/${nxp_platform}" +common_example_dir = "${chip_root}/examples/platform/nxp/common" + +app_common_folder = "thermostat/nxp/zap" + +# Create here the SDK instance. +# Particular sources/defines/includes could be added/changed depending on the target application. +rt_sdk("sdk") { + defines = [] + + cflags = [] + public_deps = [] + public_configs = [] + sources = [] + include_dirs = [] + + # Indicate paths to default board files + include_dirs += [ "${example_platform_dir}/board/" ] + sources += [ "${example_platform_dir}/board/pin_mux.c" ] + sources += [ "${example_platform_dir}/board/hardware_init.c" ] + sources += [ "${example_platform_dir}/board/clock_config.c" ] + sources += [ "${example_platform_dir}/board/board.c" ] + sources += [ "${example_platform_dir}/board/peripherals.c" ] + sources += [ "${example_platform_dir}/board/sdmmc_config.c" ] + + # Indicate the path to CHIPProjectConfig.h + include_dirs += [ "include/config" ] + + # Indicate the default path to FreeRTOSConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ] + + # Indicate the default path to OpenThreadConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ] + + # For matter with BR feature, increase FreeRTOS heap size and enable TBR cluster + if (chip_enable_wifi && chip_enable_openthread) { + defines += [ + "configTOTAL_HEAP_SIZE=(size_t)(170 * 1024)", + "CHIP_DEVICE_CONFIG_ENABLE_TBR=1", + ] + } + defines += [ + "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}", + ] +} + +# Create the SDK driver instance. +# Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template +rt1170_sdk_drivers("sdk_driver") { +} + +rt_executable("thermostat") { + output_name = "chip-rt1170-thermostat-example" + + defines = [ + "CONFIG_RENDEZVOUS_MODE=7", + "CONFIG_APP_FREERTOS_OS=1", + ] + + if (chip_enable_openthread) { + defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ] + } + + if (chip_with_diag_logs_demo) { + defines += [ + "CONFIG_DIAG_LOGS_DEMO=1", + "CHIP_DEVICE_CONFIG_MAX_DIAG_LOG_SIZE=1024", + ] + } + + include_dirs = [ + "../../common/main/include", + "../../common/main", + "${chip_root}/examples/all-clusters-app/all-clusters-common/include", + "${chip_root}/examples/providers/", + ] + + sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", + "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp", + "../../common/main/AppTask.cpp", + "../../common/main/DeviceCallbacks.cpp", + "../../common/main/ZclCallbacks.cpp", + "../../common/main/include/AppEvent.h", + "../../common/main/include/AppTask.h", + "../../common/main/include/DeviceCallbacks.h", + "../../common/main/main.cpp", + ] + + if (chip_with_diag_logs_demo) { + include_dirs += [ + "${common_example_dir}/diagnostic_logs/include", + "${chip_root}", + ] + sources += [ + "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsDemo.cpp", + "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsProviderDelegateImpl.cpp", + ] + } + + # App common files + include_dirs += [ + "${common_example_dir}/icd/include", + "${common_example_dir}/matter_button/include", + "${common_example_dir}/matter_cli/include", + "${common_example_dir}/device_manager/include", + "${common_example_dir}/device_callbacks/include", + "${common_example_dir}/factory_data/include", + "${common_example_dir}/app_task/include", + ] + + sources += [ + "${common_example_dir}/app_task/source/AppTaskBase.cpp", + "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp", + "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp", + "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp", + "${common_example_dir}/factory_data/source/AppFactoryDataDefaultImpl.cpp", + "${common_example_dir}/icd/source/ICDUtil.cpp", + "${common_example_dir}/matter_button/source/ButtonRegistrationEmpty.cpp", + ] + + deps = [ "${chip_root}/examples/${app_common_folder}" ] + + if (chip_enable_matter_cli) { + defines += [ "ENABLE_CHIP_SHELL" ] + deps += [ + "${chip_root}/examples/shell/shell_common:shell_common", + "${chip_root}/src/lib/shell:shell", + ] + sources += [ + "${common_example_dir}/matter_cli/source/AppCLIBase.cpp", + "${common_example_dir}/matter_cli/source/AppCLIFreeRTOS.cpp", + ] + } + + if (chip_enable_ota_requestor) { + include_dirs += [ "${common_example_dir}/ota_requestor/include" ] + sources += [ + "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp", + "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp", + ] + } + + if (wifi_auto_connect_at_boot) { + assert(wifi_auto_connect_at_boot_ssid != "" && + wifi_auto_connect_at_boot_password != "", + "WiFi SSID and password must be specified at build time!") + + defines += [ + "CONFIG_CHIP_APP_WIFI_CONNECT_AT_BOOT=1", + "CONFIG_CHIP_APP_WIFI_SSID=\"${wifi_auto_connect_at_boot_ssid}\"", + "CONFIG_CHIP_APP_WIFI_PASSWORD=\"${wifi_auto_connect_at_boot_password}\"", + ] + + include_dirs += [ "${common_example_dir}/wifi_connect/include" ] + sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ] + } + + # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false + # The would add to the build a dedicated application assert implementation. + if (!sdk_fsl_assert_support) { + sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ] + } + + cflags = [ "-Wconversion" ] + + ldscript = + "${example_platform_dir}/app/ldscripts/MIMXRT1176xxxxx_cm7_flexspi_nor.ld" + + inputs = [ ldscript ] + + ldflags = [ + "-T" + rebase_path(ldscript, root_build_dir), + "-fno-common", + "-Wl,--defsym=__stack_size__=2048", + "-ffreestanding", + "-fno-builtin", + "-mapcs", + "-u qspiflash_config", + "-u image_vector_table", + "-u boot_data", + "-u dcd_data", + "-Wl,-print-memory-usage", + "-Wl,--no-warn-rwx-segments", + ] + + if (chip_enable_ota_requestor) { + if (no_mcuboot) { + # If "no_mcuboot" is set to true, the application will be linked at the base of the flash. + print( + "Warning : The OTA Requestor is enabled without MCUBoot. This will prevent the application from applying software updates.") + } else { + # we need to reserve enough space for the bootloader (MCUBoot) + # MCUBoot requires 0x40000 Bytes to be reserved at the base of the flash + # Consequently, some sections will need to be shifted + ldflags += [ "-Wl,--defsym=__m_mcuboot_size__=0x40000" ] + } + } + + output_dir = root_out_dir +} + +group("rt1170") { + deps = [ ":thermostat" ] +} + +group("default") { + deps = [ ":rt1170" ] +} diff --git a/examples/thermostat/nxp/rt/rt1170/README.md b/examples/thermostat/nxp/rt/rt1170/README.md new file mode 100644 index 00000000000000..97101758c8e389 --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1170/README.md @@ -0,0 +1,5 @@ +# CHIP RT1170 Thermostat Application + +All instructions describing how to use a Matter application on NXP RT11170 can +be found in [README.md](../../../../all-clusters-app/nxp/rt/rt1170/README.md) +root readme diff --git a/examples/thermostat/nxp/rt/rt1170/args.gni b/examples/thermostat/nxp/rt/rt1170/args.gni new file mode 100644 index 00000000000000..c2d91a5db7bae7 --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1170/args.gni @@ -0,0 +1,19 @@ +# 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. + +import("//build_overrides/chip.gni") + +# SDK target definitions +nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain") +nxp_sdk_driver_target = get_label_info(":sdk_driver", "label_no_toolchain") diff --git a/examples/thermostat/nxp/rt/rt1170/build_overrides b/examples/thermostat/nxp/rt/rt1170/build_overrides new file mode 120000 index 00000000000000..f10867042f4d19 --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1170/build_overrides @@ -0,0 +1 @@ +../../../../build_overrides \ No newline at end of file diff --git a/examples/thermostat/nxp/rt/rt1170/include/config/CHIPProjectConfig.h b/examples/thermostat/nxp/rt/rt1170/include/config/CHIPProjectConfig.h new file mode 100644 index 00000000000000..dd73c6c9eaaedd --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1170/include/config/CHIPProjectConfig.h @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2020 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + +/* + * Tells to the platform Factory Data Provider whether to use the example configuration or real/provisioned data. + */ +#ifndef CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +#define CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA 0 +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID + * + * 0xFFF1: Test vendor. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID + * + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005 + +#if !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA +// Use a default pairing code if one hasn't been provisioned in flash. +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#endif + +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 +#endif + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS" + +/** + * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER + * + * Enables the use of a hard-coded default serial number if none + * is found in CHIP NV storage. + */ +#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN" + +#endif /* !CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA */ + +/** + * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION + * + * The hardware version number assigned to device or product by the device vendor. This + * number is scoped to the device product id, and typically corresponds to a revision of the + * physical device, a change to its packaging, and/or a change to its marketing presentation. + * This value is generally *not* incremented for device software versions. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100 + +#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0" +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING + * + * A string identifying the software version running on the device. + * CHIP currently expects the software version to be in the format + * {MAJOR_VERSION}.0d{MINOR_VERSION} + */ +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors" +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App" +#endif + +#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION +//-> format_version = 1 +//-> vendor_id = 0xFFF1 +//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B, +// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, +// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029, +// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038, +// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, +// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, +// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ] +//-> device_type_id = 0x0016 +//-> certificate_id = "ZIG20142ZB330003-24" +//-> security_level = 0 +//-> security_information = 0 +//-> version_number = 0x2694 +//-> certification_type = 0 +//-> dac_origin_vendor_id is not present +//-> dac_origin_product_id is not present +#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \ + { \ + 0x30, 0x82, 0x02, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x0a, 0x30, \ + 0x82, 0x02, 0x06, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, \ + 0x02, 0x01, 0x30, 0x82, 0x01, 0x71, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, \ + 0x01, 0x62, 0x04, 0x82, 0x01, 0x5e, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, \ + 0x05, 0x01, 0x80, 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, \ + 0x07, 0x80, 0x05, 0x08, 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, \ + 0x80, 0x05, 0x0e, 0x80, 0x05, 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, \ + 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, \ + 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, \ + 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, \ + 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, \ + 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, \ + 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, \ + 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, \ + 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, \ + 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, 0x4b, 0x80, 0x05, 0x4c, 0x80, \ + 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, 0x05, 0x52, 0x80, 0x05, \ + 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, 0x80, 0x05, 0x59, \ + 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, 0x5f, 0x80, \ + 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, 0x13, \ + 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, \ + 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x94, 0x26, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, \ + 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, \ + 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \ + 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x24, 0xe5, \ + 0xd1, 0xf4, 0x7a, 0x7d, 0x7b, 0x0d, 0x20, 0x6a, 0x26, 0xef, 0x69, 0x9b, 0x7c, 0x97, 0x57, 0xb7, 0x2d, 0x46, 0x90, \ + 0x89, 0xde, 0x31, 0x92, 0xe6, 0x78, 0xc7, 0x45, 0xe7, 0xf6, 0x0c, 0x02, 0x21, 0x00, 0xf8, 0xaa, 0x2f, 0xa7, 0x11, \ + 0xfc, 0xb7, 0x9b, 0x97, 0xe3, 0x97, 0xce, 0xda, 0x66, 0x7b, 0xae, 0x46, 0x4e, 0x2b, 0xd3, 0xff, 0xdf, 0xc3, 0xcc, \ + 0xed, 0x7a, 0xa8, 0xca, 0x5f, 0x4c, 0x1a, 0x7c \ + } +#endif + +/** + * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC + * + * Enables synchronizing the device's real time clock with a remote CHIP Time service + * using the CHIP Time Sync protocol. + */ +// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1 + +/** + * CHIP_CONFIG_MAX_BINDINGS + * + * Maximum number of simultaneously active bindings per ChipExchangeManager + * 1 (Time Sync) + 2 (Two 1-way subscriptions) + 1 (Software Update) = 4 + * in the worst case. Keeping another 4 as buffer. + */ +#define CHIP_CONFIG_MAX_BINDINGS 6 + +/** + * CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD + * + * Select the ability to offload event logs to any interested subscribers using WDM. + */ +#define CHIP_CONFIG_EVENT_LOGGING_WDM_OFFLOAD 1 + +/** + * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS + * + * Enable recording UTC timestamps. + */ +#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1 + +/** + * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE + * + * A size, in bytes, of the individual debug event logging buffer. + */ +#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512) + +/** + * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE + * + * For a development build, set the default importance of events to be logged as Debug. + * Since debug is the lowest importance level, this means all standard, critical, info and + * debug importance level vi events get logged. + */ +#if BUILD_RELEASE +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production +#else +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug +#endif // BUILD_RELEASE + +/* Increasing the retransmission interval of the MRP messages after subsequent failures */ +#ifndef CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL +#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (2000_ms32) +#endif diff --git a/examples/thermostat/nxp/rt/rt1170/third_party/connectedhomeip b/examples/thermostat/nxp/rt/rt1170/third_party/connectedhomeip new file mode 120000 index 00000000000000..305f2077ffe860 --- /dev/null +++ b/examples/thermostat/nxp/rt/rt1170/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../.. \ No newline at end of file diff --git a/integrations/docker/images/base/chip-build/version b/integrations/docker/images/base/chip-build/version index ccb98d6cde3284..9ce87dc9432ce1 100644 --- a/integrations/docker/images/base/chip-build/version +++ b/integrations/docker/images/base/chip-build/version @@ -1 +1 @@ -83 : [Silabs] Update Silabs docker WiseConnect 3.3.3 +84 : [Silabs] Update Silabs docker WiseConnect-wifi-bt-sdk 2.10.3 \ No newline at end of file diff --git a/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile b/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile index e3f4145d8c1950..230a5bbb1fd1d0 100644 --- a/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile +++ b/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile @@ -23,8 +23,8 @@ RUN wget https://github.com/SiliconLabs/simplicity_sdk/releases/download/v2024.6 && find /tmp/simplicity_sdk/protocol/openthread -name "*efr32mg21*" -delete \ && : # last line -# Clone WiSeConnect Wi-Fi and Bluetooth Software 2.10.0 (f94b83d) -RUN git clone --depth=1 --single-branch --branch=2.10.0 https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk.git /tmp/wiseconnect-wifi-bt-sdk && \ +# Clone WiSeConnect Wi-Fi and Bluetooth Software 2.10.3 (b6d6cb5) +RUN git clone --depth=1 --single-branch --branch=2.10.3 https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk.git /tmp/wiseconnect-wifi-bt-sdk && \ cd /tmp/wiseconnect-wifi-bt-sdk && \ rm -rf .git \ && : # last line diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index 241dda1a17ed8a..19449e13ee86d0 100755 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -518,6 +518,8 @@ def BuildNxpTarget(): target.AppendFixedTargets([ TargetPart('k32w0', board=NxpBoard.K32W0), TargetPart('k32w1', board=NxpBoard.K32W1), + TargetPart('rt1060', board=NxpBoard.RT1060), + TargetPart('rt1170', board=NxpBoard.RT1170), TargetPart('rw61x', board=NxpBoard.RW61X), TargetPart('rw61x_eth', board=NxpBoard.RW61X_ETH), TargetPart('mcxw71', board=NxpBoard.MCXW71) @@ -534,9 +536,9 @@ def BuildNxpTarget(): TargetPart('lighting', app=NxpApp.LIGHTING).OnlyIfRe('(k32w0|k32w1|mcxw71)'), TargetPart('contact-sensor', app=NxpApp.CONTACT).OnlyIfRe('(k32w0|k32w1|mcxw71)'), TargetPart('lock-app', app=NxpApp.LOCK_APP).OnlyIfRe('(k32w1|mcxw71)'), - TargetPart('all-clusters', app=NxpApp.ALLCLUSTERS).OnlyIfRe('rw61x'), - TargetPart('laundry-washer', app=NxpApp.LAUNDRYWASHER).OnlyIfRe('rw61x'), - TargetPart('thermostat', app=NxpApp.THERMOSTAT).OnlyIfRe('rw61x') + TargetPart('all-clusters', app=NxpApp.ALLCLUSTERS).OnlyIfRe('rt1060|rt1170|rw61x'), + TargetPart('laundry-washer', app=NxpApp.LAUNDRYWASHER).OnlyIfRe('rt1060|rt1170|rw61x'), + TargetPart('thermostat', app=NxpApp.THERMOSTAT).OnlyIfRe('rt1060|rt1170|rw61x') ]) target.AppendModifier(name="factory", enable_factory_data=True) @@ -548,15 +550,19 @@ def BuildNxpTarget(): target.AppendModifier(name="rotating-id", enable_rotating_id=True).ExceptIfRe('rw61x') target.AppendModifier(name="sw-v2", has_sw_version_2=True) target.AppendModifier(name="ota", enable_ota=True).ExceptIfRe('zephyr') - target.AppendModifier(name="wifi", enable_wifi=True).OnlyIfRe('rw61x') + target.AppendModifier(name="wifi", enable_wifi=True).OnlyIfRe('rt1060|rt1170|rw61x') target.AppendModifier(name="ethernet", enable_ethernet=True).OnlyIfRe('rw61x_eth-zephyr') target.AppendModifier(name="thread", enable_thread=True).ExceptIfRe('zephyr') target.AppendModifier(name="matter-shell", enable_shell=True).ExceptIfRe('k32w0|k32w1') target.AppendModifier('data-model-disabled', data_model_interface="disabled").ExceptIfRe('-data-model-enabled') target.AppendModifier('data-model-enabled', data_model_interface="enabled").ExceptIfRe('-data-model-disabled') - target.AppendModifier(name="factory-build", enable_factory_data_build=True).OnlyIfRe('rw61x') + target.AppendModifier(name="factory-build", enable_factory_data_build=True).OnlyIfRe('rt1060|rt1170|rw61x') target.AppendModifier(name="frdm", board_variant=NxpBoardVariant.FRDM).OnlyIfRe('rw61x') target.AppendModifier(name="cmake", build_system=NxpBuildSystem.CMAKE).OnlyIfRe('rw61x') + target.AppendModifier(name="evkc", board_variant=NxpBoardVariant.EVKC).OnlyIfRe('rt1060') + target.AppendModifier(name="iw416", iw416_transceiver=True).OnlyIfRe('rt1060') + target.AppendModifier(name="w8801", w8801_transceiver=True).OnlyIfRe('rt1060') + target.AppendModifier(name="iwx12", iwx12_transceiver=True).OnlyIfRe('rt1060|rt1170') return target diff --git a/scripts/build/builders/nxp.py b/scripts/build/builders/nxp.py index c78ea1ca58fee6..6070a18fd0ba60 100644 --- a/scripts/build/builders/nxp.py +++ b/scripts/build/builders/nxp.py @@ -51,6 +51,8 @@ def BuildSystem(self): class NxpBoard(Enum): K32W0 = auto() K32W1 = auto() + RT1060 = auto() + RT1170 = auto() RW61X = auto() RW61X_ETH = auto() MCXW71 = auto() @@ -60,6 +62,10 @@ def Name(self, os_env): return 'k32w0x' elif self == NxpBoard.K32W1: return 'k32w1' + elif self == NxpBoard.RT1060: + return 'rt1060' + elif self == NxpBoard.RT1170: + return 'rt1170' elif (self == NxpBoard.RW61X) or (self == NxpBoard.RW61X_ETH): if os_env == NxpOsUsed.ZEPHYR: if self == NxpBoard.RW61X_ETH: @@ -78,6 +84,10 @@ def FolderName(self, os_env): return 'k32w0' elif self == NxpBoard.K32W1: return 'k32w1' + elif self == NxpBoard.RT1060: + return 'rt/rt1060' + elif self == NxpBoard.RT1170: + return 'rt/rt1170' elif (self == NxpBoard.RW61X) or (self == NxpBoard.RW61X_ETH): if os_env == NxpOsUsed.ZEPHYR: return 'zephyr' @@ -92,15 +102,16 @@ def FolderName(self, os_env): class NxpBoardVariant(Enum): RD = auto() FRDM = auto() + EVKC = auto() + EVKB = auto() def BoardVariantName(self, board): - if board != NxpBoard.RW61X: - raise Exception('Board variants only supported for RW61X') - if self == NxpBoardVariant.RD: return "rdrw612bga" elif self == NxpBoardVariant.FRDM: return "frdm" + elif self == NxpBoardVariant.EVKC: + return "evkcmimxrt1060" class NxpApp(Enum): @@ -173,7 +184,10 @@ def __init__(self, enable_ota: bool = False, data_model_interface: Optional[str] = None, enable_factory_data_build: bool = False, - disable_pairing_autostart: bool = False): + disable_pairing_autostart: bool = False, + iw416_transceiver: bool = False, + w8801_transceiver: bool = False, + iwx12_transceiver: bool = False): super(NxpBuilder, self).__init__( root=app.BuildRoot(root, board, os_env), runner=runner) @@ -200,6 +214,9 @@ def __init__(self, self.enable_factory_data_build = enable_factory_data_build self.disable_pairing_autostart = disable_pairing_autostart self.board_variant = board_variant + self.iw416_transceiver = iw416_transceiver + self.w8801_transceiver = w8801_transceiver + self.iwx12_transceiver = iwx12_transceiver def GnBuildArgs(self): args = [] @@ -248,10 +265,32 @@ def GnBuildArgs(self): # thread is enabled by default on kw32 if self.board == NxpBoard.RW61X: args.append('chip_enable_openthread=true chip_inet_config_enable_ipv4=false') + if self.board == NxpBoard.RT1060: + args.append('chip_enable_openthread=true chip_inet_config_enable_ipv4=false') + if self.board == NxpBoard.RT1170: + args.append('chip_enable_openthread=true chip_inet_config_enable_ipv4=false') if self.data_model_interface is not None: args.append(f'chip_use_data_model_interface="{self.data_model_interface}"') + if self.board_variant: + if self.board == NxpBoard.RT1060: + flag_board_variant = "evkname=\\\"%s\\\"" % self.board_variant.BoardVariantName(self.board) + args.append(flag_board_variant) + if self.board == NxpBoard.RW61X: + flag_board_variant = "board_version=\\\"%s\\\"" % self.board_variant.BoardVariantName(self.board) + args.append(flag_board_variant) + + if self.iw416_transceiver: + args.append('iw416_transceiver=true') + + if self.w8801_transceiver: + # BLE not supported on this transceiver + args.append('w8801_transceiver=true chip_enable_ble=false') + + if self.iwx12_transceiver: + args.append('iwx12_transceiver=true') + return args def CmakeBuildFlags(self): diff --git a/scripts/build/testdata/all_targets_linux_x64.txt b/scripts/build/testdata/all_targets_linux_x64.txt index b2a1934dcc3794..5a5863fcb92c9b 100644 --- a/scripts/build/testdata/all_targets_linux_x64.txt +++ b/scripts/build/testdata/all_targets_linux_x64.txt @@ -13,7 +13,7 @@ linux-{x64,arm64}-{rpc-console,all-clusters,all-clusters-minimal,chip-tool,therm 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][-trustm] -nxp-{k32w0,k32w1,rw61x,rw61x_eth,mcxw71}-{zephyr,freertos}-{lighting,contact-sensor,lock-app,all-clusters,laundry-washer,thermostat}[-factory][-low-power][-lit][-fro32k][-smu2][-dac-conversion][-rotating-id][-sw-v2][-ota][-wifi][-ethernet][-thread][-matter-shell][-data-model-disabled][-data-model-enabled][-factory-build][-frdm][-cmake] +nxp-{k32w0,k32w1,rt1060,rt1170,rw61x,rw61x_eth,mcxw71}-{zephyr,freertos}-{lighting,contact-sensor,lock-app,all-clusters,laundry-washer,thermostat}[-factory][-low-power][-lit][-fro32k][-smu2][-dac-conversion][-rotating-id][-sw-v2][-ota][-wifi][-ethernet][-thread][-matter-shell][-data-model-disabled][-data-model-enabled][-factory-build][-frdm][-cmake][-evkc][-iw416][-w8801][-iwx12] mbed-cy8cproto_062_4343w-{lock,light,all-clusters,all-clusters-minimal,pigweed,ota-requestor,shell}[-release][-develop][-debug][-data-model-disabled][-data-model-enabled] mw320-all-clusters-app nrf-{nrf5340dk,nrf52840dk,nrf52840dongle}-{all-clusters,all-clusters-minimal,lock,light,light-switch,shell,pump,pump-controller,window-covering}[-rpc][-data-model-disabled][-data-model-enabled] diff --git a/src/app/ReadClient.cpp b/src/app/ReadClient.cpp index 1e9c7e727f409c..2d609eb1afa05a 100644 --- a/src/app/ReadClient.cpp +++ b/src/app/ReadClient.cpp @@ -1081,10 +1081,14 @@ CHIP_ERROR ReadClient::ProcessSubscribeResponse(System::PacketBufferHandle && aP VerifyOrReturnError(IsMatchingSubscriptionId(subscriptionId), CHIP_ERROR_INVALID_SUBSCRIPTION); ReturnErrorOnFailure(subscribeResponse.GetMaxInterval(&mMaxInterval)); +#if CHIP_PROGRESS_LOGGING + auto duration = System::Clock::Milliseconds32(System::SystemClock().GetMonotonicTimestamp() - mSubscribeRequestTime); +#endif ChipLogProgress(DataManagement, - "Subscription established with SubscriptionID = 0x%08" PRIx32 " MinInterval = %u" + "Subscription established in %" PRIu32 "ms with SubscriptionID = 0x%08" PRIx32 " MinInterval = %u" "s MaxInterval = %us Peer = %02x:" ChipLogFormatX64, - mSubscriptionId, mMinIntervalFloorSeconds, mMaxInterval, GetFabricIndex(), ChipLogValueX64(GetPeerNodeId())); + duration.count(), mSubscriptionId, mMinIntervalFloorSeconds, mMaxInterval, GetFabricIndex(), + ChipLogValueX64(GetPeerNodeId())); ReturnErrorOnFailure(subscribeResponse.ExitContainer()); @@ -1144,6 +1148,10 @@ CHIP_ERROR ReadClient::SendSubscribeRequestImpl(const ReadPrepareParams & aReadP { MATTER_LOG_METRIC_BEGIN(Tracing::kMetricDeviceSubscriptionSetup); +#if CHIP_PROGRESS_LOGGING + mSubscribeRequestTime = System::SystemClock().GetMonotonicTimestamp(); +#endif + VerifyOrReturnError(ClientState::Idle == mState, CHIP_ERROR_INCORRECT_STATE); if (&aReadPrepareParams != &mReadPrepareParams) diff --git a/src/app/ReadClient.h b/src/app/ReadClient.h index fd27f0afc9e959..d8b8a971db8c28 100644 --- a/src/app/ReadClient.h +++ b/src/app/ReadClient.h @@ -676,6 +676,12 @@ class ReadClient : public Messaging::ExchangeDelegate // of RequestMessage (another end of container)). static constexpr uint16_t kReservedSizeForTLVEncodingOverhead = kReservedSizeForEndOfContainer + kReservedSizeForIMRevision + kReservedSizeForEndOfContainer; + +#if CHIP_PROGRESS_LOGGING + // Tracks the time when a subscribe request is successfully sent. + // This timestamp allows for logging the duration taken to established the subscription. + System::Clock::Timestamp mSubscribeRequestTime = System::Clock::kZero; +#endif }; }; // namespace app diff --git a/src/app/WriteHandler.cpp b/src/app/WriteHandler.cpp index d2fde339304f8f..011fd2e46b48ab 100644 --- a/src/app/WriteHandler.cpp +++ b/src/app/WriteHandler.cpp @@ -42,6 +42,31 @@ namespace chip { namespace app { +namespace { + +/// Wraps a EndpointIterator and ensures that `::Release()` is called +/// for the iterator (assuming it is non-null) +class AutoReleaseGroupEndpointIterator +{ +public: + explicit AutoReleaseGroupEndpointIterator(Credentials::GroupDataProvider::EndpointIterator * iterator) : mIterator(iterator) {} + ~AutoReleaseGroupEndpointIterator() + { + if (mIterator != nullptr) + { + mIterator->Release(); + } + } + + bool IsNull() const { return mIterator == nullptr; } + bool Next(Credentials::GroupDataProvider::GroupEndpoint & item) { return mIterator->Next(item); } + +private: + Credentials::GroupDataProvider::EndpointIterator * mIterator; +}; + +} // namespace + using namespace Protocols::InteractionModel; using Status = Protocols::InteractionModel::Status; @@ -436,10 +461,6 @@ CHIP_ERROR WriteHandler::ProcessGroupAttributeDataIBs(TLV::TLVReader & aAttribut ConcreteDataAttributePath dataAttributePath; TLV::TLVReader reader = aAttributeDataIBsReader; - Credentials::GroupDataProvider::GroupEndpoint mapping; - Credentials::GroupDataProvider * groupDataProvider = Credentials::GetGroupDataProvider(); - Credentials::GroupDataProvider::EndpointIterator * iterator; - err = element.Init(reader); SuccessOrExit(err); @@ -461,8 +482,8 @@ CHIP_ERROR WriteHandler::ProcessGroupAttributeDataIBs(TLV::TLVReader & aAttribut "Received group attribute write for Group=%u Cluster=" ChipLogFormatMEI " attribute=" ChipLogFormatMEI, groupId, ChipLogValueMEI(dataAttributePath.mClusterId), ChipLogValueMEI(dataAttributePath.mAttributeId)); - iterator = groupDataProvider->IterateEndpoints(fabric); - VerifyOrExit(iterator != nullptr, err = CHIP_ERROR_NO_MEMORY); + AutoReleaseGroupEndpointIterator iterator(Credentials::GetGroupDataProvider()->IterateEndpoints(fabric)); + VerifyOrExit(!iterator.IsNull(), err = CHIP_ERROR_NO_MEMORY); bool shouldReportListWriteEnd = ShouldReportListWriteEnd( mProcessingAttributePath, mStateFlags.Has(StateBits::kProcessingAttributeIsList), dataAttributePath); @@ -470,7 +491,8 @@ CHIP_ERROR WriteHandler::ProcessGroupAttributeDataIBs(TLV::TLVReader & aAttribut std::optional isListAttribute = std::nullopt; - while (iterator->Next(mapping)) + Credentials::GroupDataProvider::GroupEndpoint mapping; + while (iterator.Next(mapping)) { if (groupId != mapping.group_id) { @@ -552,7 +574,6 @@ CHIP_ERROR WriteHandler::ProcessGroupAttributeDataIBs(TLV::TLVReader & aAttribut dataAttributePath.mEndpointId = kInvalidEndpointId; mStateFlags.Set(StateBits::kProcessingAttributeIsList, dataAttributePath.IsListOperation()); mProcessingAttributePath.SetValue(dataAttributePath); - iterator->Release(); } if (CHIP_END_OF_TLV == err) diff --git a/src/app/clusters/ecosystem-information-server/ecosystem-information-server.cpp b/src/app/clusters/ecosystem-information-server/ecosystem-information-server.cpp index 5793ebfd1a4726..ec2f4f852b5147 100644 --- a/src/app/clusters/ecosystem-information-server/ecosystem-information-server.cpp +++ b/src/app/clusters/ecosystem-information-server/ecosystem-information-server.cpp @@ -264,6 +264,7 @@ CHIP_ERROR EcosystemInformationServer::AddDeviceInfo(EndpointId aEndpoint, std:: auto & deviceInfo = mDevicesMap[aEndpoint]; deviceInfo.mDeviceDirectory.push_back(std::move(aDevice)); + mMatterContext.MarkDirty(aEndpoint, Attributes::DeviceDirectory::Id); return CHIP_NO_ERROR; } @@ -282,6 +283,7 @@ CHIP_ERROR EcosystemInformationServer::AddLocationInfo(EndpointId aEndpoint, con VerifyOrReturnError((deviceInfo.mLocationDirectory.find(key) == deviceInfo.mLocationDirectory.end()), CHIP_ERROR_INVALID_ARGUMENT); deviceInfo.mLocationDirectory[key] = std::move(aLocation); + mMatterContext.MarkDirty(aEndpoint, Attributes::LocationDirectory::Id); return CHIP_NO_ERROR; } diff --git a/src/app/clusters/ecosystem-information-server/ecosystem-information-server.h b/src/app/clusters/ecosystem-information-server/ecosystem-information-server.h index 13d2bc8a6da850..81cfcfab9c8d53 100644 --- a/src/app/clusters/ecosystem-information-server/ecosystem-information-server.h +++ b/src/app/clusters/ecosystem-information-server/ecosystem-information-server.h @@ -27,6 +27,7 @@ #include #include +#include #include @@ -35,6 +36,21 @@ namespace app { namespace Clusters { namespace EcosystemInformation { +class MatterContext +{ +public: + virtual ~MatterContext() = default; + // MarkDirty + virtual void MarkDirty(EndpointId endpointId, AttributeId attributeId) + { + MatterReportingAttributeChangeCallback(endpointId, Id, attributeId); + } +}; + +class TestOnlyParameter +{ +}; + // This intentionally mirrors Structs::EcosystemDeviceStruct::Type but has ownership // of underlying types. class EcosystemDeviceStruct @@ -144,11 +160,14 @@ class EcosystemLocationStruct uint64_t mLocationDescriptorLastEditEpochUs; }; -class EcosystemInformationServer +class EcosystemInformationServer : public MatterContext { public: static EcosystemInformationServer & Instance(); + EcosystemInformationServer() : mMatterContext(*this){}; + EcosystemInformationServer(TestOnlyParameter _, MatterContext & aMatterContext) : mMatterContext(aMatterContext){}; + /** * @brief Add EcosystemInformation Cluster to endpoint so we respond appropriately on endpoint * @@ -212,6 +231,7 @@ class EcosystemInformationServer CHIP_ERROR EncodeDeviceDirectoryAttribute(EndpointId aEndpoint, AttributeValueEncoder & aEncoder); CHIP_ERROR EncodeLocationStructAttribute(EndpointId aEndpoint, AttributeValueEncoder & aEncoder); + MatterContext & mMatterContext; std::map mDevicesMap; static EcosystemInformationServer mInstance; diff --git a/src/app/codegen-data-model-provider/CodegenDataModelProvider.cpp b/src/app/codegen-data-model-provider/CodegenDataModelProvider.cpp index 7f7b7e14b8b752..2fb542c768aac0 100644 --- a/src/app/codegen-data-model-provider/CodegenDataModelProvider.cpp +++ b/src/app/codegen-data-model-provider/CodegenDataModelProvider.cpp @@ -619,8 +619,9 @@ std::optional CodegenDataModelProvider::TryFindAttributeIndex(const Em const EmberAfCluster * CodegenDataModelProvider::FindServerCluster(const ConcreteClusterPath & path) { - // cache things - if (mPreviouslyFoundCluster.has_value() && (mPreviouslyFoundCluster->path == path)) + if (mPreviouslyFoundCluster.has_value() && (mPreviouslyFoundCluster->path == path) && + (mEmberMetadataStructureGeneration == emberAfMetadataStructureGeneration())) + { return mPreviouslyFoundCluster->cluster; } @@ -628,7 +629,8 @@ const EmberAfCluster * CodegenDataModelProvider::FindServerCluster(const Concret const EmberAfCluster * cluster = emberAfFindServerCluster(path.mEndpointId, path.mClusterId); if (cluster != nullptr) { - mPreviouslyFoundCluster = std::make_optional(path, cluster); + mPreviouslyFoundCluster = std::make_optional(path, cluster); + mEmberMetadataStructureGeneration = emberAfMetadataStructureGeneration(); } return cluster; } diff --git a/src/app/codegen-data-model-provider/CodegenDataModelProvider.h b/src/app/codegen-data-model-provider/CodegenDataModelProvider.h index f6d6e4e4ed4be3..085ae67ec392ab 100644 --- a/src/app/codegen-data-model-provider/CodegenDataModelProvider.h +++ b/src/app/codegen-data-model-provider/CodegenDataModelProvider.h @@ -137,6 +137,7 @@ class CodegenDataModelProvider : public chip::app::DataModel::Provider ClusterReference(const ConcreteClusterPath p, const EmberAfCluster * c) : path(p), cluster(c) {} }; std::optional mPreviouslyFoundCluster; + unsigned mEmberMetadataStructureGeneration = 0; /// Finds the specified ember cluster /// diff --git a/src/app/icd/client/DefaultICDClientStorage.cpp b/src/app/icd/client/DefaultICDClientStorage.cpp index 0c6a0f7e134bb4..c50bb621a2dc3a 100644 --- a/src/app/icd/client/DefaultICDClientStorage.cpp +++ b/src/app/icd/client/DefaultICDClientStorage.cpp @@ -394,7 +394,12 @@ CHIP_ERROR DefaultICDClientStorage::StoreEntry(const ICDClientInfo & clientInfo) DefaultStorageKeyAllocator::ICDClientInfoKey(clientInfo.peer_node.GetFabricIndex()).KeyName(), backingBuffer.Get(), static_cast(len))); - return IncreaseEntryCountForFabric(clientInfo.peer_node.GetFabricIndex()); + ReturnErrorOnFailure(IncreaseEntryCountForFabric(clientInfo.peer_node.GetFabricIndex())); + ChipLogProgress(ICD, + "Store ICD entry successfully with peer nodeId " ChipLogFormatScopedNodeId + " and checkin nodeId " ChipLogFormatScopedNodeId, + ChipLogValueScopedNodeId(clientInfo.peer_node), ChipLogValueScopedNodeId(clientInfo.check_in_node)); + return CHIP_NO_ERROR; } CHIP_ERROR DefaultICDClientStorage::IncreaseEntryCountForFabric(FabricIndex fabricIndex) @@ -475,7 +480,10 @@ CHIP_ERROR DefaultICDClientStorage::DeleteEntry(const ScopedNodeId & peerNode) mpClientInfoStore->SyncSetKeyValue(DefaultStorageKeyAllocator::ICDClientInfoKey(peerNode.GetFabricIndex()).KeyName(), backingBuffer.Get(), static_cast(len))); - return DecreaseEntryCountForFabric(peerNode.GetFabricIndex()); + ReturnErrorOnFailure(DecreaseEntryCountForFabric(peerNode.GetFabricIndex())); + ChipLogProgress(ICD, "Remove ICD entry successfully with peer nodeId " ChipLogFormatScopedNodeId, + ChipLogValueScopedNodeId(peerNode)); + return CHIP_NO_ERROR; } CHIP_ERROR DefaultICDClientStorage::DeleteAllEntries(FabricIndex fabricIndex) @@ -508,7 +516,10 @@ CHIP_ERROR DefaultICDClientStorage::DeleteAllEntries(FabricIndex fabricIndex) { return mpClientInfoStore->SyncDeleteKeyValue(DefaultStorageKeyAllocator::ICDFabricList().KeyName()); } - return StoreFabricList(); + + ReturnErrorOnFailure(StoreFabricList()); + ChipLogProgress(ICD, "Remove all ICD entries successfully for fabric index %u", fabricIndex); + return CHIP_NO_ERROR; } CHIP_ERROR DefaultICDClientStorage::ProcessCheckInPayload(const ByteSpan & payload, ICDClientInfo & clientInfo, diff --git a/src/app/tests/TestEcosystemInformationCluster.cpp b/src/app/tests/TestEcosystemInformationCluster.cpp index f8d9f34642f1cc..8d7a2c217fe6d2 100644 --- a/src/app/tests/TestEcosystemInformationCluster.cpp +++ b/src/app/tests/TestEcosystemInformationCluster.cpp @@ -49,11 +49,28 @@ const ClusterId kEcosystemInfoClusterId = EcosystemInformation::Id; const AttributeId kDeviceDirectoryAttributeId = EcosystemInformation::Attributes::DeviceDirectory::Id; const AttributeId kLocationDirectoryAttributeId = EcosystemInformation::Attributes::LocationDirectory::Id; +class MockMatterContext : public MatterContext +{ +public: + virtual void MarkDirty(EndpointId endpointId, AttributeId attributeId) override + { + ConcreteAttributePath path(endpointId, kEcosystemInfoClusterId, attributeId); + mDirtyMarkedList.push_back(path); + } + + std::vector & GetDirtyList() { return mDirtyMarkedList; } + +private: + std::vector mDirtyMarkedList; +}; + } // namespace class TestEcosystemInformationCluster : public ::testing::Test { public: + TestEcosystemInformationCluster() : mClusterServer(TestOnlyParameter(), mMockMatterContext) {} + static void SetUpTestSuite() { ASSERT_EQ(chip::Platform::MemoryInit(), CHIP_NO_ERROR); } static void TearDownTestSuite() { chip::Platform::MemoryShutdown(); } @@ -80,7 +97,10 @@ class TestEcosystemInformationCluster : public ::testing::Test return locationInfo; } + MockMatterContext & GetMockMatterContext() { return mMockMatterContext; } + private: + MockMatterContext mMockMatterContext; Clusters::EcosystemInformation::EcosystemInformationServer mClusterServer; }; @@ -265,6 +285,19 @@ TEST_F(TestEcosystemInformationCluster, AddDeviceInfo) ASSERT_FALSE(iterator.Next()); } +TEST_F(TestEcosystemInformationCluster, AddDeviceInfoResultInMarkDirty) +{ + std::unique_ptr deviceInfo = CreateSimplestValidDeviceStruct(); + ASSERT_EQ(EcoInfoCluster().AddDeviceInfo(kValidEndpointId, std::move(deviceInfo)), CHIP_NO_ERROR); + + auto markedDirtyList = GetMockMatterContext().GetDirtyList(); + ASSERT_EQ(markedDirtyList.size(), 1u); + ConcreteAttributePath path = markedDirtyList[0]; + ASSERT_EQ(path.mEndpointId, kValidEndpointId); + ASSERT_EQ(path.mClusterId, kEcosystemInfoClusterId); + ASSERT_EQ(path.mAttributeId, kDeviceDirectoryAttributeId); +} + TEST_F(TestEcosystemInformationCluster, BuildingEcosystemLocationStruct) { EcosystemLocationStruct::Builder locationInfoBuilder; @@ -388,5 +421,21 @@ TEST_F(TestEcosystemInformationCluster, AddLocationInfo) ASSERT_FALSE(iterator.Next()); } +TEST_F(TestEcosystemInformationCluster, AddLocationInfoResultInMarkDirty) +{ + std::unique_ptr locationInfo = CreateValidLocationStruct(); + const char * kValidLocationIdStr = "SomeLocationIdString"; + ASSERT_EQ(EcoInfoCluster().AddLocationInfo(kValidEndpointId, kValidLocationIdStr, Testing::kAdminSubjectDescriptor.fabricIndex, + std::move(locationInfo)), + CHIP_NO_ERROR); + + auto markedDirtyList = GetMockMatterContext().GetDirtyList(); + ASSERT_EQ(markedDirtyList.size(), 1u); + ConcreteAttributePath path = markedDirtyList[0]; + ASSERT_EQ(path.mEndpointId, kValidEndpointId); + ASSERT_EQ(path.mClusterId, kEcosystemInfoClusterId); + ASSERT_EQ(path.mAttributeId, kLocationDirectoryAttributeId); +} + } // namespace app } // namespace chip diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml deleted file mode 100644 index 26503486dd059a..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml +++ /dev/null @@ -1,377 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: - 4.1.11. [TC-CADMIN-1.11] Open commissioning window on DUT twice using ECM - then BCM [DUT - Commissionee] - -PICS: - - CADMIN.S - - CADMIN.S.F00 - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Precondition" - verification: | - Reset Devices to factory defaults - disabled: true - - - label: "Step 1: TH_CR1 starts a commissioning process with DUT_CE" - PICS: CADMIN.S - verification: | - "1. Provision the DUT_CE (all-cluster-app) device using TH_CR1 (chip-tool ) on the raspi" - disabled: true - - - label: - "Step 2: TH_CR1 opens a commissioning window on DUT_CE using a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.S.C00.Rsp - verification: | - On TH_CR1 send the below command - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - Verify the Open commisioning window on the DUT_CE(all-cluster-app) Log: - - [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 - [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window - [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 - - Verify the Manual pairing code on the TH_CR1(chip-tool) Log: - - [1635864513.699433][3850:3855] CHIP:DMG: ICR moving to [CommandSen] - [1635864513.699489][3850:3855] CHIP:CTL: Manual pairing code: [36177160937] - [1635864513.699566][3850:3855] CHIP:CTL: SetupQRCode: [MT:00000CQM00YZN476420] - [1635864513.699636][3850:3855] CHIP:EM: Sending Standalone Ack for MessageCounter:2599714227 on exchange 60688i - [1635864513.699685][3850:3855] CHIP:IN: Prepared plaintext message 0xffff8a7cd960 to 0x0000000000000000 of type - disabled: true - - - label: "Step 3: DNS-SD records shows DUT_CE advertising" - verification: | - On TH_CR1 send the below command - - avahi-browse -rt _matterc._udp - + wlp5s0 IPv6 C326228BDB082BF4 _matterc._udp local - + wlp5s0 IPv6 7B6545A75C5330BE _matterc._udp local - = wlp5s0 IPv6 7B6545A75C5330BE _matterc._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2755] - port = [5540] - txt = ["PI=" "PH=33" "CM=1" "D=3841" "T=1" "CRA=300" "CRI=5000" "VP=65521+32769"] - = wlp5s0 IPv6 C326228BDB082BF4 _matterc._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2755] - port = [5540] - txt = ["PI=" "PH=36" "CM=2" "D=3840" "T=1" "CRA=300" "CRI=5000" "VP=65521+32769"] - grl@grl-ThinkPad-L480:~/2nd_cntrl/connectedhomeip/examples/chip-tool/out/debug$ On TH_CR1 send the below command - disabled: true - - - label: "Step 4: TH_CR3 Commissions with DUT_CE" - PICS: CADMIN.S - verification: | - On TH_CR3 send the below command - - ./chip-tool pairing code 3 35484132896 --commissioner-name gamma - - Verify you got below message TH_CR3(chip-tool) log - Device commissioning completed with success - disabled: true - - - label: - "Step 5: TH_CR1 opens a commissioning window on DUT_CE using a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM and - TH_CR2 Commissions with DUT_CE" - PICS: CADMIN.S.C00.Rsp - verification: | - On TH_CR1 send the below command - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - Verify Manual pairing code on TH1(chip-tool) Log - - 0x0000000000000001 at monotonic time: 16129075 msec - [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] - [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] - [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] - - On TH_CR2 send the below command - - ./chip-tool pairing code 2 35484132896 --commissioner-name beta - - Verify you got below message on TH_CR2(chip-tool) log - Device commissioning completed with success - disabled: true - - - label: - "Step 6: TH_CR1 opens a commissioning window on DUT_CE using a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.S.C00.Rsp - verification: | - On TH_CR1 send the below command - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - Verify the Open commisioning window on the DUT_CE(all-cluster-app) Log: - - [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 - [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window - [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 - - Verify the Manual pairing code on the TH_CR1(chip-tool) Log: - - [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec - [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] - [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] - [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] - disabled: true - - - label: - "Step 7: Before the expiration of PIXIT.CADMIN.CwDuration seconds - which was set in step 5, TH_CR1 opens a 2nd commissioning window on - DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration - seconds using ECM" - PICS: CADMIN.S.C00.Rsp - verification: | - On TH_CR1 send the below command - - Verify that the DUT_CE is rejecting the opening of second commissioning session with the response status 0x01 failure - - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - Verify cluster status 1 on TH_CR1(chip-tool) Log - - - [1650527291.952431][8566:8571] CHIP:DMG: - [1650527291.952458][8566:8571] CHIP:DMG: StatusIB = - [1650527291.952488][8566:8571] CHIP:DMG: { - [1650527291.952519][8566:8571] CHIP:DMG: status = 0x01 (FAILURE), - [1650527291.952555][8566:8571] CHIP:DMG: cluster-status = 0x2, - [1650527291.952578][8566:8571] CHIP:DMG: }, - [1650527291.952612][8566:8571] CHIP:DMG: - [1650527291.952634][8566:8571] CHIP:DMG: }, - disabled: true - - - label: "Step 8: TH_CR1 reads the list of Fabrics on DUT_CE" - PICS: OPCREDS.S.A0001 - verification: | - On TH_CR1 send the below command - - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - - Verify the list of Fabrics consists of FabricIndex 1, FabricIndex 2, FabricIndex 3 on TH_CR1(chip-tool) log - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 - [1650527361.425870][15792:15797] CHIP:TOO: Fabrics: 3 entries - [1650527361.426777][15792:15797] CHIP:TOO: [1]: { - [1650527361.426859][15792:15797] CHIP:TOO: RootPublicKey: 0429A71383F336D80918C9EC655112513E428C073AF7FB44820EC793535302C6E3825C56EE6DD1A683EAA7B59E3F261B46FFA24A6D911E8D88839F4C1B3C84BA01 - [1650527361.426923][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.426979][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427033][15792:15797] CHIP:TOO: NodeId: 1 - [1650527361.427088][15792:15797] CHIP:TOO: Label: - [1650527361.427166][15792:15797] CHIP:TOO: FabricIndex: 1 - [1650527361.427376][15792:15797] CHIP:TOO: } - [1650527361.427464][15792:15797] CHIP:TOO: [2]: { - [1650527361.427532][15792:15797] CHIP:TOO: RootPublicKey: 04781BCEE70118049ED61DD5B4E401CF1A09D2F78AE7F5770BE5506AD24238E5E0777277DABAFD062659651C95CC2CA7DEAACE40DB579A946CC07CADB141BE05D7 - [1650527361.427595][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.427649][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427703][15792:15797] CHIP:TOO: NodeId: 3 - [1650527361.427756][15792:15797] CHIP:TOO: Label: - [1650527361.427811][15792:15797] CHIP:TOO: FabricIndex: 2 - [1650527361.427868][15792:15797] CHIP:TOO: } - [1650527361.427943][15792:15797] CHIP:TOO: [3]: { - [1650527361.428008][15792:15797] CHIP:TOO: RootPublicKey: 0403EDB5B461030A34EF7EA2F9DB0D46A36185E4755C365AF9344C4959F049EF21D55EAB903A2C7FBFC305EEFA42989250D7517A73E6156062390A60C0D4C41EBD - [1650527361.428067][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.428122][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.428176][15792:15797] CHIP:TOO: NodeId: 2 - [1650527361.428229][15792:15797] CHIP:TOO: Label: - [1650527361.428282][15792:15797] CHIP:TOO: FabricIndex: 3 - [1650527361.428335][15792:15797] CHIP:TOO: } - disabled: true - - - label: - "Step 9: Wait for the expiration of PIXIT.CADMIN.CwDuration seconds - that was set in step 6" - verification: | - Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 6 - disabled: true - - - label: - "Step 10: TH_CR1 re-opens a commissioning window on DUT_CE using a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.S.C01.Rsp - verification: | - On TH_CR1 send the below command - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - - Verify the Open commisioning window on the DUT_CE(all-cluster-app) Log: - - [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 - [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window - [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 - - Verify the Manual pairing code on the TH_CR1(chip-tool) Log: - - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - disabled: true - - - label: "Step 11: DNS-SD records shows DUT_CE advertising" - verification: | - On TH_CR1 send the below command - avahi-browse -rt _matterc._udp - + eth0 IPv6 2664ED6939FC373C _matterc._udp local - = eth0 IPv6 2664ED6939FC373C _matterc._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2753] - port = [5540] - txt = ["PI=" "PH=36" "CM=1" "D=3840" "T=1" "SAI=300" "SII=5000" "VP=65521+32769"] - ubuntu@ubuntu:~/may16_cntrl/connectedhomeip/examples/chip-tool/out/debug$ - disabled: true - - - label: - "Step 12: Before the expiration of PIXIT.CADMIN.CwDuration seconds - that was set in step 10, TH_CR3 opens a 2nd commissioning window on - DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration - seconds using BCM" - PICS: CADMIN.S.C01.Rsp - verification: | - On TH_CR3 send the below command - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 3 0 --timedInteractionTimeoutMs 1000 --commissioner-name gamma - - Verify that the DUT_CE is rejecting the opening of second commissioning session with the response status 0x01 failure - - - - [1650527565.991042][24618:24623] CHIP:DMG: { - [1650527565.991112][24618:24623] CHIP:DMG: EndpointId = 0x0, - [1650527565.991186][24618:24623] CHIP:DMG: ClusterId = 0x3c, - [1650527565.991257][24618:24623] CHIP:DMG: CommandId = 0x1, - [1650527565.991332][24618:24623] CHIP:DMG: }, - [1650527565.991441][24618:24623] CHIP:DMG: - [1650527565.991505][24618:24623] CHIP:DMG: StatusIB = - [1650527565.991574][24618:24623] CHIP:DMG: { - [1650527565.991645][24618:24623] CHIP:DMG: status = 0x01 (FAILURE), - [1650527565.991743][24618:24623] CHIP:DMG: cluster-status = 0x2, - [1650527565.991830][24618:24623] CHIP:DMG: }, - [1650527565.991918][24618:24623] CHIP:DMG: - [1650527565.991976][24618:24623] CHIP:DMG: }, - [1650527565.992061][24618:24623] CHIP:DMG: - [1650527565.992116][24618:24623] CHIP:DMG: }, - disabled: true - - - label: - "Step 13: Wait for the expiration of PIXIT.CADMIN.CwDuration seconds - that was set in step 11" - verification: | - Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 10 - disabled: true - - - label: "Step 14: TH_CR1 reads the list of Fabrics on DUT_CE" - PICS: OPCREDS.S.A0001 - verification: | - On TH_CR1 send the below command - - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - - Verify the list of Fabrics consists of FabricIndex 1, FabricIndex 2, FabricIndex 3 on TH_CR1(chip-tool) log - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 - [1678866402.096093][704851:704853] CHIP:TOO: Fabrics: 3 entries - [1678866402.096119][704851:704853] CHIP:TOO: [1]: { - [1678866402.096131][704851:704853] CHIP:TOO: RootPublicKey: 045F808373B5CED7FC2AFF99D98C2DEE6CA3889A9B078E87DAD9E263C9DEDB47AD7D31703024B72F4CB68A3017963128748FC7E97C6CBB419AF8AA914CE67D7457 - [1678866402.096141][704851:704853] CHIP:TOO: VendorID: 65521 - [1678866402.096147][704851:704853] CHIP:TOO: FabricID: 1 - [1678866402.096154][704851:704853] CHIP:TOO: NodeID: 1 - [1678866402.096160][704851:704853] CHIP:TOO: Label: - [1678866402.096167][704851:704853] CHIP:TOO: FabricIndex: 1 - [1678866402.096173][704851:704853] CHIP:TOO: } - [1678866402.096185][704851:704853] CHIP:TOO: [2]: { - [1678866402.096194][704851:704853] CHIP:TOO: RootPublicKey: 0458F2B4AD99F579EC01AA271EFDDF14526CE5222BADE218C703902544430F32FA9B951963C6C03713AC63E2D95785CFCD997946098957C4F5844BD2B3916B7148 - [1678866402.096201][704851:704853] CHIP:TOO: VendorID: 65521 - [1678866402.096207][704851:704853] CHIP:TOO: FabricID: 3 - [1678866402.096213][704851:704853] CHIP:TOO: NodeID: 3 - [1678866402.096219][704851:704853] CHIP:TOO: Label: - [1678866402.096224][704851:704853] CHIP:TOO: FabricIndex: 2 - [1678866402.096230][704851:704853] CHIP:TOO: } - [1678866402.096241][704851:704853] CHIP:TOO: [3]: { - [1678866402.096250][704851:704853] CHIP:TOO: RootPublicKey: 04CE10BA136D610089C4810BF963C354CE93BA61D267E8B9594977E3CC5FF30741941CE3D2A0A9E62A66AEF02CAA9F25A614F033D304D9F2ACF4204FAB68E8F773 - [1678866402.096257][704851:704853] CHIP:TOO: VendorID: 65521 - [1678866402.096263][704851:704853] CHIP:TOO: FabricID: 2 - [1678866402.096269][704851:704853] CHIP:TOO: NodeID: 2 - [1678866402.096274][704851:704853] CHIP:TOO: Label: - [1678866402.096280][704851:704853] CHIP:TOO: FabricIndex: 3 - [1678866402.096286][704851:704853] CHIP:TOO: } - disabled: true - - - label: - "Step 15: TH_CR1 opens a commissioning window on DUT_CE using a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.S.C01.Rsp - verification: | - On TH_CR1 send the below command - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - - Verify success response On TH_CR1(chip-tool) Log - - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - disabled: true - - - label: - "Step 16: Before the expiration of PIXIT.CADMIN.CwDuration seconds - that was set in step 14, TH_CR2 opens a second commissioning window on - DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration - seconds using BCM" - PICS: CADMIN.S.C01.Rsp - verification: | - On TH_CR2 send the below command - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta - - - Verify that the DUT_CE is rejecting the opening of second commissioning session with the response status 0x01 failure - - - - [1650527622.374682][15824:15829] CHIP:DMG: }, - [1650527622.374799][15824:15829] CHIP:DMG: - [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = - [1650527622.374979][15824:15829] CHIP:DMG: { - [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), - [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x2, - [1650527622.375320][15824:15829] CHIP:DMG: }, - [1650527622.375426][15824:15829] CHIP:DMG: - [1650527622.375527][15824:15829] CHIP:DMG: }, - [1650527622.375616][15824:15829] CHIP:DMG: - disabled: true diff --git a/src/app/tests/suites/manualTests.json b/src/app/tests/suites/manualTests.json index 3b0b354840e1c6..01d98213b3e279 100644 --- a/src/app/tests/suites/manualTests.json +++ b/src/app/tests/suites/manualTests.json @@ -171,7 +171,6 @@ "Test_TC_CADMIN_1_2", "Test_TC_CADMIN_1_7", "Test_TC_CADMIN_1_8", - "Test_TC_CADMIN_1_11", "Test_TC_CADMIN_1_12", "Test_TC_CADMIN_1_14", "Test_TC_CADMIN_1_15", diff --git a/src/app/util/attribute-storage.cpp b/src/app/util/attribute-storage.cpp index adc728157c3a1e..51c01c7e43fa80 100644 --- a/src/app/util/attribute-storage.cpp +++ b/src/app/util/attribute-storage.cpp @@ -93,6 +93,11 @@ uint8_t singletonAttributeData[ACTUAL_SINGLETONS_SIZE]; uint16_t emberEndpointCount = 0; +/// Determines a incremental unique index for ember +/// metadata that is increased whenever a structural change is made to the +/// ember metadata (e.g. changing dynamic endpoints or enabling/disabling endpoints) +unsigned emberMetadataStructureGeneration = 0; + // If we have attributes that are more than 4 bytes, then // we need this data block for the defaults #if (defined(GENERATED_DEFAULTS) && GENERATED_DEFAULTS_COUNT) @@ -315,6 +320,7 @@ CHIP_ERROR emberAfSetDynamicEndpoint(uint16_t index, EndpointId id, const EmberA // Now enable the endpoint. emberAfEndpointEnableDisable(id, true); + emberMetadataStructureGeneration++; return CHIP_NO_ERROR; } @@ -332,6 +338,7 @@ EndpointId emberAfClearDynamicEndpoint(uint16_t index) emAfEndpoints[index].endpoint = kInvalidEndpointId; } + emberMetadataStructureGeneration++; return ep; } @@ -944,9 +951,15 @@ bool emberAfEndpointEnableDisable(EndpointId endpoint, bool enable) emberAfGlobalInteractionModelAttributesChangedListener()); } + emberMetadataStructureGeneration++; return true; } +unsigned emberAfMetadataStructureGeneration() +{ + return emberMetadataStructureGeneration; +} + // Returns the index of a given endpoint. Does not consider disabled endpoints. uint16_t emberAfIndexFromEndpoint(EndpointId endpoint) { diff --git a/src/app/util/attribute-storage.h b/src/app/util/attribute-storage.h index 9d2dcc60bb3f05..711f6a7cff768d 100644 --- a/src/app/util/attribute-storage.h +++ b/src/app/util/attribute-storage.h @@ -312,6 +312,14 @@ void emberAfAttributeChanged(chip::EndpointId endpoint, chip::ClusterId clusterI /// any cluster data versions. void emberAfEndpointChanged(chip::EndpointId endpoint, chip::app::AttributesChangedListener * listener); +/// Maintains a increasing index of structural changes within ember +/// that determine if existing "indexes" and metadata pointers within ember +/// are still valid or not. +/// +/// Changes to metadata structure (e.g. endpoint enable/disable and dynamic endpoint changes) +/// are reflected in this generation count changing. +unsigned emberAfMetadataStructureGeneration(); + namespace chip { namespace app { diff --git a/src/app/util/mock/attribute-storage.cpp b/src/app/util/mock/attribute-storage.cpp index 256d0a3a880886..57f3d1e5216264 100644 --- a/src/app/util/mock/attribute-storage.cpp +++ b/src/app/util/mock/attribute-storage.cpp @@ -61,8 +61,9 @@ using namespace Clusters::Globals::Attributes; namespace { -DataVersion dataVersion = 0; -const MockNodeConfig * mockConfig = nullptr; +unsigned metadataStructureGeneration = 0; +DataVersion dataVersion = 0; +const MockNodeConfig * mockConfig = nullptr; const MockNodeConfig & DefaultMockNodeConfig() { @@ -342,6 +343,11 @@ void emberAfAttributeChanged(EndpointId endpoint, ClusterId clusterId, Attribute listener->MarkDirty(AttributePathParams(endpoint, clusterId, attributeId)); } +unsigned emberAfMetadataStructureGeneration() +{ + return metadataStructureGeneration; +} + namespace chip { namespace app { @@ -494,12 +500,14 @@ CHIP_ERROR ReadSingleMockClusterData(FabricIndex aAccessingFabricIndex, const Co void SetMockNodeConfig(const MockNodeConfig & config) { + metadataStructureGeneration++; mockConfig = &config; } /// Resets the mock attribute storage to the default configuration. void ResetMockNodeConfig() { + metadataStructureGeneration++; mockConfig = nullptr; } diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 11674124680fc0..076dc946e39898 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -23,6 +23,7 @@ # Users are not expected to import this file, instead, users can use import chip.clusters, # which will import all symbols from this file and can get a readable, pretty naming like # clusters.OnOff.commands.OnCommand +from __future__ import annotations import typing from dataclasses import dataclass, field @@ -490,14 +491,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - identifyTime: 'uint' = None - identifyType: 'Identify.Enums.IdentifyTypeEnum' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + identifyTime: uint = 0 + identifyType: Identify.Enums.IdentifyTypeEnum = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class EffectIdentifierEnum(MatterIntEnum): @@ -540,7 +541,7 @@ class Identify(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000003 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -549,14 +550,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="identifyTime", Tag=0, Type=uint), ]) - identifyTime: 'uint' = 0 + identifyTime: uint = 0 @dataclass class TriggerEffect(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000003 command_id: typing.ClassVar[int] = 0x00000040 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -566,8 +567,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="effectVariant", Tag=1, Type=Identify.Enums.EffectVariantEnum), ]) - effectIdentifier: 'Identify.Enums.EffectIdentifierEnum' = 0 - effectVariant: 'Identify.Enums.EffectVariantEnum' = 0 + effectIdentifier: Identify.Enums.EffectIdentifierEnum = 0 + effectVariant: Identify.Enums.EffectVariantEnum = 0 class Attributes: @dataclass @@ -584,7 +585,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class IdentifyType(ClusterAttributeDescriptor): @@ -600,7 +601,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=Identify.Enums.IdentifyTypeEnum) - value: 'Identify.Enums.IdentifyTypeEnum' = 0 + value: Identify.Enums.IdentifyTypeEnum = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -616,7 +617,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -632,7 +633,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -648,7 +649,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -664,7 +665,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -680,7 +681,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -696,7 +697,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -716,13 +717,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - nameSupport: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + nameSupport: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -747,15 +748,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupName", Tag=1, Type=str), ]) - groupID: 'uint' = 0 - groupName: 'str' = "" + groupID: uint = 0 + groupName: str = "" @dataclass class AddGroupResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000004 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -765,8 +766,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupID", Tag=1, Type=uint), ]) - status: 'uint' = 0 - groupID: 'uint' = 0 + status: uint = 0 + groupID: uint = 0 @dataclass class ViewGroup(ClusterCommand): @@ -782,14 +783,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupID", Tag=0, Type=uint), ]) - groupID: 'uint' = 0 + groupID: uint = 0 @dataclass class ViewGroupResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000004 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -800,9 +801,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupName", Tag=2, Type=str), ]) - status: 'uint' = 0 - groupID: 'uint' = 0 - groupName: 'str' = "" + status: uint = 0 + groupID: uint = 0 + groupName: str = "" @dataclass class GetGroupMembership(ClusterCommand): @@ -818,14 +819,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupList", Tag=0, Type=typing.List[uint]), ]) - groupList: 'typing.List[uint]' = field(default_factory=lambda: []) + groupList: typing.List[uint] = field(default_factory=lambda: []) @dataclass class GetGroupMembershipResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000004 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -835,8 +836,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupList", Tag=1, Type=typing.List[uint]), ]) - capacity: 'typing.Union[Nullable, uint]' = NullValue - groupList: 'typing.List[uint]' = field(default_factory=lambda: []) + capacity: typing.Union[Nullable, uint] = NullValue + groupList: typing.List[uint] = field(default_factory=lambda: []) @dataclass class RemoveGroup(ClusterCommand): @@ -852,14 +853,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupID", Tag=0, Type=uint), ]) - groupID: 'uint' = 0 + groupID: uint = 0 @dataclass class RemoveGroupResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000004 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -869,15 +870,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupID", Tag=1, Type=uint), ]) - status: 'uint' = 0 - groupID: 'uint' = 0 + status: uint = 0 + groupID: uint = 0 @dataclass class RemoveAllGroups(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000004 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -890,7 +891,7 @@ class AddGroupIfIdentifying(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000004 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -900,8 +901,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupName", Tag=1, Type=str), ]) - groupID: 'uint' = 0 - groupName: 'str' = "" + groupID: uint = 0 + groupName: str = "" class Attributes: @dataclass @@ -918,7 +919,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -934,7 +935,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -950,7 +951,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -966,7 +967,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -982,7 +983,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -998,7 +999,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -1014,7 +1015,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -1038,17 +1039,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - onOff: 'bool' = None - globalSceneControl: 'typing.Optional[bool]' = None - onTime: 'typing.Optional[uint]' = None - offWaitTime: 'typing.Optional[uint]' = None - startUpOnOff: 'typing.Union[None, Nullable, OnOff.Enums.StartUpOnOffEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + onOff: bool = False + globalSceneControl: typing.Optional[bool] = None + onTime: typing.Optional[uint] = None + offWaitTime: typing.Optional[uint] = None + startUpOnOff: typing.Union[None, Nullable, OnOff.Enums.StartUpOnOffEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class DelayedAllOffEffectVariantEnum(MatterIntEnum): @@ -1103,7 +1104,7 @@ class Off(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000006 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1116,7 +1117,7 @@ class On(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000006 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1129,7 +1130,7 @@ class Toggle(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000006 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1142,7 +1143,7 @@ class OffWithEffect(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000006 command_id: typing.ClassVar[int] = 0x00000040 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1152,15 +1153,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="effectVariant", Tag=1, Type=uint), ]) - effectIdentifier: 'OnOff.Enums.EffectIdentifierEnum' = 0 - effectVariant: 'uint' = 0 + effectIdentifier: OnOff.Enums.EffectIdentifierEnum = 0 + effectVariant: uint = 0 @dataclass class OnWithRecallGlobalScene(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000006 command_id: typing.ClassVar[int] = 0x00000041 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1173,7 +1174,7 @@ class OnWithTimedOff(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000006 command_id: typing.ClassVar[int] = 0x00000042 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1184,9 +1185,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="offWaitTime", Tag=2, Type=uint), ]) - onOffControl: 'uint' = 0 - onTime: 'uint' = 0 - offWaitTime: 'uint' = 0 + onOffControl: uint = 0 + onTime: uint = 0 + offWaitTime: uint = 0 class Attributes: @dataclass @@ -1203,7 +1204,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class GlobalSceneControl(ClusterAttributeDescriptor): @@ -1219,7 +1220,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class OnTime(ClusterAttributeDescriptor): @@ -1235,7 +1236,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class OffWaitTime(ClusterAttributeDescriptor): @@ -1251,7 +1252,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class StartUpOnOff(ClusterAttributeDescriptor): @@ -1267,7 +1268,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, OnOff.Enums.StartUpOnOffEnum]) - value: 'typing.Union[None, Nullable, OnOff.Enums.StartUpOnOffEnum]' = None + value: typing.Union[None, Nullable, OnOff.Enums.StartUpOnOffEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -1283,7 +1284,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -1299,7 +1300,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -1315,7 +1316,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -1331,7 +1332,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -1347,7 +1348,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -1363,7 +1364,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -1396,26 +1397,26 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - currentLevel: 'typing.Union[Nullable, uint]' = None - remainingTime: 'typing.Optional[uint]' = None - minLevel: 'typing.Optional[uint]' = None - maxLevel: 'typing.Optional[uint]' = None - currentFrequency: 'typing.Optional[uint]' = None - minFrequency: 'typing.Optional[uint]' = None - maxFrequency: 'typing.Optional[uint]' = None - options: 'uint' = None - onOffTransitionTime: 'typing.Optional[uint]' = None - onLevel: 'typing.Union[Nullable, uint]' = None - onTransitionTime: 'typing.Union[None, Nullable, uint]' = None - offTransitionTime: 'typing.Union[None, Nullable, uint]' = None - defaultMoveRate: 'typing.Union[None, Nullable, uint]' = None - startUpCurrentLevel: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + currentLevel: typing.Union[Nullable, uint] = NullValue + remainingTime: typing.Optional[uint] = None + minLevel: typing.Optional[uint] = None + maxLevel: typing.Optional[uint] = None + currentFrequency: typing.Optional[uint] = None + minFrequency: typing.Optional[uint] = None + maxFrequency: typing.Optional[uint] = None + options: uint = 0 + onOffTransitionTime: typing.Optional[uint] = None + onLevel: typing.Union[Nullable, uint] = NullValue + onTransitionTime: typing.Union[None, Nullable, uint] = None + offTransitionTime: typing.Union[None, Nullable, uint] = None + defaultMoveRate: typing.Union[None, Nullable, uint] = None + startUpCurrentLevel: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class MoveModeEnum(MatterIntEnum): @@ -1452,7 +1453,7 @@ class MoveToLevel(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000008 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1464,17 +1465,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - level: 'uint' = 0 - transitionTime: 'typing.Union[Nullable, uint]' = NullValue - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + level: uint = 0 + transitionTime: typing.Union[Nullable, uint] = NullValue + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class Move(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000008 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1486,17 +1487,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - moveMode: 'LevelControl.Enums.MoveModeEnum' = 0 - rate: 'typing.Union[Nullable, uint]' = NullValue - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + moveMode: LevelControl.Enums.MoveModeEnum = 0 + rate: typing.Union[Nullable, uint] = NullValue + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class Step(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000008 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1509,18 +1510,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - stepMode: 'LevelControl.Enums.StepModeEnum' = 0 - stepSize: 'uint' = 0 - transitionTime: 'typing.Union[Nullable, uint]' = NullValue - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + stepMode: LevelControl.Enums.StepModeEnum = 0 + stepSize: uint = 0 + transitionTime: typing.Union[Nullable, uint] = NullValue + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class Stop(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000008 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1530,15 +1531,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=1, Type=uint), ]) - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveToLevelWithOnOff(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000008 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1550,17 +1551,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - level: 'uint' = 0 - transitionTime: 'typing.Union[Nullable, uint]' = NullValue - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + level: uint = 0 + transitionTime: typing.Union[Nullable, uint] = NullValue + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveWithOnOff(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000008 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1572,17 +1573,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - moveMode: 'LevelControl.Enums.MoveModeEnum' = 0 - rate: 'typing.Union[Nullable, uint]' = NullValue - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + moveMode: LevelControl.Enums.MoveModeEnum = 0 + rate: typing.Union[Nullable, uint] = NullValue + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class StepWithOnOff(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000008 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1595,18 +1596,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - stepMode: 'LevelControl.Enums.StepModeEnum' = 0 - stepSize: 'uint' = 0 - transitionTime: 'typing.Union[Nullable, uint]' = NullValue - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + stepMode: LevelControl.Enums.StepModeEnum = 0 + stepSize: uint = 0 + transitionTime: typing.Union[Nullable, uint] = NullValue + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class StopWithOnOff(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000008 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1616,15 +1617,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=1, Type=uint), ]) - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveToClosestFrequency(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000008 command_id: typing.ClassVar[int] = 0x00000008 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -1633,7 +1634,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="frequency", Tag=0, Type=uint), ]) - frequency: 'uint' = 0 + frequency: uint = 0 class Attributes: @dataclass @@ -1650,7 +1651,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class RemainingTime(ClusterAttributeDescriptor): @@ -1666,7 +1667,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MinLevel(ClusterAttributeDescriptor): @@ -1682,7 +1683,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MaxLevel(ClusterAttributeDescriptor): @@ -1698,7 +1699,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CurrentFrequency(ClusterAttributeDescriptor): @@ -1714,7 +1715,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MinFrequency(ClusterAttributeDescriptor): @@ -1730,7 +1731,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MaxFrequency(ClusterAttributeDescriptor): @@ -1746,7 +1747,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Options(ClusterAttributeDescriptor): @@ -1762,7 +1763,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class OnOffTransitionTime(ClusterAttributeDescriptor): @@ -1778,7 +1779,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class OnLevel(ClusterAttributeDescriptor): @@ -1794,7 +1795,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class OnTransitionTime(ClusterAttributeDescriptor): @@ -1810,7 +1811,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OffTransitionTime(ClusterAttributeDescriptor): @@ -1826,7 +1827,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class DefaultMoveRate(ClusterAttributeDescriptor): @@ -1842,7 +1843,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class StartUpCurrentLevel(ClusterAttributeDescriptor): @@ -1858,7 +1859,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -1874,7 +1875,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -1890,7 +1891,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -1906,7 +1907,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -1922,7 +1923,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -1938,7 +1939,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -1954,7 +1955,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -1973,12 +1974,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -1995,7 +1996,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -2011,7 +2012,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -2027,7 +2028,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -2043,7 +2044,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -2059,7 +2060,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -2075,7 +2076,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -2099,17 +2100,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - deviceTypeList: 'typing.List[Descriptor.Structs.DeviceTypeStruct]' = None - serverList: 'typing.List[uint]' = None - clientList: 'typing.List[uint]' = None - partsList: 'typing.List[uint]' = None - tagList: 'typing.Optional[typing.List[Descriptor.Structs.SemanticTagStruct]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + deviceTypeList: typing.List[Descriptor.Structs.DeviceTypeStruct] = field(default_factory=lambda: []) + serverList: typing.List[uint] = field(default_factory=lambda: []) + clientList: typing.List[uint] = field(default_factory=lambda: []) + partsList: typing.List[uint] = field(default_factory=lambda: []) + tagList: typing.Optional[typing.List[Descriptor.Structs.SemanticTagStruct]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -2161,7 +2162,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[Descriptor.Structs.DeviceTypeStruct]) - value: 'typing.List[Descriptor.Structs.DeviceTypeStruct]' = field(default_factory=lambda: []) + value: typing.List[Descriptor.Structs.DeviceTypeStruct] = field(default_factory=lambda: []) @dataclass class ServerList(ClusterAttributeDescriptor): @@ -2177,7 +2178,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class ClientList(ClusterAttributeDescriptor): @@ -2193,7 +2194,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class PartsList(ClusterAttributeDescriptor): @@ -2209,7 +2210,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class TagList(ClusterAttributeDescriptor): @@ -2225,7 +2226,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[Descriptor.Structs.SemanticTagStruct]]) - value: 'typing.Optional[typing.List[Descriptor.Structs.SemanticTagStruct]]' = None + value: typing.Optional[typing.List[Descriptor.Structs.SemanticTagStruct]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -2241,7 +2242,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -2257,7 +2258,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -2273,7 +2274,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -2289,7 +2290,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -2305,7 +2306,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -2321,7 +2322,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -2341,13 +2342,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - binding: 'typing.List[Binding.Structs.TargetStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + binding: typing.List[Binding.Structs.TargetStruct] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Structs: @dataclass @@ -2384,7 +2385,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[Binding.Structs.TargetStruct]) - value: 'typing.List[Binding.Structs.TargetStruct]' = field(default_factory=lambda: []) + value: typing.List[Binding.Structs.TargetStruct] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -2400,7 +2401,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -2416,7 +2417,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -2432,7 +2433,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -2448,7 +2449,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -2464,7 +2465,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -2480,7 +2481,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -2506,19 +2507,19 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - acl: 'typing.List[AccessControl.Structs.AccessControlEntryStruct]' = None - extension: 'typing.Optional[typing.List[AccessControl.Structs.AccessControlExtensionStruct]]' = None - subjectsPerAccessControlEntry: 'uint' = None - targetsPerAccessControlEntry: 'uint' = None - accessControlEntriesPerFabric: 'uint' = None - commissioningARL: 'typing.Optional[typing.List[AccessControl.Structs.CommissioningAccessRestrictionEntryStruct]]' = None - arl: 'typing.Optional[typing.List[AccessControl.Structs.AccessRestrictionEntryStruct]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + acl: typing.List[AccessControl.Structs.AccessControlEntryStruct] = field(default_factory=lambda: []) + extension: typing.Optional[typing.List[AccessControl.Structs.AccessControlExtensionStruct]] = None + subjectsPerAccessControlEntry: uint = 0 + targetsPerAccessControlEntry: uint = 0 + accessControlEntriesPerFabric: uint = 0 + commissioningARL: typing.Optional[typing.List[AccessControl.Structs.CommissioningAccessRestrictionEntryStruct]] = None + arl: typing.Optional[typing.List[AccessControl.Structs.AccessRestrictionEntryStruct]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class AccessControlEntryAuthModeEnum(MatterIntEnum): @@ -2677,14 +2678,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arl", Tag=0, Type=typing.List[AccessControl.Structs.CommissioningAccessRestrictionEntryStruct]), ]) - arl: 'typing.List[AccessControl.Structs.CommissioningAccessRestrictionEntryStruct]' = field(default_factory=lambda: []) + arl: typing.List[AccessControl.Structs.CommissioningAccessRestrictionEntryStruct] = field(default_factory=lambda: []) @dataclass class ReviewFabricRestrictionsResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000001F command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -2693,7 +2694,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="token", Tag=0, Type=uint), ]) - token: 'uint' = 0 + token: uint = 0 class Attributes: @dataclass @@ -2710,7 +2711,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[AccessControl.Structs.AccessControlEntryStruct]) - value: 'typing.List[AccessControl.Structs.AccessControlEntryStruct]' = field(default_factory=lambda: []) + value: typing.List[AccessControl.Structs.AccessControlEntryStruct] = field(default_factory=lambda: []) @dataclass class Extension(ClusterAttributeDescriptor): @@ -2726,7 +2727,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[AccessControl.Structs.AccessControlExtensionStruct]]) - value: 'typing.Optional[typing.List[AccessControl.Structs.AccessControlExtensionStruct]]' = None + value: typing.Optional[typing.List[AccessControl.Structs.AccessControlExtensionStruct]] = None @dataclass class SubjectsPerAccessControlEntry(ClusterAttributeDescriptor): @@ -2742,7 +2743,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class TargetsPerAccessControlEntry(ClusterAttributeDescriptor): @@ -2758,7 +2759,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class AccessControlEntriesPerFabric(ClusterAttributeDescriptor): @@ -2774,7 +2775,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class CommissioningARL(ClusterAttributeDescriptor): @@ -2790,7 +2791,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[AccessControl.Structs.CommissioningAccessRestrictionEntryStruct]]) - value: 'typing.Optional[typing.List[AccessControl.Structs.CommissioningAccessRestrictionEntryStruct]]' = None + value: typing.Optional[typing.List[AccessControl.Structs.CommissioningAccessRestrictionEntryStruct]] = None @dataclass class Arl(ClusterAttributeDescriptor): @@ -2806,7 +2807,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[AccessControl.Structs.AccessRestrictionEntryStruct]]) - value: 'typing.Optional[typing.List[AccessControl.Structs.AccessRestrictionEntryStruct]]' = None + value: typing.Optional[typing.List[AccessControl.Structs.AccessRestrictionEntryStruct]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -2822,7 +2823,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -2838,7 +2839,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -2854,7 +2855,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -2870,7 +2871,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -2886,7 +2887,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -2902,7 +2903,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -2926,11 +2927,11 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=254, Type=uint), ]) - adminNodeID: 'typing.Union[Nullable, uint]' = NullValue - adminPasscodeID: 'typing.Union[Nullable, uint]' = NullValue - changeType: 'AccessControl.Enums.ChangeTypeEnum' = 0 - latestValue: 'typing.Union[Nullable, AccessControl.Structs.AccessControlEntryStruct]' = NullValue - fabricIndex: 'uint' = 0 + adminNodeID: typing.Union[Nullable, uint] = NullValue + adminPasscodeID: typing.Union[Nullable, uint] = NullValue + changeType: AccessControl.Enums.ChangeTypeEnum = 0 + latestValue: typing.Union[Nullable, AccessControl.Structs.AccessControlEntryStruct] = NullValue + fabricIndex: uint = 0 @dataclass class AccessControlExtensionChanged(ClusterEvent): @@ -2953,11 +2954,11 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=254, Type=uint), ]) - adminNodeID: 'typing.Union[Nullable, uint]' = NullValue - adminPasscodeID: 'typing.Union[Nullable, uint]' = NullValue - changeType: 'AccessControl.Enums.ChangeTypeEnum' = 0 - latestValue: 'typing.Union[Nullable, AccessControl.Structs.AccessControlExtensionStruct]' = NullValue - fabricIndex: 'uint' = 0 + adminNodeID: typing.Union[Nullable, uint] = NullValue + adminPasscodeID: typing.Union[Nullable, uint] = NullValue + changeType: AccessControl.Enums.ChangeTypeEnum = 0 + latestValue: typing.Union[Nullable, AccessControl.Structs.AccessControlExtensionStruct] = NullValue + fabricIndex: uint = 0 @dataclass class FabricRestrictionReviewUpdate(ClusterEvent): @@ -2979,10 +2980,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=254, Type=uint), ]) - token: 'uint' = 0 - instruction: 'typing.Optional[str]' = None - ARLRequestFlowUrl: 'typing.Optional[str]' = None - fabricIndex: 'uint' = 0 + token: uint = 0 + instruction: typing.Optional[str] = None + ARLRequestFlowUrl: typing.Optional[str] = None + fabricIndex: uint = 0 @dataclass @@ -3004,15 +3005,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - actionList: 'typing.List[Actions.Structs.ActionStruct]' = None - endpointLists: 'typing.List[Actions.Structs.EndpointListStruct]' = None - setupURL: 'typing.Optional[str]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + actionList: typing.List[Actions.Structs.ActionStruct] = field(default_factory=lambda: []) + endpointLists: typing.List[Actions.Structs.EndpointListStruct] = field(default_factory=lambda: []) + setupURL: typing.Optional[str] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ActionErrorEnum(MatterIntEnum): @@ -3119,7 +3120,7 @@ class InstantAction(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3129,15 +3130,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="invokeID", Tag=1, Type=typing.Optional[uint]), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None + actionID: uint = 0 + invokeID: typing.Optional[uint] = None @dataclass class InstantActionWithTransition(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3148,16 +3149,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="transitionTime", Tag=2, Type=uint), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None - transitionTime: 'uint' = 0 + actionID: uint = 0 + invokeID: typing.Optional[uint] = None + transitionTime: uint = 0 @dataclass class StartAction(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3167,15 +3168,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="invokeID", Tag=1, Type=typing.Optional[uint]), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None + actionID: uint = 0 + invokeID: typing.Optional[uint] = None @dataclass class StartActionWithDuration(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3186,16 +3187,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="duration", Tag=2, Type=uint), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None - duration: 'uint' = 0 + actionID: uint = 0 + invokeID: typing.Optional[uint] = None + duration: uint = 0 @dataclass class StopAction(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3205,15 +3206,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="invokeID", Tag=1, Type=typing.Optional[uint]), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None + actionID: uint = 0 + invokeID: typing.Optional[uint] = None @dataclass class PauseAction(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3223,15 +3224,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="invokeID", Tag=1, Type=typing.Optional[uint]), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None + actionID: uint = 0 + invokeID: typing.Optional[uint] = None @dataclass class PauseActionWithDuration(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3242,16 +3243,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="duration", Tag=2, Type=uint), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None - duration: 'uint' = 0 + actionID: uint = 0 + invokeID: typing.Optional[uint] = None + duration: uint = 0 @dataclass class ResumeAction(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3261,15 +3262,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="invokeID", Tag=1, Type=typing.Optional[uint]), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None + actionID: uint = 0 + invokeID: typing.Optional[uint] = None @dataclass class EnableAction(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000008 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3279,15 +3280,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="invokeID", Tag=1, Type=typing.Optional[uint]), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None + actionID: uint = 0 + invokeID: typing.Optional[uint] = None @dataclass class EnableActionWithDuration(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x00000009 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3298,16 +3299,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="duration", Tag=2, Type=uint), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None - duration: 'uint' = 0 + actionID: uint = 0 + invokeID: typing.Optional[uint] = None + duration: uint = 0 @dataclass class DisableAction(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x0000000A is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3317,15 +3318,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="invokeID", Tag=1, Type=typing.Optional[uint]), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None + actionID: uint = 0 + invokeID: typing.Optional[uint] = None @dataclass class DisableActionWithDuration(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000025 command_id: typing.ClassVar[int] = 0x0000000B is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3336,9 +3337,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="duration", Tag=2, Type=uint), ]) - actionID: 'uint' = 0 - invokeID: 'typing.Optional[uint]' = None - duration: 'uint' = 0 + actionID: uint = 0 + invokeID: typing.Optional[uint] = None + duration: uint = 0 class Attributes: @dataclass @@ -3355,7 +3356,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[Actions.Structs.ActionStruct]) - value: 'typing.List[Actions.Structs.ActionStruct]' = field(default_factory=lambda: []) + value: typing.List[Actions.Structs.ActionStruct] = field(default_factory=lambda: []) @dataclass class EndpointLists(ClusterAttributeDescriptor): @@ -3371,7 +3372,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[Actions.Structs.EndpointListStruct]) - value: 'typing.List[Actions.Structs.EndpointListStruct]' = field(default_factory=lambda: []) + value: typing.List[Actions.Structs.EndpointListStruct] = field(default_factory=lambda: []) @dataclass class SetupURL(ClusterAttributeDescriptor): @@ -3387,7 +3388,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -3403,7 +3404,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -3419,7 +3420,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -3435,7 +3436,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -3451,7 +3452,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -3467,7 +3468,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -3483,7 +3484,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -3505,9 +3506,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newState", Tag=2, Type=Actions.Enums.ActionStateEnum), ]) - actionID: 'uint' = 0 - invokeID: 'uint' = 0 - newState: 'Actions.Enums.ActionStateEnum' = 0 + actionID: uint = 0 + invokeID: uint = 0 + newState: Actions.Enums.ActionStateEnum = 0 @dataclass class ActionFailed(ClusterEvent): @@ -3529,10 +3530,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="error", Tag=3, Type=Actions.Enums.ActionErrorEnum), ]) - actionID: 'uint' = 0 - invokeID: 'uint' = 0 - newState: 'Actions.Enums.ActionStateEnum' = 0 - error: 'Actions.Enums.ActionErrorEnum' = 0 + actionID: uint = 0 + invokeID: uint = 0 + newState: Actions.Enums.ActionStateEnum = 0 + error: Actions.Enums.ActionErrorEnum = 0 @dataclass @@ -3574,35 +3575,35 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - dataModelRevision: 'uint' = None - vendorName: 'str' = None - vendorID: 'uint' = None - productName: 'str' = None - productID: 'uint' = None - nodeLabel: 'str' = None - location: 'str' = None - hardwareVersion: 'uint' = None - hardwareVersionString: 'str' = None - softwareVersion: 'uint' = None - softwareVersionString: 'str' = None - manufacturingDate: 'typing.Optional[str]' = None - partNumber: 'typing.Optional[str]' = None - productURL: 'typing.Optional[str]' = None - productLabel: 'typing.Optional[str]' = None - serialNumber: 'typing.Optional[str]' = None - localConfigDisabled: 'typing.Optional[bool]' = None - reachable: 'typing.Optional[bool]' = None - uniqueID: 'str' = None - capabilityMinima: 'BasicInformation.Structs.CapabilityMinimaStruct' = None - productAppearance: 'typing.Optional[BasicInformation.Structs.ProductAppearanceStruct]' = None - specificationVersion: 'uint' = None - maxPathsPerInvoke: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + dataModelRevision: uint = 0 + vendorName: str = "" + vendorID: uint = 0 + productName: str = "" + productID: uint = 0 + nodeLabel: str = "" + location: str = "" + hardwareVersion: uint = 0 + hardwareVersionString: str = "" + softwareVersion: uint = 0 + softwareVersionString: str = "" + manufacturingDate: typing.Optional[str] = None + partNumber: typing.Optional[str] = None + productURL: typing.Optional[str] = None + productLabel: typing.Optional[str] = None + serialNumber: typing.Optional[str] = None + localConfigDisabled: typing.Optional[bool] = None + reachable: typing.Optional[bool] = None + uniqueID: str = "" + capabilityMinima: BasicInformation.Structs.CapabilityMinimaStruct = field(default_factory=lambda: BasicInformation.Structs.CapabilityMinimaStruct()) + productAppearance: typing.Optional[BasicInformation.Structs.ProductAppearanceStruct] = None + specificationVersion: uint = 0 + maxPathsPerInvoke: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ColorEnum(MatterIntEnum): @@ -3679,7 +3680,7 @@ class MfgSpecificPing(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000028 command_id: typing.ClassVar[int] = 0x10020000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -3702,7 +3703,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class VendorName(ClusterAttributeDescriptor): @@ -3718,7 +3719,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class VendorID(ClusterAttributeDescriptor): @@ -3734,7 +3735,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ProductName(ClusterAttributeDescriptor): @@ -3750,7 +3751,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class ProductID(ClusterAttributeDescriptor): @@ -3766,7 +3767,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class NodeLabel(ClusterAttributeDescriptor): @@ -3782,7 +3783,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class Location(ClusterAttributeDescriptor): @@ -3798,7 +3799,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class HardwareVersion(ClusterAttributeDescriptor): @@ -3814,7 +3815,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class HardwareVersionString(ClusterAttributeDescriptor): @@ -3830,7 +3831,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class SoftwareVersion(ClusterAttributeDescriptor): @@ -3846,7 +3847,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class SoftwareVersionString(ClusterAttributeDescriptor): @@ -3862,7 +3863,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class ManufacturingDate(ClusterAttributeDescriptor): @@ -3878,7 +3879,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class PartNumber(ClusterAttributeDescriptor): @@ -3894,7 +3895,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class ProductURL(ClusterAttributeDescriptor): @@ -3910,7 +3911,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class ProductLabel(ClusterAttributeDescriptor): @@ -3926,7 +3927,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class SerialNumber(ClusterAttributeDescriptor): @@ -3942,7 +3943,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class LocalConfigDisabled(ClusterAttributeDescriptor): @@ -3958,7 +3959,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class Reachable(ClusterAttributeDescriptor): @@ -3974,7 +3975,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class UniqueID(ClusterAttributeDescriptor): @@ -3990,7 +3991,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class CapabilityMinima(ClusterAttributeDescriptor): @@ -4006,7 +4007,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=BasicInformation.Structs.CapabilityMinimaStruct) - value: 'BasicInformation.Structs.CapabilityMinimaStruct' = field(default_factory=lambda: BasicInformation.Structs.CapabilityMinimaStruct()) + value: BasicInformation.Structs.CapabilityMinimaStruct = field(default_factory=lambda: BasicInformation.Structs.CapabilityMinimaStruct()) @dataclass class ProductAppearance(ClusterAttributeDescriptor): @@ -4022,7 +4023,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[BasicInformation.Structs.ProductAppearanceStruct]) - value: 'typing.Optional[BasicInformation.Structs.ProductAppearanceStruct]' = None + value: typing.Optional[BasicInformation.Structs.ProductAppearanceStruct] = None @dataclass class SpecificationVersion(ClusterAttributeDescriptor): @@ -4038,7 +4039,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class MaxPathsPerInvoke(ClusterAttributeDescriptor): @@ -4054,7 +4055,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -4070,7 +4071,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -4086,7 +4087,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -4102,7 +4103,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -4118,7 +4119,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -4134,7 +4135,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -4150,7 +4151,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -4170,7 +4171,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="softwareVersion", Tag=0, Type=uint), ]) - softwareVersion: 'uint' = 0 + softwareVersion: uint = 0 @dataclass class ShutDown(ClusterEvent): @@ -4205,7 +4206,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=0, Type=uint), ]) - fabricIndex: 'uint' = 0 + fabricIndex: uint = 0 @dataclass class ReachableChanged(ClusterEvent): @@ -4224,7 +4225,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="reachableNewValue", Tag=0, Type=bool), ]) - reachableNewValue: 'bool' = False + reachableNewValue: bool = False @dataclass @@ -4243,12 +4244,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ApplyUpdateActionEnum(MatterIntEnum): @@ -4305,21 +4306,21 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="metadataForProvider", Tag=7, Type=typing.Optional[bytes]), ]) - vendorID: 'uint' = 0 - productID: 'uint' = 0 - softwareVersion: 'uint' = 0 - protocolsSupported: 'typing.List[OtaSoftwareUpdateProvider.Enums.DownloadProtocolEnum]' = field(default_factory=lambda: []) - hardwareVersion: 'typing.Optional[uint]' = None - location: 'typing.Optional[str]' = None - requestorCanConsent: 'typing.Optional[bool]' = None - metadataForProvider: 'typing.Optional[bytes]' = None + vendorID: uint = 0 + productID: uint = 0 + softwareVersion: uint = 0 + protocolsSupported: typing.List[OtaSoftwareUpdateProvider.Enums.DownloadProtocolEnum] = field(default_factory=lambda: []) + hardwareVersion: typing.Optional[uint] = None + location: typing.Optional[str] = None + requestorCanConsent: typing.Optional[bool] = None + metadataForProvider: typing.Optional[bytes] = None @dataclass class QueryImageResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000029 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -4335,14 +4336,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="metadataForRequestor", Tag=7, Type=typing.Optional[bytes]), ]) - status: 'OtaSoftwareUpdateProvider.Enums.StatusEnum' = 0 - delayedActionTime: 'typing.Optional[uint]' = None - imageURI: 'typing.Optional[str]' = None - softwareVersion: 'typing.Optional[uint]' = None - softwareVersionString: 'typing.Optional[str]' = None - updateToken: 'typing.Optional[bytes]' = None - userConsentNeeded: 'typing.Optional[bool]' = None - metadataForRequestor: 'typing.Optional[bytes]' = None + status: OtaSoftwareUpdateProvider.Enums.StatusEnum = 0 + delayedActionTime: typing.Optional[uint] = None + imageURI: typing.Optional[str] = None + softwareVersion: typing.Optional[uint] = None + softwareVersionString: typing.Optional[str] = None + updateToken: typing.Optional[bytes] = None + userConsentNeeded: typing.Optional[bool] = None + metadataForRequestor: typing.Optional[bytes] = None @dataclass class ApplyUpdateRequest(ClusterCommand): @@ -4359,15 +4360,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newVersion", Tag=1, Type=uint), ]) - updateToken: 'bytes' = b"" - newVersion: 'uint' = 0 + updateToken: bytes = b"" + newVersion: uint = 0 @dataclass class ApplyUpdateResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000029 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -4377,15 +4378,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="delayedActionTime", Tag=1, Type=uint), ]) - action: 'OtaSoftwareUpdateProvider.Enums.ApplyUpdateActionEnum' = 0 - delayedActionTime: 'uint' = 0 + action: OtaSoftwareUpdateProvider.Enums.ApplyUpdateActionEnum = 0 + delayedActionTime: uint = 0 @dataclass class NotifyUpdateApplied(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000029 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -4395,8 +4396,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="softwareVersion", Tag=1, Type=uint), ]) - updateToken: 'bytes' = b"" - softwareVersion: 'uint' = 0 + updateToken: bytes = b"" + softwareVersion: uint = 0 class Attributes: @dataclass @@ -4413,7 +4414,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -4429,7 +4430,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -4445,7 +4446,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -4461,7 +4462,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -4477,7 +4478,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -4493,7 +4494,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -4516,16 +4517,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - defaultOTAProviders: 'typing.List[OtaSoftwareUpdateRequestor.Structs.ProviderLocation]' = None - updatePossible: 'bool' = None - updateState: 'OtaSoftwareUpdateRequestor.Enums.UpdateStateEnum' = None - updateStateProgress: 'typing.Union[Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + defaultOTAProviders: typing.List[OtaSoftwareUpdateRequestor.Structs.ProviderLocation] = field(default_factory=lambda: []) + updatePossible: bool = False + updateState: OtaSoftwareUpdateRequestor.Enums.UpdateStateEnum = 0 + updateStateProgress: typing.Union[Nullable, uint] = NullValue + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class AnnouncementReasonEnum(MatterIntEnum): @@ -4588,7 +4589,7 @@ class AnnounceOTAProvider(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000002A command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -4601,11 +4602,11 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="endpoint", Tag=4, Type=uint), ]) - providerNodeID: 'uint' = 0 - vendorID: 'uint' = 0 - announcementReason: 'OtaSoftwareUpdateRequestor.Enums.AnnouncementReasonEnum' = 0 - metadataForNode: 'typing.Optional[bytes]' = None - endpoint: 'uint' = 0 + providerNodeID: uint = 0 + vendorID: uint = 0 + announcementReason: OtaSoftwareUpdateRequestor.Enums.AnnouncementReasonEnum = 0 + metadataForNode: typing.Optional[bytes] = None + endpoint: uint = 0 class Attributes: @dataclass @@ -4622,7 +4623,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[OtaSoftwareUpdateRequestor.Structs.ProviderLocation]) - value: 'typing.List[OtaSoftwareUpdateRequestor.Structs.ProviderLocation]' = field(default_factory=lambda: []) + value: typing.List[OtaSoftwareUpdateRequestor.Structs.ProviderLocation] = field(default_factory=lambda: []) @dataclass class UpdatePossible(ClusterAttributeDescriptor): @@ -4638,7 +4639,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class UpdateState(ClusterAttributeDescriptor): @@ -4654,7 +4655,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=OtaSoftwareUpdateRequestor.Enums.UpdateStateEnum) - value: 'OtaSoftwareUpdateRequestor.Enums.UpdateStateEnum' = 0 + value: OtaSoftwareUpdateRequestor.Enums.UpdateStateEnum = 0 @dataclass class UpdateStateProgress(ClusterAttributeDescriptor): @@ -4670,7 +4671,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -4686,7 +4687,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -4702,7 +4703,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -4718,7 +4719,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -4734,7 +4735,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -4750,7 +4751,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -4766,7 +4767,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -4789,10 +4790,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="targetSoftwareVersion", Tag=3, Type=typing.Union[Nullable, uint]), ]) - previousState: 'OtaSoftwareUpdateRequestor.Enums.UpdateStateEnum' = 0 - newState: 'OtaSoftwareUpdateRequestor.Enums.UpdateStateEnum' = 0 - reason: 'OtaSoftwareUpdateRequestor.Enums.ChangeReasonEnum' = 0 - targetSoftwareVersion: 'typing.Union[Nullable, uint]' = NullValue + previousState: OtaSoftwareUpdateRequestor.Enums.UpdateStateEnum = 0 + newState: OtaSoftwareUpdateRequestor.Enums.UpdateStateEnum = 0 + reason: OtaSoftwareUpdateRequestor.Enums.ChangeReasonEnum = 0 + targetSoftwareVersion: typing.Union[Nullable, uint] = NullValue @dataclass class VersionApplied(ClusterEvent): @@ -4812,8 +4813,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="productID", Tag=1, Type=uint), ]) - softwareVersion: 'uint' = 0 - productID: 'uint' = 0 + softwareVersion: uint = 0 + productID: uint = 0 @dataclass class DownloadError(ClusterEvent): @@ -4835,10 +4836,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="platformCode", Tag=3, Type=typing.Union[Nullable, int]), ]) - softwareVersion: 'uint' = 0 - bytesDownloaded: 'uint' = 0 - progressPercent: 'typing.Union[Nullable, uint]' = NullValue - platformCode: 'typing.Union[Nullable, int]' = NullValue + softwareVersion: uint = 0 + bytesDownloaded: uint = 0 + progressPercent: typing.Union[Nullable, uint] = NullValue + platformCode: typing.Union[Nullable, int] = NullValue @dataclass @@ -4859,14 +4860,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - activeLocale: 'str' = None - supportedLocales: 'typing.List[str]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + activeLocale: str = "" + supportedLocales: typing.List[str] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -4883,7 +4884,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class SupportedLocales(ClusterAttributeDescriptor): @@ -4899,7 +4900,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[str]) - value: 'typing.List[str]' = field(default_factory=lambda: []) + value: typing.List[str] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -4915,7 +4916,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -4931,7 +4932,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -4947,7 +4948,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -4963,7 +4964,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -4979,7 +4980,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -4995,7 +4996,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -5017,15 +5018,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - hourFormat: 'TimeFormatLocalization.Enums.HourFormatEnum' = None - activeCalendarType: 'typing.Optional[TimeFormatLocalization.Enums.CalendarTypeEnum]' = None - supportedCalendarTypes: 'typing.Optional[typing.List[TimeFormatLocalization.Enums.CalendarTypeEnum]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + hourFormat: TimeFormatLocalization.Enums.HourFormatEnum = 0 + activeCalendarType: typing.Optional[TimeFormatLocalization.Enums.CalendarTypeEnum] = None + supportedCalendarTypes: typing.Optional[typing.List[TimeFormatLocalization.Enums.CalendarTypeEnum]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class CalendarTypeEnum(MatterIntEnum): @@ -5077,7 +5078,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=TimeFormatLocalization.Enums.HourFormatEnum) - value: 'TimeFormatLocalization.Enums.HourFormatEnum' = 0 + value: TimeFormatLocalization.Enums.HourFormatEnum = 0 @dataclass class ActiveCalendarType(ClusterAttributeDescriptor): @@ -5093,7 +5094,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[TimeFormatLocalization.Enums.CalendarTypeEnum]) - value: 'typing.Optional[TimeFormatLocalization.Enums.CalendarTypeEnum]' = None + value: typing.Optional[TimeFormatLocalization.Enums.CalendarTypeEnum] = None @dataclass class SupportedCalendarTypes(ClusterAttributeDescriptor): @@ -5109,7 +5110,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[TimeFormatLocalization.Enums.CalendarTypeEnum]]) - value: 'typing.Optional[typing.List[TimeFormatLocalization.Enums.CalendarTypeEnum]]' = None + value: typing.Optional[typing.List[TimeFormatLocalization.Enums.CalendarTypeEnum]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -5125,7 +5126,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -5141,7 +5142,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -5157,7 +5158,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -5173,7 +5174,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -5189,7 +5190,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -5205,7 +5206,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -5225,13 +5226,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - temperatureUnit: 'typing.Optional[UnitLocalization.Enums.TempUnitEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + temperatureUnit: typing.Optional[UnitLocalization.Enums.TempUnitEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class TempUnitEnum(MatterIntEnum): @@ -5263,7 +5264,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[UnitLocalization.Enums.TempUnitEnum]) - value: 'typing.Optional[UnitLocalization.Enums.TempUnitEnum]' = None + value: typing.Optional[UnitLocalization.Enums.TempUnitEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -5279,7 +5280,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -5295,7 +5296,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -5311,7 +5312,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -5327,7 +5328,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -5343,7 +5344,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -5359,7 +5360,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -5379,13 +5380,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - sources: 'typing.List[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + sources: typing.List[uint] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -5402,7 +5403,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -5418,7 +5419,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -5434,7 +5435,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -5450,7 +5451,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -5466,7 +5467,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -5482,7 +5483,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -5498,7 +5499,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -5549,44 +5550,44 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - status: 'PowerSource.Enums.PowerSourceStatusEnum' = None - order: 'uint' = None - description: 'str' = None - wiredAssessedInputVoltage: 'typing.Union[None, Nullable, uint]' = None - wiredAssessedInputFrequency: 'typing.Union[None, Nullable, uint]' = None - wiredCurrentType: 'typing.Optional[PowerSource.Enums.WiredCurrentTypeEnum]' = None - wiredAssessedCurrent: 'typing.Union[None, Nullable, uint]' = None - wiredNominalVoltage: 'typing.Optional[uint]' = None - wiredMaximumCurrent: 'typing.Optional[uint]' = None - wiredPresent: 'typing.Optional[bool]' = None - activeWiredFaults: 'typing.Optional[typing.List[PowerSource.Enums.WiredFaultEnum]]' = None - batVoltage: 'typing.Union[None, Nullable, uint]' = None - batPercentRemaining: 'typing.Union[None, Nullable, uint]' = None - batTimeRemaining: 'typing.Union[None, Nullable, uint]' = None - batChargeLevel: 'typing.Optional[PowerSource.Enums.BatChargeLevelEnum]' = None - batReplacementNeeded: 'typing.Optional[bool]' = None - batReplaceability: 'typing.Optional[PowerSource.Enums.BatReplaceabilityEnum]' = None - batPresent: 'typing.Optional[bool]' = None - activeBatFaults: 'typing.Optional[typing.List[PowerSource.Enums.BatFaultEnum]]' = None - batReplacementDescription: 'typing.Optional[str]' = None - batCommonDesignation: 'typing.Optional[PowerSource.Enums.BatCommonDesignationEnum]' = None - batANSIDesignation: 'typing.Optional[str]' = None - batIECDesignation: 'typing.Optional[str]' = None - batApprovedChemistry: 'typing.Optional[PowerSource.Enums.BatApprovedChemistryEnum]' = None - batCapacity: 'typing.Optional[uint]' = None - batQuantity: 'typing.Optional[uint]' = None - batChargeState: 'typing.Optional[PowerSource.Enums.BatChargeStateEnum]' = None - batTimeToFullCharge: 'typing.Union[None, Nullable, uint]' = None - batFunctionalWhileCharging: 'typing.Optional[bool]' = None - batChargingCurrent: 'typing.Union[None, Nullable, uint]' = None - activeBatChargeFaults: 'typing.Optional[typing.List[PowerSource.Enums.BatChargeFaultEnum]]' = None - endpointList: 'typing.List[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + status: PowerSource.Enums.PowerSourceStatusEnum = 0 + order: uint = 0 + description: str = "" + wiredAssessedInputVoltage: typing.Union[None, Nullable, uint] = None + wiredAssessedInputFrequency: typing.Union[None, Nullable, uint] = None + wiredCurrentType: typing.Optional[PowerSource.Enums.WiredCurrentTypeEnum] = None + wiredAssessedCurrent: typing.Union[None, Nullable, uint] = None + wiredNominalVoltage: typing.Optional[uint] = None + wiredMaximumCurrent: typing.Optional[uint] = None + wiredPresent: typing.Optional[bool] = None + activeWiredFaults: typing.Optional[typing.List[PowerSource.Enums.WiredFaultEnum]] = None + batVoltage: typing.Union[None, Nullable, uint] = None + batPercentRemaining: typing.Union[None, Nullable, uint] = None + batTimeRemaining: typing.Union[None, Nullable, uint] = None + batChargeLevel: typing.Optional[PowerSource.Enums.BatChargeLevelEnum] = None + batReplacementNeeded: typing.Optional[bool] = None + batReplaceability: typing.Optional[PowerSource.Enums.BatReplaceabilityEnum] = None + batPresent: typing.Optional[bool] = None + activeBatFaults: typing.Optional[typing.List[PowerSource.Enums.BatFaultEnum]] = None + batReplacementDescription: typing.Optional[str] = None + batCommonDesignation: typing.Optional[PowerSource.Enums.BatCommonDesignationEnum] = None + batANSIDesignation: typing.Optional[str] = None + batIECDesignation: typing.Optional[str] = None + batApprovedChemistry: typing.Optional[PowerSource.Enums.BatApprovedChemistryEnum] = None + batCapacity: typing.Optional[uint] = None + batQuantity: typing.Optional[uint] = None + batChargeState: typing.Optional[PowerSource.Enums.BatChargeStateEnum] = None + batTimeToFullCharge: typing.Union[None, Nullable, uint] = None + batFunctionalWhileCharging: typing.Optional[bool] = None + batChargingCurrent: typing.Union[None, Nullable, uint] = None + activeBatChargeFaults: typing.Optional[typing.List[PowerSource.Enums.BatChargeFaultEnum]] = None + endpointList: typing.List[uint] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class BatApprovedChemistryEnum(MatterIntEnum): @@ -5869,7 +5870,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=PowerSource.Enums.PowerSourceStatusEnum) - value: 'PowerSource.Enums.PowerSourceStatusEnum' = 0 + value: PowerSource.Enums.PowerSourceStatusEnum = 0 @dataclass class Order(ClusterAttributeDescriptor): @@ -5885,7 +5886,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Description(ClusterAttributeDescriptor): @@ -5901,7 +5902,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class WiredAssessedInputVoltage(ClusterAttributeDescriptor): @@ -5917,7 +5918,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class WiredAssessedInputFrequency(ClusterAttributeDescriptor): @@ -5933,7 +5934,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class WiredCurrentType(ClusterAttributeDescriptor): @@ -5949,7 +5950,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[PowerSource.Enums.WiredCurrentTypeEnum]) - value: 'typing.Optional[PowerSource.Enums.WiredCurrentTypeEnum]' = None + value: typing.Optional[PowerSource.Enums.WiredCurrentTypeEnum] = None @dataclass class WiredAssessedCurrent(ClusterAttributeDescriptor): @@ -5965,7 +5966,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class WiredNominalVoltage(ClusterAttributeDescriptor): @@ -5981,7 +5982,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class WiredMaximumCurrent(ClusterAttributeDescriptor): @@ -5997,7 +5998,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class WiredPresent(ClusterAttributeDescriptor): @@ -6013,7 +6014,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class ActiveWiredFaults(ClusterAttributeDescriptor): @@ -6029,7 +6030,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[PowerSource.Enums.WiredFaultEnum]]) - value: 'typing.Optional[typing.List[PowerSource.Enums.WiredFaultEnum]]' = None + value: typing.Optional[typing.List[PowerSource.Enums.WiredFaultEnum]] = None @dataclass class BatVoltage(ClusterAttributeDescriptor): @@ -6045,7 +6046,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class BatPercentRemaining(ClusterAttributeDescriptor): @@ -6061,7 +6062,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class BatTimeRemaining(ClusterAttributeDescriptor): @@ -6077,7 +6078,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class BatChargeLevel(ClusterAttributeDescriptor): @@ -6093,7 +6094,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[PowerSource.Enums.BatChargeLevelEnum]) - value: 'typing.Optional[PowerSource.Enums.BatChargeLevelEnum]' = None + value: typing.Optional[PowerSource.Enums.BatChargeLevelEnum] = None @dataclass class BatReplacementNeeded(ClusterAttributeDescriptor): @@ -6109,7 +6110,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class BatReplaceability(ClusterAttributeDescriptor): @@ -6125,7 +6126,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[PowerSource.Enums.BatReplaceabilityEnum]) - value: 'typing.Optional[PowerSource.Enums.BatReplaceabilityEnum]' = None + value: typing.Optional[PowerSource.Enums.BatReplaceabilityEnum] = None @dataclass class BatPresent(ClusterAttributeDescriptor): @@ -6141,7 +6142,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class ActiveBatFaults(ClusterAttributeDescriptor): @@ -6157,7 +6158,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[PowerSource.Enums.BatFaultEnum]]) - value: 'typing.Optional[typing.List[PowerSource.Enums.BatFaultEnum]]' = None + value: typing.Optional[typing.List[PowerSource.Enums.BatFaultEnum]] = None @dataclass class BatReplacementDescription(ClusterAttributeDescriptor): @@ -6173,7 +6174,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class BatCommonDesignation(ClusterAttributeDescriptor): @@ -6189,7 +6190,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[PowerSource.Enums.BatCommonDesignationEnum]) - value: 'typing.Optional[PowerSource.Enums.BatCommonDesignationEnum]' = None + value: typing.Optional[PowerSource.Enums.BatCommonDesignationEnum] = None @dataclass class BatANSIDesignation(ClusterAttributeDescriptor): @@ -6205,7 +6206,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class BatIECDesignation(ClusterAttributeDescriptor): @@ -6221,7 +6222,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class BatApprovedChemistry(ClusterAttributeDescriptor): @@ -6237,7 +6238,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[PowerSource.Enums.BatApprovedChemistryEnum]) - value: 'typing.Optional[PowerSource.Enums.BatApprovedChemistryEnum]' = None + value: typing.Optional[PowerSource.Enums.BatApprovedChemistryEnum] = None @dataclass class BatCapacity(ClusterAttributeDescriptor): @@ -6253,7 +6254,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class BatQuantity(ClusterAttributeDescriptor): @@ -6269,7 +6270,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class BatChargeState(ClusterAttributeDescriptor): @@ -6285,7 +6286,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[PowerSource.Enums.BatChargeStateEnum]) - value: 'typing.Optional[PowerSource.Enums.BatChargeStateEnum]' = None + value: typing.Optional[PowerSource.Enums.BatChargeStateEnum] = None @dataclass class BatTimeToFullCharge(ClusterAttributeDescriptor): @@ -6301,7 +6302,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class BatFunctionalWhileCharging(ClusterAttributeDescriptor): @@ -6317,7 +6318,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class BatChargingCurrent(ClusterAttributeDescriptor): @@ -6333,7 +6334,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class ActiveBatChargeFaults(ClusterAttributeDescriptor): @@ -6349,7 +6350,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[PowerSource.Enums.BatChargeFaultEnum]]) - value: 'typing.Optional[typing.List[PowerSource.Enums.BatChargeFaultEnum]]' = None + value: typing.Optional[typing.List[PowerSource.Enums.BatChargeFaultEnum]] = None @dataclass class EndpointList(ClusterAttributeDescriptor): @@ -6365,7 +6366,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -6381,7 +6382,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -6397,7 +6398,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -6413,7 +6414,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -6429,7 +6430,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -6445,7 +6446,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -6461,7 +6462,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -6482,8 +6483,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="previous", Tag=1, Type=typing.List[PowerSource.Enums.WiredFaultEnum]), ]) - current: 'typing.List[PowerSource.Enums.WiredFaultEnum]' = field(default_factory=lambda: []) - previous: 'typing.List[PowerSource.Enums.WiredFaultEnum]' = field(default_factory=lambda: []) + current: typing.List[PowerSource.Enums.WiredFaultEnum] = field(default_factory=lambda: []) + previous: typing.List[PowerSource.Enums.WiredFaultEnum] = field(default_factory=lambda: []) @dataclass class BatFaultChange(ClusterEvent): @@ -6503,8 +6504,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="previous", Tag=1, Type=typing.List[PowerSource.Enums.BatFaultEnum]), ]) - current: 'typing.List[PowerSource.Enums.BatFaultEnum]' = field(default_factory=lambda: []) - previous: 'typing.List[PowerSource.Enums.BatFaultEnum]' = field(default_factory=lambda: []) + current: typing.List[PowerSource.Enums.BatFaultEnum] = field(default_factory=lambda: []) + previous: typing.List[PowerSource.Enums.BatFaultEnum] = field(default_factory=lambda: []) @dataclass class BatChargeFaultChange(ClusterEvent): @@ -6524,8 +6525,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="previous", Tag=1, Type=typing.List[PowerSource.Enums.BatChargeFaultEnum]), ]) - current: 'typing.List[PowerSource.Enums.BatChargeFaultEnum]' = field(default_factory=lambda: []) - previous: 'typing.List[PowerSource.Enums.BatChargeFaultEnum]' = field(default_factory=lambda: []) + current: typing.List[PowerSource.Enums.BatChargeFaultEnum] = field(default_factory=lambda: []) + previous: typing.List[PowerSource.Enums.BatChargeFaultEnum] = field(default_factory=lambda: []) @dataclass @@ -6554,22 +6555,22 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - breadcrumb: 'uint' = None - basicCommissioningInfo: 'GeneralCommissioning.Structs.BasicCommissioningInfo' = None - regulatoryConfig: 'GeneralCommissioning.Enums.RegulatoryLocationTypeEnum' = None - locationCapability: 'GeneralCommissioning.Enums.RegulatoryLocationTypeEnum' = None - supportsConcurrentConnection: 'bool' = None - TCAcceptedVersion: 'typing.Optional[uint]' = None - TCMinRequiredVersion: 'typing.Optional[uint]' = None - TCAcknowledgements: 'typing.Optional[uint]' = None - TCAcknowledgementsRequired: 'typing.Optional[bool]' = None - TCUpdateDeadline: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + breadcrumb: uint = 0 + basicCommissioningInfo: GeneralCommissioning.Structs.BasicCommissioningInfo = field(default_factory=lambda: GeneralCommissioning.Structs.BasicCommissioningInfo()) + regulatoryConfig: GeneralCommissioning.Enums.RegulatoryLocationTypeEnum = 0 + locationCapability: GeneralCommissioning.Enums.RegulatoryLocationTypeEnum = 0 + supportsConcurrentConnection: bool = False + TCAcceptedVersion: typing.Optional[uint] = None + TCMinRequiredVersion: typing.Optional[uint] = None + TCAcknowledgements: typing.Optional[uint] = None + TCAcknowledgementsRequired: typing.Optional[bool] = None + TCUpdateDeadline: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class CommissioningErrorEnum(MatterIntEnum): @@ -6631,15 +6632,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="breadcrumb", Tag=1, Type=uint), ]) - expiryLengthSeconds: 'uint' = 0 - breadcrumb: 'uint' = 0 + expiryLengthSeconds: uint = 0 + breadcrumb: uint = 0 @dataclass class ArmFailSafeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000030 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -6649,8 +6650,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="debugText", Tag=1, Type=str), ]) - errorCode: 'GeneralCommissioning.Enums.CommissioningErrorEnum' = 0 - debugText: 'str' = "" + errorCode: GeneralCommissioning.Enums.CommissioningErrorEnum = 0 + debugText: str = "" @dataclass class SetRegulatoryConfig(ClusterCommand): @@ -6668,16 +6669,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="breadcrumb", Tag=2, Type=uint), ]) - newRegulatoryConfig: 'GeneralCommissioning.Enums.RegulatoryLocationTypeEnum' = 0 - countryCode: 'str' = "" - breadcrumb: 'uint' = 0 + newRegulatoryConfig: GeneralCommissioning.Enums.RegulatoryLocationTypeEnum = 0 + countryCode: str = "" + breadcrumb: uint = 0 @dataclass class SetRegulatoryConfigResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000030 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -6687,8 +6688,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="debugText", Tag=1, Type=str), ]) - errorCode: 'GeneralCommissioning.Enums.CommissioningErrorEnum' = 0 - debugText: 'str' = "" + errorCode: GeneralCommissioning.Enums.CommissioningErrorEnum = 0 + debugText: str = "" @dataclass class CommissioningComplete(ClusterCommand): @@ -6708,7 +6709,7 @@ class CommissioningCompleteResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000030 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -6718,8 +6719,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="debugText", Tag=1, Type=str), ]) - errorCode: 'GeneralCommissioning.Enums.CommissioningErrorEnum' = 0 - debugText: 'str' = "" + errorCode: GeneralCommissioning.Enums.CommissioningErrorEnum = 0 + debugText: str = "" @dataclass class SetTCAcknowledgements(ClusterCommand): @@ -6736,15 +6737,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="TCUserResponse", Tag=1, Type=uint), ]) - TCVersion: 'uint' = 0 - TCUserResponse: 'uint' = 0 + TCVersion: uint = 0 + TCUserResponse: uint = 0 @dataclass class SetTCAcknowledgementsResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000030 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -6753,7 +6754,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="errorCode", Tag=0, Type=GeneralCommissioning.Enums.CommissioningErrorEnum), ]) - errorCode: 'GeneralCommissioning.Enums.CommissioningErrorEnum' = 0 + errorCode: GeneralCommissioning.Enums.CommissioningErrorEnum = 0 class Attributes: @dataclass @@ -6770,7 +6771,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class BasicCommissioningInfo(ClusterAttributeDescriptor): @@ -6786,7 +6787,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=GeneralCommissioning.Structs.BasicCommissioningInfo) - value: 'GeneralCommissioning.Structs.BasicCommissioningInfo' = field(default_factory=lambda: GeneralCommissioning.Structs.BasicCommissioningInfo()) + value: GeneralCommissioning.Structs.BasicCommissioningInfo = field(default_factory=lambda: GeneralCommissioning.Structs.BasicCommissioningInfo()) @dataclass class RegulatoryConfig(ClusterAttributeDescriptor): @@ -6802,7 +6803,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=GeneralCommissioning.Enums.RegulatoryLocationTypeEnum) - value: 'GeneralCommissioning.Enums.RegulatoryLocationTypeEnum' = 0 + value: GeneralCommissioning.Enums.RegulatoryLocationTypeEnum = 0 @dataclass class LocationCapability(ClusterAttributeDescriptor): @@ -6818,7 +6819,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=GeneralCommissioning.Enums.RegulatoryLocationTypeEnum) - value: 'GeneralCommissioning.Enums.RegulatoryLocationTypeEnum' = 0 + value: GeneralCommissioning.Enums.RegulatoryLocationTypeEnum = 0 @dataclass class SupportsConcurrentConnection(ClusterAttributeDescriptor): @@ -6834,7 +6835,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class TCAcceptedVersion(ClusterAttributeDescriptor): @@ -6850,7 +6851,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TCMinRequiredVersion(ClusterAttributeDescriptor): @@ -6866,7 +6867,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TCAcknowledgements(ClusterAttributeDescriptor): @@ -6882,7 +6883,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TCAcknowledgementsRequired(ClusterAttributeDescriptor): @@ -6898,7 +6899,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class TCUpdateDeadline(ClusterAttributeDescriptor): @@ -6914,7 +6915,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -6930,7 +6931,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -6946,7 +6947,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -6962,7 +6963,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -6978,7 +6979,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -6994,7 +6995,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -7010,7 +7011,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -7040,23 +7041,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - maxNetworks: 'uint' = None - networks: 'typing.List[NetworkCommissioning.Structs.NetworkInfoStruct]' = None - scanMaxTimeSeconds: 'typing.Optional[uint]' = None - connectMaxTimeSeconds: 'typing.Optional[uint]' = None - interfaceEnabled: 'bool' = None - lastNetworkingStatus: 'typing.Union[Nullable, NetworkCommissioning.Enums.NetworkCommissioningStatusEnum]' = None - lastNetworkID: 'typing.Union[Nullable, bytes]' = None - lastConnectErrorValue: 'typing.Union[Nullable, int]' = None - supportedWiFiBands: 'typing.Optional[typing.List[NetworkCommissioning.Enums.WiFiBandEnum]]' = None - supportedThreadFeatures: 'typing.Optional[uint]' = None - threadVersion: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + maxNetworks: uint = 0 + networks: typing.List[NetworkCommissioning.Structs.NetworkInfoStruct] = field(default_factory=lambda: []) + scanMaxTimeSeconds: typing.Optional[uint] = None + connectMaxTimeSeconds: typing.Optional[uint] = None + interfaceEnabled: bool = False + lastNetworkingStatus: typing.Union[Nullable, NetworkCommissioning.Enums.NetworkCommissioningStatusEnum] = NullValue + lastNetworkID: typing.Union[Nullable, bytes] = NullValue + lastConnectErrorValue: typing.Union[Nullable, int] = NullValue + supportedWiFiBands: typing.Optional[typing.List[NetworkCommissioning.Enums.WiFiBandEnum]] = None + supportedThreadFeatures: typing.Optional[uint] = None + threadVersion: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class NetworkCommissioningStatusEnum(MatterIntEnum): @@ -7194,15 +7195,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="breadcrumb", Tag=1, Type=typing.Optional[uint]), ]) - ssid: 'typing.Union[None, Nullable, bytes]' = None - breadcrumb: 'typing.Optional[uint]' = None + ssid: typing.Union[None, Nullable, bytes] = None + breadcrumb: typing.Optional[uint] = None @dataclass class ScanNetworksResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000031 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -7214,10 +7215,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="threadScanResults", Tag=3, Type=typing.Optional[typing.List[NetworkCommissioning.Structs.ThreadInterfaceScanResultStruct]]), ]) - networkingStatus: 'NetworkCommissioning.Enums.NetworkCommissioningStatusEnum' = 0 - debugText: 'typing.Optional[str]' = None - wiFiScanResults: 'typing.Optional[typing.List[NetworkCommissioning.Structs.WiFiInterfaceScanResultStruct]]' = None - threadScanResults: 'typing.Optional[typing.List[NetworkCommissioning.Structs.ThreadInterfaceScanResultStruct]]' = None + networkingStatus: NetworkCommissioning.Enums.NetworkCommissioningStatusEnum = 0 + debugText: typing.Optional[str] = None + wiFiScanResults: typing.Optional[typing.List[NetworkCommissioning.Structs.WiFiInterfaceScanResultStruct]] = None + threadScanResults: typing.Optional[typing.List[NetworkCommissioning.Structs.ThreadInterfaceScanResultStruct]] = None @dataclass class AddOrUpdateWiFiNetwork(ClusterCommand): @@ -7238,12 +7239,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="possessionNonce", Tag=5, Type=typing.Optional[bytes]), ]) - ssid: 'bytes' = b"" - credentials: 'bytes' = b"" - breadcrumb: 'typing.Optional[uint]' = None - networkIdentity: 'typing.Optional[bytes]' = None - clientIdentifier: 'typing.Optional[bytes]' = None - possessionNonce: 'typing.Optional[bytes]' = None + ssid: bytes = b"" + credentials: bytes = b"" + breadcrumb: typing.Optional[uint] = None + networkIdentity: typing.Optional[bytes] = None + clientIdentifier: typing.Optional[bytes] = None + possessionNonce: typing.Optional[bytes] = None @dataclass class AddOrUpdateThreadNetwork(ClusterCommand): @@ -7260,8 +7261,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="breadcrumb", Tag=1, Type=typing.Optional[uint]), ]) - operationalDataset: 'bytes' = b"" - breadcrumb: 'typing.Optional[uint]' = None + operationalDataset: bytes = b"" + breadcrumb: typing.Optional[uint] = None @dataclass class RemoveNetwork(ClusterCommand): @@ -7278,15 +7279,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="breadcrumb", Tag=1, Type=typing.Optional[uint]), ]) - networkID: 'bytes' = b"" - breadcrumb: 'typing.Optional[uint]' = None + networkID: bytes = b"" + breadcrumb: typing.Optional[uint] = None @dataclass class NetworkConfigResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000031 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -7299,11 +7300,11 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="possessionSignature", Tag=4, Type=typing.Optional[bytes]), ]) - networkingStatus: 'NetworkCommissioning.Enums.NetworkCommissioningStatusEnum' = 0 - debugText: 'typing.Optional[str]' = None - networkIndex: 'typing.Optional[uint]' = None - clientIdentity: 'typing.Optional[bytes]' = None - possessionSignature: 'typing.Optional[bytes]' = None + networkingStatus: NetworkCommissioning.Enums.NetworkCommissioningStatusEnum = 0 + debugText: typing.Optional[str] = None + networkIndex: typing.Optional[uint] = None + clientIdentity: typing.Optional[bytes] = None + possessionSignature: typing.Optional[bytes] = None @dataclass class ConnectNetwork(ClusterCommand): @@ -7320,15 +7321,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="breadcrumb", Tag=1, Type=typing.Optional[uint]), ]) - networkID: 'bytes' = b"" - breadcrumb: 'typing.Optional[uint]' = None + networkID: bytes = b"" + breadcrumb: typing.Optional[uint] = None @dataclass class ConnectNetworkResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000031 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -7339,9 +7340,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="errorValue", Tag=2, Type=typing.Union[Nullable, int]), ]) - networkingStatus: 'NetworkCommissioning.Enums.NetworkCommissioningStatusEnum' = 0 - debugText: 'typing.Optional[str]' = None - errorValue: 'typing.Union[Nullable, int]' = NullValue + networkingStatus: NetworkCommissioning.Enums.NetworkCommissioningStatusEnum = 0 + debugText: typing.Optional[str] = None + errorValue: typing.Union[Nullable, int] = NullValue @dataclass class ReorderNetwork(ClusterCommand): @@ -7359,9 +7360,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="breadcrumb", Tag=2, Type=typing.Optional[uint]), ]) - networkID: 'bytes' = b"" - networkIndex: 'uint' = 0 - breadcrumb: 'typing.Optional[uint]' = None + networkID: bytes = b"" + networkIndex: uint = 0 + breadcrumb: typing.Optional[uint] = None @dataclass class QueryIdentity(ClusterCommand): @@ -7378,15 +7379,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="possessionNonce", Tag=1, Type=typing.Optional[bytes]), ]) - keyIdentifier: 'bytes' = b"" - possessionNonce: 'typing.Optional[bytes]' = None + keyIdentifier: bytes = b"" + possessionNonce: typing.Optional[bytes] = None @dataclass class QueryIdentityResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000031 command_id: typing.ClassVar[int] = 0x0000000A is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -7396,8 +7397,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="possessionSignature", Tag=1, Type=typing.Optional[bytes]), ]) - identity: 'bytes' = b"" - possessionSignature: 'typing.Optional[bytes]' = None + identity: bytes = b"" + possessionSignature: typing.Optional[bytes] = None class Attributes: @dataclass @@ -7414,7 +7415,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Networks(ClusterAttributeDescriptor): @@ -7430,7 +7431,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[NetworkCommissioning.Structs.NetworkInfoStruct]) - value: 'typing.List[NetworkCommissioning.Structs.NetworkInfoStruct]' = field(default_factory=lambda: []) + value: typing.List[NetworkCommissioning.Structs.NetworkInfoStruct] = field(default_factory=lambda: []) @dataclass class ScanMaxTimeSeconds(ClusterAttributeDescriptor): @@ -7446,7 +7447,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ConnectMaxTimeSeconds(ClusterAttributeDescriptor): @@ -7462,7 +7463,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class InterfaceEnabled(ClusterAttributeDescriptor): @@ -7478,7 +7479,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class LastNetworkingStatus(ClusterAttributeDescriptor): @@ -7494,7 +7495,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, NetworkCommissioning.Enums.NetworkCommissioningStatusEnum]) - value: 'typing.Union[Nullable, NetworkCommissioning.Enums.NetworkCommissioningStatusEnum]' = NullValue + value: typing.Union[Nullable, NetworkCommissioning.Enums.NetworkCommissioningStatusEnum] = NullValue @dataclass class LastNetworkID(ClusterAttributeDescriptor): @@ -7510,7 +7511,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, bytes]) - value: 'typing.Union[Nullable, bytes]' = NullValue + value: typing.Union[Nullable, bytes] = NullValue @dataclass class LastConnectErrorValue(ClusterAttributeDescriptor): @@ -7526,7 +7527,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class SupportedWiFiBands(ClusterAttributeDescriptor): @@ -7542,7 +7543,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[NetworkCommissioning.Enums.WiFiBandEnum]]) - value: 'typing.Optional[typing.List[NetworkCommissioning.Enums.WiFiBandEnum]]' = None + value: typing.Optional[typing.List[NetworkCommissioning.Enums.WiFiBandEnum]] = None @dataclass class SupportedThreadFeatures(ClusterAttributeDescriptor): @@ -7558,7 +7559,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ThreadVersion(ClusterAttributeDescriptor): @@ -7574,7 +7575,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -7590,7 +7591,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -7606,7 +7607,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -7622,7 +7623,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -7638,7 +7639,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -7654,7 +7655,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -7670,7 +7671,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -7689,12 +7690,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class IntentEnum(MatterIntEnum): @@ -7745,16 +7746,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="transferFileDesignator", Tag=2, Type=typing.Optional[str]), ]) - intent: 'DiagnosticLogs.Enums.IntentEnum' = 0 - requestedProtocol: 'DiagnosticLogs.Enums.TransferProtocolEnum' = 0 - transferFileDesignator: 'typing.Optional[str]' = None + intent: DiagnosticLogs.Enums.IntentEnum = 0 + requestedProtocol: DiagnosticLogs.Enums.TransferProtocolEnum = 0 + transferFileDesignator: typing.Optional[str] = None @dataclass class RetrieveLogsResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000032 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -7766,10 +7767,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="timeSinceBoot", Tag=3, Type=typing.Optional[uint]), ]) - status: 'DiagnosticLogs.Enums.StatusEnum' = 0 - logContent: 'bytes' = b"" - UTCTimeStamp: 'typing.Optional[uint]' = None - timeSinceBoot: 'typing.Optional[uint]' = None + status: DiagnosticLogs.Enums.StatusEnum = 0 + logContent: bytes = b"" + UTCTimeStamp: typing.Optional[uint] = None + timeSinceBoot: typing.Optional[uint] = None class Attributes: @dataclass @@ -7786,7 +7787,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -7802,7 +7803,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -7818,7 +7819,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -7834,7 +7835,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -7850,7 +7851,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -7866,7 +7867,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -7894,21 +7895,21 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - networkInterfaces: 'typing.List[GeneralDiagnostics.Structs.NetworkInterface]' = None - rebootCount: 'uint' = None - upTime: 'typing.Optional[uint]' = None - totalOperationalHours: 'typing.Optional[uint]' = None - bootReason: 'typing.Optional[GeneralDiagnostics.Enums.BootReasonEnum]' = None - activeHardwareFaults: 'typing.Optional[typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum]]' = None - activeRadioFaults: 'typing.Optional[typing.List[GeneralDiagnostics.Enums.RadioFaultEnum]]' = None - activeNetworkFaults: 'typing.Optional[typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum]]' = None - testEventTriggersEnabled: 'bool' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + networkInterfaces: typing.List[GeneralDiagnostics.Structs.NetworkInterface] = field(default_factory=lambda: []) + rebootCount: uint = 0 + upTime: typing.Optional[uint] = None + totalOperationalHours: typing.Optional[uint] = None + bootReason: typing.Optional[GeneralDiagnostics.Enums.BootReasonEnum] = None + activeHardwareFaults: typing.Optional[typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum]] = None + activeRadioFaults: typing.Optional[typing.List[GeneralDiagnostics.Enums.RadioFaultEnum]] = None + activeNetworkFaults: typing.Optional[typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum]] = None + testEventTriggersEnabled: bool = False + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class BootReasonEnum(MatterIntEnum): @@ -8016,7 +8017,7 @@ class TestEventTrigger(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000033 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -8026,8 +8027,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="eventTrigger", Tag=1, Type=uint), ]) - enableKey: 'bytes' = b"" - eventTrigger: 'uint' = 0 + enableKey: bytes = b"" + eventTrigger: uint = 0 @dataclass class TimeSnapshot(ClusterCommand): @@ -8047,7 +8048,7 @@ class TimeSnapshotResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000033 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -8057,8 +8058,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="posixTimeMs", Tag=1, Type=typing.Union[Nullable, uint]), ]) - systemTimeMs: 'uint' = 0 - posixTimeMs: 'typing.Union[Nullable, uint]' = NullValue + systemTimeMs: uint = 0 + posixTimeMs: typing.Union[Nullable, uint] = NullValue @dataclass class PayloadTestRequest(ClusterCommand): @@ -8076,16 +8077,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="count", Tag=2, Type=uint), ]) - enableKey: 'bytes' = b"" - value: 'uint' = 0 - count: 'uint' = 0 + enableKey: bytes = b"" + value: uint = 0 + count: uint = 0 @dataclass class PayloadTestResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000033 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -8094,7 +8095,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="payload", Tag=0, Type=bytes), ]) - payload: 'bytes' = b"" + payload: bytes = b"" class Attributes: @dataclass @@ -8111,7 +8112,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[GeneralDiagnostics.Structs.NetworkInterface]) - value: 'typing.List[GeneralDiagnostics.Structs.NetworkInterface]' = field(default_factory=lambda: []) + value: typing.List[GeneralDiagnostics.Structs.NetworkInterface] = field(default_factory=lambda: []) @dataclass class RebootCount(ClusterAttributeDescriptor): @@ -8127,7 +8128,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class UpTime(ClusterAttributeDescriptor): @@ -8143,7 +8144,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TotalOperationalHours(ClusterAttributeDescriptor): @@ -8159,7 +8160,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class BootReason(ClusterAttributeDescriptor): @@ -8175,7 +8176,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[GeneralDiagnostics.Enums.BootReasonEnum]) - value: 'typing.Optional[GeneralDiagnostics.Enums.BootReasonEnum]' = None + value: typing.Optional[GeneralDiagnostics.Enums.BootReasonEnum] = None @dataclass class ActiveHardwareFaults(ClusterAttributeDescriptor): @@ -8191,7 +8192,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum]]) - value: 'typing.Optional[typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum]]' = None + value: typing.Optional[typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum]] = None @dataclass class ActiveRadioFaults(ClusterAttributeDescriptor): @@ -8207,7 +8208,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[GeneralDiagnostics.Enums.RadioFaultEnum]]) - value: 'typing.Optional[typing.List[GeneralDiagnostics.Enums.RadioFaultEnum]]' = None + value: typing.Optional[typing.List[GeneralDiagnostics.Enums.RadioFaultEnum]] = None @dataclass class ActiveNetworkFaults(ClusterAttributeDescriptor): @@ -8223,7 +8224,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum]]) - value: 'typing.Optional[typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum]]' = None + value: typing.Optional[typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum]] = None @dataclass class TestEventTriggersEnabled(ClusterAttributeDescriptor): @@ -8239,7 +8240,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -8255,7 +8256,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -8271,7 +8272,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -8287,7 +8288,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -8303,7 +8304,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -8319,7 +8320,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -8335,7 +8336,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -8356,8 +8357,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="previous", Tag=1, Type=typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum]), ]) - current: 'typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum]' = field(default_factory=lambda: []) - previous: 'typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum]' = field(default_factory=lambda: []) + current: typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum] = field(default_factory=lambda: []) + previous: typing.List[GeneralDiagnostics.Enums.HardwareFaultEnum] = field(default_factory=lambda: []) @dataclass class RadioFaultChange(ClusterEvent): @@ -8377,8 +8378,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="previous", Tag=1, Type=typing.List[GeneralDiagnostics.Enums.RadioFaultEnum]), ]) - current: 'typing.List[GeneralDiagnostics.Enums.RadioFaultEnum]' = field(default_factory=lambda: []) - previous: 'typing.List[GeneralDiagnostics.Enums.RadioFaultEnum]' = field(default_factory=lambda: []) + current: typing.List[GeneralDiagnostics.Enums.RadioFaultEnum] = field(default_factory=lambda: []) + previous: typing.List[GeneralDiagnostics.Enums.RadioFaultEnum] = field(default_factory=lambda: []) @dataclass class NetworkFaultChange(ClusterEvent): @@ -8398,8 +8399,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="previous", Tag=1, Type=typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum]), ]) - current: 'typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum]' = field(default_factory=lambda: []) - previous: 'typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum]' = field(default_factory=lambda: []) + current: typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum] = field(default_factory=lambda: []) + previous: typing.List[GeneralDiagnostics.Enums.NetworkFaultEnum] = field(default_factory=lambda: []) @dataclass class BootReason(ClusterEvent): @@ -8418,7 +8419,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="bootReason", Tag=0, Type=GeneralDiagnostics.Enums.BootReasonEnum), ]) - bootReason: 'GeneralDiagnostics.Enums.BootReasonEnum' = 0 + bootReason: GeneralDiagnostics.Enums.BootReasonEnum = 0 @dataclass @@ -8441,16 +8442,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - threadMetrics: 'typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetricsStruct]]' = None - currentHeapFree: 'typing.Optional[uint]' = None - currentHeapUsed: 'typing.Optional[uint]' = None - currentHeapHighWatermark: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + threadMetrics: typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetricsStruct]] = None + currentHeapFree: typing.Optional[uint] = None + currentHeapUsed: typing.Optional[uint] = None + currentHeapHighWatermark: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -8482,7 +8483,7 @@ class ResetWatermarks(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000034 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -8505,7 +8506,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetricsStruct]]) - value: 'typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetricsStruct]]' = None + value: typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetricsStruct]] = None @dataclass class CurrentHeapFree(ClusterAttributeDescriptor): @@ -8521,7 +8522,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CurrentHeapUsed(ClusterAttributeDescriptor): @@ -8537,7 +8538,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CurrentHeapHighWatermark(ClusterAttributeDescriptor): @@ -8553,7 +8554,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -8569,7 +8570,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -8585,7 +8586,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -8601,7 +8602,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -8617,7 +8618,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -8633,7 +8634,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -8649,7 +8650,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -8671,9 +8672,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="faultRecording", Tag=2, Type=typing.Optional[bytes]), ]) - id: 'uint' = 0 - name: 'typing.Optional[str]' = None - faultRecording: 'typing.Optional[bytes]' = None + id: uint = 0 + name: typing.Optional[str] = None + faultRecording: typing.Optional[bytes] = None @dataclass @@ -8755,75 +8756,75 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - channel: 'typing.Union[Nullable, uint]' = None - routingRole: 'typing.Union[Nullable, ThreadNetworkDiagnostics.Enums.RoutingRoleEnum]' = None - networkName: 'typing.Union[Nullable, str]' = None - panId: 'typing.Union[Nullable, uint]' = None - extendedPanId: 'typing.Union[Nullable, uint]' = None - meshLocalPrefix: 'typing.Union[Nullable, bytes]' = None - overrunCount: 'typing.Optional[uint]' = None - neighborTable: 'typing.List[ThreadNetworkDiagnostics.Structs.NeighborTableStruct]' = None - routeTable: 'typing.List[ThreadNetworkDiagnostics.Structs.RouteTableStruct]' = None - partitionId: 'typing.Union[Nullable, uint]' = None - weighting: 'typing.Union[Nullable, uint]' = None - dataVersion: 'typing.Union[Nullable, uint]' = None - stableDataVersion: 'typing.Union[Nullable, uint]' = None - leaderRouterId: 'typing.Union[Nullable, uint]' = None - detachedRoleCount: 'typing.Optional[uint]' = None - childRoleCount: 'typing.Optional[uint]' = None - routerRoleCount: 'typing.Optional[uint]' = None - leaderRoleCount: 'typing.Optional[uint]' = None - attachAttemptCount: 'typing.Optional[uint]' = None - partitionIdChangeCount: 'typing.Optional[uint]' = None - betterPartitionAttachAttemptCount: 'typing.Optional[uint]' = None - parentChangeCount: 'typing.Optional[uint]' = None - txTotalCount: 'typing.Optional[uint]' = None - txUnicastCount: 'typing.Optional[uint]' = None - txBroadcastCount: 'typing.Optional[uint]' = None - txAckRequestedCount: 'typing.Optional[uint]' = None - txAckedCount: 'typing.Optional[uint]' = None - txNoAckRequestedCount: 'typing.Optional[uint]' = None - txDataCount: 'typing.Optional[uint]' = None - txDataPollCount: 'typing.Optional[uint]' = None - txBeaconCount: 'typing.Optional[uint]' = None - txBeaconRequestCount: 'typing.Optional[uint]' = None - txOtherCount: 'typing.Optional[uint]' = None - txRetryCount: 'typing.Optional[uint]' = None - txDirectMaxRetryExpiryCount: 'typing.Optional[uint]' = None - txIndirectMaxRetryExpiryCount: 'typing.Optional[uint]' = None - txErrCcaCount: 'typing.Optional[uint]' = None - txErrAbortCount: 'typing.Optional[uint]' = None - txErrBusyChannelCount: 'typing.Optional[uint]' = None - rxTotalCount: 'typing.Optional[uint]' = None - rxUnicastCount: 'typing.Optional[uint]' = None - rxBroadcastCount: 'typing.Optional[uint]' = None - rxDataCount: 'typing.Optional[uint]' = None - rxDataPollCount: 'typing.Optional[uint]' = None - rxBeaconCount: 'typing.Optional[uint]' = None - rxBeaconRequestCount: 'typing.Optional[uint]' = None - rxOtherCount: 'typing.Optional[uint]' = None - rxAddressFilteredCount: 'typing.Optional[uint]' = None - rxDestAddrFilteredCount: 'typing.Optional[uint]' = None - rxDuplicatedCount: 'typing.Optional[uint]' = None - rxErrNoFrameCount: 'typing.Optional[uint]' = None - rxErrUnknownNeighborCount: 'typing.Optional[uint]' = None - rxErrInvalidSrcAddrCount: 'typing.Optional[uint]' = None - rxErrSecCount: 'typing.Optional[uint]' = None - rxErrFcsCount: 'typing.Optional[uint]' = None - rxErrOtherCount: 'typing.Optional[uint]' = None - activeTimestamp: 'typing.Union[None, Nullable, uint]' = None - pendingTimestamp: 'typing.Union[None, Nullable, uint]' = None - delay: 'typing.Union[None, Nullable, uint]' = None - securityPolicy: 'typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.SecurityPolicy]' = None - channelPage0Mask: 'typing.Union[Nullable, bytes]' = None - operationalDatasetComponents: 'typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.OperationalDatasetComponents]' = None - activeNetworkFaultsList: 'typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + channel: typing.Union[Nullable, uint] = NullValue + routingRole: typing.Union[Nullable, ThreadNetworkDiagnostics.Enums.RoutingRoleEnum] = NullValue + networkName: typing.Union[Nullable, str] = NullValue + panId: typing.Union[Nullable, uint] = NullValue + extendedPanId: typing.Union[Nullable, uint] = NullValue + meshLocalPrefix: typing.Union[Nullable, bytes] = NullValue + overrunCount: typing.Optional[uint] = None + neighborTable: typing.List[ThreadNetworkDiagnostics.Structs.NeighborTableStruct] = field(default_factory=lambda: []) + routeTable: typing.List[ThreadNetworkDiagnostics.Structs.RouteTableStruct] = field(default_factory=lambda: []) + partitionId: typing.Union[Nullable, uint] = NullValue + weighting: typing.Union[Nullable, uint] = NullValue + dataVersion: typing.Union[Nullable, uint] = NullValue + stableDataVersion: typing.Union[Nullable, uint] = NullValue + leaderRouterId: typing.Union[Nullable, uint] = NullValue + detachedRoleCount: typing.Optional[uint] = None + childRoleCount: typing.Optional[uint] = None + routerRoleCount: typing.Optional[uint] = None + leaderRoleCount: typing.Optional[uint] = None + attachAttemptCount: typing.Optional[uint] = None + partitionIdChangeCount: typing.Optional[uint] = None + betterPartitionAttachAttemptCount: typing.Optional[uint] = None + parentChangeCount: typing.Optional[uint] = None + txTotalCount: typing.Optional[uint] = None + txUnicastCount: typing.Optional[uint] = None + txBroadcastCount: typing.Optional[uint] = None + txAckRequestedCount: typing.Optional[uint] = None + txAckedCount: typing.Optional[uint] = None + txNoAckRequestedCount: typing.Optional[uint] = None + txDataCount: typing.Optional[uint] = None + txDataPollCount: typing.Optional[uint] = None + txBeaconCount: typing.Optional[uint] = None + txBeaconRequestCount: typing.Optional[uint] = None + txOtherCount: typing.Optional[uint] = None + txRetryCount: typing.Optional[uint] = None + txDirectMaxRetryExpiryCount: typing.Optional[uint] = None + txIndirectMaxRetryExpiryCount: typing.Optional[uint] = None + txErrCcaCount: typing.Optional[uint] = None + txErrAbortCount: typing.Optional[uint] = None + txErrBusyChannelCount: typing.Optional[uint] = None + rxTotalCount: typing.Optional[uint] = None + rxUnicastCount: typing.Optional[uint] = None + rxBroadcastCount: typing.Optional[uint] = None + rxDataCount: typing.Optional[uint] = None + rxDataPollCount: typing.Optional[uint] = None + rxBeaconCount: typing.Optional[uint] = None + rxBeaconRequestCount: typing.Optional[uint] = None + rxOtherCount: typing.Optional[uint] = None + rxAddressFilteredCount: typing.Optional[uint] = None + rxDestAddrFilteredCount: typing.Optional[uint] = None + rxDuplicatedCount: typing.Optional[uint] = None + rxErrNoFrameCount: typing.Optional[uint] = None + rxErrUnknownNeighborCount: typing.Optional[uint] = None + rxErrInvalidSrcAddrCount: typing.Optional[uint] = None + rxErrSecCount: typing.Optional[uint] = None + rxErrFcsCount: typing.Optional[uint] = None + rxErrOtherCount: typing.Optional[uint] = None + activeTimestamp: typing.Union[None, Nullable, uint] = None + pendingTimestamp: typing.Union[None, Nullable, uint] = None + delay: typing.Union[None, Nullable, uint] = None + securityPolicy: typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.SecurityPolicy] = NullValue + channelPage0Mask: typing.Union[Nullable, bytes] = NullValue + operationalDatasetComponents: typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.OperationalDatasetComponents] = NullValue + activeNetworkFaultsList: typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ConnectionStatusEnum(MatterIntEnum): @@ -8986,7 +8987,7 @@ class ResetCounts(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000035 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -9009,7 +9010,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class RoutingRole(ClusterAttributeDescriptor): @@ -9025,7 +9026,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, ThreadNetworkDiagnostics.Enums.RoutingRoleEnum]) - value: 'typing.Union[Nullable, ThreadNetworkDiagnostics.Enums.RoutingRoleEnum]' = NullValue + value: typing.Union[Nullable, ThreadNetworkDiagnostics.Enums.RoutingRoleEnum] = NullValue @dataclass class NetworkName(ClusterAttributeDescriptor): @@ -9041,7 +9042,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, str]) - value: 'typing.Union[Nullable, str]' = NullValue + value: typing.Union[Nullable, str] = NullValue @dataclass class PanId(ClusterAttributeDescriptor): @@ -9057,7 +9058,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class ExtendedPanId(ClusterAttributeDescriptor): @@ -9073,7 +9074,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class MeshLocalPrefix(ClusterAttributeDescriptor): @@ -9089,7 +9090,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, bytes]) - value: 'typing.Union[Nullable, bytes]' = NullValue + value: typing.Union[Nullable, bytes] = NullValue @dataclass class OverrunCount(ClusterAttributeDescriptor): @@ -9105,7 +9106,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NeighborTable(ClusterAttributeDescriptor): @@ -9121,7 +9122,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ThreadNetworkDiagnostics.Structs.NeighborTableStruct]) - value: 'typing.List[ThreadNetworkDiagnostics.Structs.NeighborTableStruct]' = field(default_factory=lambda: []) + value: typing.List[ThreadNetworkDiagnostics.Structs.NeighborTableStruct] = field(default_factory=lambda: []) @dataclass class RouteTable(ClusterAttributeDescriptor): @@ -9137,7 +9138,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ThreadNetworkDiagnostics.Structs.RouteTableStruct]) - value: 'typing.List[ThreadNetworkDiagnostics.Structs.RouteTableStruct]' = field(default_factory=lambda: []) + value: typing.List[ThreadNetworkDiagnostics.Structs.RouteTableStruct] = field(default_factory=lambda: []) @dataclass class PartitionId(ClusterAttributeDescriptor): @@ -9153,7 +9154,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class Weighting(ClusterAttributeDescriptor): @@ -9169,7 +9170,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class DataVersion(ClusterAttributeDescriptor): @@ -9185,7 +9186,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class StableDataVersion(ClusterAttributeDescriptor): @@ -9201,7 +9202,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class LeaderRouterId(ClusterAttributeDescriptor): @@ -9217,7 +9218,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class DetachedRoleCount(ClusterAttributeDescriptor): @@ -9233,7 +9234,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ChildRoleCount(ClusterAttributeDescriptor): @@ -9249,7 +9250,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RouterRoleCount(ClusterAttributeDescriptor): @@ -9265,7 +9266,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class LeaderRoleCount(ClusterAttributeDescriptor): @@ -9281,7 +9282,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AttachAttemptCount(ClusterAttributeDescriptor): @@ -9297,7 +9298,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PartitionIdChangeCount(ClusterAttributeDescriptor): @@ -9313,7 +9314,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class BetterPartitionAttachAttemptCount(ClusterAttributeDescriptor): @@ -9329,7 +9330,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ParentChangeCount(ClusterAttributeDescriptor): @@ -9345,7 +9346,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxTotalCount(ClusterAttributeDescriptor): @@ -9361,7 +9362,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxUnicastCount(ClusterAttributeDescriptor): @@ -9377,7 +9378,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxBroadcastCount(ClusterAttributeDescriptor): @@ -9393,7 +9394,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxAckRequestedCount(ClusterAttributeDescriptor): @@ -9409,7 +9410,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxAckedCount(ClusterAttributeDescriptor): @@ -9425,7 +9426,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxNoAckRequestedCount(ClusterAttributeDescriptor): @@ -9441,7 +9442,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxDataCount(ClusterAttributeDescriptor): @@ -9457,7 +9458,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxDataPollCount(ClusterAttributeDescriptor): @@ -9473,7 +9474,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxBeaconCount(ClusterAttributeDescriptor): @@ -9489,7 +9490,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxBeaconRequestCount(ClusterAttributeDescriptor): @@ -9505,7 +9506,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxOtherCount(ClusterAttributeDescriptor): @@ -9521,7 +9522,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxRetryCount(ClusterAttributeDescriptor): @@ -9537,7 +9538,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxDirectMaxRetryExpiryCount(ClusterAttributeDescriptor): @@ -9553,7 +9554,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxIndirectMaxRetryExpiryCount(ClusterAttributeDescriptor): @@ -9569,7 +9570,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxErrCcaCount(ClusterAttributeDescriptor): @@ -9585,7 +9586,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxErrAbortCount(ClusterAttributeDescriptor): @@ -9601,7 +9602,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxErrBusyChannelCount(ClusterAttributeDescriptor): @@ -9617,7 +9618,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxTotalCount(ClusterAttributeDescriptor): @@ -9633,7 +9634,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxUnicastCount(ClusterAttributeDescriptor): @@ -9649,7 +9650,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxBroadcastCount(ClusterAttributeDescriptor): @@ -9665,7 +9666,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxDataCount(ClusterAttributeDescriptor): @@ -9681,7 +9682,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxDataPollCount(ClusterAttributeDescriptor): @@ -9697,7 +9698,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxBeaconCount(ClusterAttributeDescriptor): @@ -9713,7 +9714,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxBeaconRequestCount(ClusterAttributeDescriptor): @@ -9729,7 +9730,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxOtherCount(ClusterAttributeDescriptor): @@ -9745,7 +9746,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxAddressFilteredCount(ClusterAttributeDescriptor): @@ -9761,7 +9762,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxDestAddrFilteredCount(ClusterAttributeDescriptor): @@ -9777,7 +9778,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxDuplicatedCount(ClusterAttributeDescriptor): @@ -9793,7 +9794,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxErrNoFrameCount(ClusterAttributeDescriptor): @@ -9809,7 +9810,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxErrUnknownNeighborCount(ClusterAttributeDescriptor): @@ -9825,7 +9826,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxErrInvalidSrcAddrCount(ClusterAttributeDescriptor): @@ -9841,7 +9842,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxErrSecCount(ClusterAttributeDescriptor): @@ -9857,7 +9858,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxErrFcsCount(ClusterAttributeDescriptor): @@ -9873,7 +9874,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RxErrOtherCount(ClusterAttributeDescriptor): @@ -9889,7 +9890,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ActiveTimestamp(ClusterAttributeDescriptor): @@ -9905,7 +9906,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class PendingTimestamp(ClusterAttributeDescriptor): @@ -9921,7 +9922,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class Delay(ClusterAttributeDescriptor): @@ -9937,7 +9938,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class SecurityPolicy(ClusterAttributeDescriptor): @@ -9953,7 +9954,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.SecurityPolicy]) - value: 'typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.SecurityPolicy]' = NullValue + value: typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.SecurityPolicy] = NullValue @dataclass class ChannelPage0Mask(ClusterAttributeDescriptor): @@ -9969,7 +9970,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, bytes]) - value: 'typing.Union[Nullable, bytes]' = NullValue + value: typing.Union[Nullable, bytes] = NullValue @dataclass class OperationalDatasetComponents(ClusterAttributeDescriptor): @@ -9985,7 +9986,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.OperationalDatasetComponents]) - value: 'typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.OperationalDatasetComponents]' = NullValue + value: typing.Union[Nullable, ThreadNetworkDiagnostics.Structs.OperationalDatasetComponents] = NullValue @dataclass class ActiveNetworkFaultsList(ClusterAttributeDescriptor): @@ -10001,7 +10002,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum]) - value: 'typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum]' = field(default_factory=lambda: []) + value: typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -10017,7 +10018,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -10033,7 +10034,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -10049,7 +10050,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -10065,7 +10066,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -10081,7 +10082,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -10097,7 +10098,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -10117,7 +10118,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="connectionStatus", Tag=0, Type=ThreadNetworkDiagnostics.Enums.ConnectionStatusEnum), ]) - connectionStatus: 'ThreadNetworkDiagnostics.Enums.ConnectionStatusEnum' = 0 + connectionStatus: ThreadNetworkDiagnostics.Enums.ConnectionStatusEnum = 0 @dataclass class NetworkFaultChange(ClusterEvent): @@ -10137,8 +10138,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="previous", Tag=1, Type=typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum]), ]) - current: 'typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum]' = field(default_factory=lambda: []) - previous: 'typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum]' = field(default_factory=lambda: []) + current: typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum] = field(default_factory=lambda: []) + previous: typing.List[ThreadNetworkDiagnostics.Enums.NetworkFaultEnum] = field(default_factory=lambda: []) @dataclass @@ -10170,25 +10171,25 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - bssid: 'typing.Union[Nullable, bytes]' = None - securityType: 'typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.SecurityTypeEnum]' = None - wiFiVersion: 'typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.WiFiVersionEnum]' = None - channelNumber: 'typing.Union[Nullable, uint]' = None - rssi: 'typing.Union[Nullable, int]' = None - beaconLostCount: 'typing.Union[None, Nullable, uint]' = None - beaconRxCount: 'typing.Union[None, Nullable, uint]' = None - packetMulticastRxCount: 'typing.Union[None, Nullable, uint]' = None - packetMulticastTxCount: 'typing.Union[None, Nullable, uint]' = None - packetUnicastRxCount: 'typing.Union[None, Nullable, uint]' = None - packetUnicastTxCount: 'typing.Union[None, Nullable, uint]' = None - currentMaxRate: 'typing.Union[None, Nullable, uint]' = None - overrunCount: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + bssid: typing.Union[Nullable, bytes] = NullValue + securityType: typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.SecurityTypeEnum] = NullValue + wiFiVersion: typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.WiFiVersionEnum] = NullValue + channelNumber: typing.Union[Nullable, uint] = NullValue + rssi: typing.Union[Nullable, int] = NullValue + beaconLostCount: typing.Union[None, Nullable, uint] = None + beaconRxCount: typing.Union[None, Nullable, uint] = None + packetMulticastRxCount: typing.Union[None, Nullable, uint] = None + packetMulticastTxCount: typing.Union[None, Nullable, uint] = None + packetUnicastRxCount: typing.Union[None, Nullable, uint] = None + packetUnicastTxCount: typing.Union[None, Nullable, uint] = None + currentMaxRate: typing.Union[None, Nullable, uint] = None + overrunCount: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class AssociationFailureCauseEnum(MatterIntEnum): @@ -10249,7 +10250,7 @@ class ResetCounts(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000036 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -10272,7 +10273,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, bytes]) - value: 'typing.Union[Nullable, bytes]' = NullValue + value: typing.Union[Nullable, bytes] = NullValue @dataclass class SecurityType(ClusterAttributeDescriptor): @@ -10288,7 +10289,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.SecurityTypeEnum]) - value: 'typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.SecurityTypeEnum]' = NullValue + value: typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.SecurityTypeEnum] = NullValue @dataclass class WiFiVersion(ClusterAttributeDescriptor): @@ -10304,7 +10305,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.WiFiVersionEnum]) - value: 'typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.WiFiVersionEnum]' = NullValue + value: typing.Union[Nullable, WiFiNetworkDiagnostics.Enums.WiFiVersionEnum] = NullValue @dataclass class ChannelNumber(ClusterAttributeDescriptor): @@ -10320,7 +10321,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class Rssi(ClusterAttributeDescriptor): @@ -10336,7 +10337,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class BeaconLostCount(ClusterAttributeDescriptor): @@ -10352,7 +10353,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class BeaconRxCount(ClusterAttributeDescriptor): @@ -10368,7 +10369,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class PacketMulticastRxCount(ClusterAttributeDescriptor): @@ -10384,7 +10385,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class PacketMulticastTxCount(ClusterAttributeDescriptor): @@ -10400,7 +10401,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class PacketUnicastRxCount(ClusterAttributeDescriptor): @@ -10416,7 +10417,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class PacketUnicastTxCount(ClusterAttributeDescriptor): @@ -10432,7 +10433,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class CurrentMaxRate(ClusterAttributeDescriptor): @@ -10448,7 +10449,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OverrunCount(ClusterAttributeDescriptor): @@ -10464,7 +10465,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -10480,7 +10481,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -10496,7 +10497,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -10512,7 +10513,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -10528,7 +10529,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -10544,7 +10545,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -10560,7 +10561,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -10580,7 +10581,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="reasonCode", Tag=0, Type=uint), ]) - reasonCode: 'uint' = 0 + reasonCode: uint = 0 @dataclass class AssociationFailure(ClusterEvent): @@ -10600,8 +10601,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="status", Tag=1, Type=uint), ]) - associationFailureCause: 'WiFiNetworkDiagnostics.Enums.AssociationFailureCauseEnum' = 0 - status: 'uint' = 0 + associationFailureCause: WiFiNetworkDiagnostics.Enums.AssociationFailureCauseEnum = 0 + status: uint = 0 @dataclass class ConnectionStatus(ClusterEvent): @@ -10620,7 +10621,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="connectionStatus", Tag=0, Type=WiFiNetworkDiagnostics.Enums.ConnectionStatusEnum), ]) - connectionStatus: 'WiFiNetworkDiagnostics.Enums.ConnectionStatusEnum' = 0 + connectionStatus: WiFiNetworkDiagnostics.Enums.ConnectionStatusEnum = 0 @dataclass @@ -10648,21 +10649,21 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - PHYRate: 'typing.Union[None, Nullable, EthernetNetworkDiagnostics.Enums.PHYRateEnum]' = None - fullDuplex: 'typing.Union[None, Nullable, bool]' = None - packetRxCount: 'typing.Optional[uint]' = None - packetTxCount: 'typing.Optional[uint]' = None - txErrCount: 'typing.Optional[uint]' = None - collisionCount: 'typing.Optional[uint]' = None - overrunCount: 'typing.Optional[uint]' = None - carrierDetect: 'typing.Union[None, Nullable, bool]' = None - timeSinceReset: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + PHYRate: typing.Union[None, Nullable, EthernetNetworkDiagnostics.Enums.PHYRateEnum] = None + fullDuplex: typing.Union[None, Nullable, bool] = None + packetRxCount: typing.Optional[uint] = None + packetTxCount: typing.Optional[uint] = None + txErrCount: typing.Optional[uint] = None + collisionCount: typing.Optional[uint] = None + overrunCount: typing.Optional[uint] = None + carrierDetect: typing.Union[None, Nullable, bool] = None + timeSinceReset: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class PHYRateEnum(MatterIntEnum): @@ -10693,7 +10694,7 @@ class ResetCounts(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000037 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -10716,7 +10717,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, EthernetNetworkDiagnostics.Enums.PHYRateEnum]) - value: 'typing.Union[None, Nullable, EthernetNetworkDiagnostics.Enums.PHYRateEnum]' = None + value: typing.Union[None, Nullable, EthernetNetworkDiagnostics.Enums.PHYRateEnum] = None @dataclass class FullDuplex(ClusterAttributeDescriptor): @@ -10732,7 +10733,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, bool]) - value: 'typing.Union[None, Nullable, bool]' = None + value: typing.Union[None, Nullable, bool] = None @dataclass class PacketRxCount(ClusterAttributeDescriptor): @@ -10748,7 +10749,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PacketTxCount(ClusterAttributeDescriptor): @@ -10764,7 +10765,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TxErrCount(ClusterAttributeDescriptor): @@ -10780,7 +10781,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CollisionCount(ClusterAttributeDescriptor): @@ -10796,7 +10797,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class OverrunCount(ClusterAttributeDescriptor): @@ -10812,7 +10813,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CarrierDetect(ClusterAttributeDescriptor): @@ -10828,7 +10829,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, bool]) - value: 'typing.Union[None, Nullable, bool]' = None + value: typing.Union[None, Nullable, bool] = None @dataclass class TimeSinceReset(ClusterAttributeDescriptor): @@ -10844,7 +10845,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -10860,7 +10861,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -10876,7 +10877,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -10892,7 +10893,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -10908,7 +10909,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -10924,7 +10925,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -10940,7 +10941,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -10972,25 +10973,25 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - UTCTime: 'typing.Union[Nullable, uint]' = None - granularity: 'TimeSynchronization.Enums.GranularityEnum' = None - timeSource: 'typing.Optional[TimeSynchronization.Enums.TimeSourceEnum]' = None - trustedTimeSource: 'typing.Union[None, Nullable, TimeSynchronization.Structs.TrustedTimeSourceStruct]' = None - defaultNTP: 'typing.Union[None, Nullable, str]' = None - timeZone: 'typing.Optional[typing.List[TimeSynchronization.Structs.TimeZoneStruct]]' = None - DSTOffset: 'typing.Optional[typing.List[TimeSynchronization.Structs.DSTOffsetStruct]]' = None - localTime: 'typing.Union[None, Nullable, uint]' = None - timeZoneDatabase: 'typing.Optional[TimeSynchronization.Enums.TimeZoneDatabaseEnum]' = None - NTPServerAvailable: 'typing.Optional[bool]' = None - timeZoneListMaxSize: 'typing.Optional[uint]' = None - DSTOffsetListMaxSize: 'typing.Optional[uint]' = None - supportsDNSResolve: 'typing.Optional[bool]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + UTCTime: typing.Union[Nullable, uint] = NullValue + granularity: TimeSynchronization.Enums.GranularityEnum = 0 + timeSource: typing.Optional[TimeSynchronization.Enums.TimeSourceEnum] = None + trustedTimeSource: typing.Union[None, Nullable, TimeSynchronization.Structs.TrustedTimeSourceStruct] = None + defaultNTP: typing.Union[None, Nullable, str] = None + timeZone: typing.Optional[typing.List[TimeSynchronization.Structs.TimeZoneStruct]] = None + DSTOffset: typing.Optional[typing.List[TimeSynchronization.Structs.DSTOffsetStruct]] = None + localTime: typing.Union[None, Nullable, uint] = None + timeZoneDatabase: typing.Optional[TimeSynchronization.Enums.TimeZoneDatabaseEnum] = None + NTPServerAvailable: typing.Optional[bool] = None + timeZoneListMaxSize: typing.Optional[uint] = None + DSTOffsetListMaxSize: typing.Optional[uint] = None + supportsDNSResolve: typing.Optional[bool] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class GranularityEnum(MatterIntEnum): @@ -11119,7 +11120,7 @@ class SetUTCTime(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000038 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -11130,16 +11131,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="timeSource", Tag=2, Type=typing.Optional[TimeSynchronization.Enums.TimeSourceEnum]), ]) - UTCTime: 'uint' = 0 - granularity: 'TimeSynchronization.Enums.GranularityEnum' = 0 - timeSource: 'typing.Optional[TimeSynchronization.Enums.TimeSourceEnum]' = None + UTCTime: uint = 0 + granularity: TimeSynchronization.Enums.GranularityEnum = 0 + timeSource: typing.Optional[TimeSynchronization.Enums.TimeSourceEnum] = None @dataclass class SetTrustedTimeSource(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000038 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -11148,7 +11149,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="trustedTimeSource", Tag=0, Type=typing.Union[Nullable, TimeSynchronization.Structs.FabricScopedTrustedTimeSourceStruct]), ]) - trustedTimeSource: 'typing.Union[Nullable, TimeSynchronization.Structs.FabricScopedTrustedTimeSourceStruct]' = NullValue + trustedTimeSource: typing.Union[Nullable, TimeSynchronization.Structs.FabricScopedTrustedTimeSourceStruct] = NullValue @dataclass class SetTimeZone(ClusterCommand): @@ -11164,14 +11165,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="timeZone", Tag=0, Type=typing.List[TimeSynchronization.Structs.TimeZoneStruct]), ]) - timeZone: 'typing.List[TimeSynchronization.Structs.TimeZoneStruct]' = field(default_factory=lambda: []) + timeZone: typing.List[TimeSynchronization.Structs.TimeZoneStruct] = field(default_factory=lambda: []) @dataclass class SetTimeZoneResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000038 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -11180,14 +11181,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="DSTOffsetRequired", Tag=0, Type=bool), ]) - DSTOffsetRequired: 'bool' = False + DSTOffsetRequired: bool = False @dataclass class SetDSTOffset(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000038 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -11196,14 +11197,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="DSTOffset", Tag=0, Type=typing.List[TimeSynchronization.Structs.DSTOffsetStruct]), ]) - DSTOffset: 'typing.List[TimeSynchronization.Structs.DSTOffsetStruct]' = field(default_factory=lambda: []) + DSTOffset: typing.List[TimeSynchronization.Structs.DSTOffsetStruct] = field(default_factory=lambda: []) @dataclass class SetDefaultNTP(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000038 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -11212,7 +11213,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="defaultNTP", Tag=0, Type=typing.Union[Nullable, str]), ]) - defaultNTP: 'typing.Union[Nullable, str]' = NullValue + defaultNTP: typing.Union[Nullable, str] = NullValue class Attributes: @dataclass @@ -11229,7 +11230,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class Granularity(ClusterAttributeDescriptor): @@ -11245,7 +11246,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=TimeSynchronization.Enums.GranularityEnum) - value: 'TimeSynchronization.Enums.GranularityEnum' = 0 + value: TimeSynchronization.Enums.GranularityEnum = 0 @dataclass class TimeSource(ClusterAttributeDescriptor): @@ -11261,7 +11262,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[TimeSynchronization.Enums.TimeSourceEnum]) - value: 'typing.Optional[TimeSynchronization.Enums.TimeSourceEnum]' = None + value: typing.Optional[TimeSynchronization.Enums.TimeSourceEnum] = None @dataclass class TrustedTimeSource(ClusterAttributeDescriptor): @@ -11277,7 +11278,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, TimeSynchronization.Structs.TrustedTimeSourceStruct]) - value: 'typing.Union[None, Nullable, TimeSynchronization.Structs.TrustedTimeSourceStruct]' = None + value: typing.Union[None, Nullable, TimeSynchronization.Structs.TrustedTimeSourceStruct] = None @dataclass class DefaultNTP(ClusterAttributeDescriptor): @@ -11293,7 +11294,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, str]) - value: 'typing.Union[None, Nullable, str]' = None + value: typing.Union[None, Nullable, str] = None @dataclass class TimeZone(ClusterAttributeDescriptor): @@ -11309,7 +11310,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[TimeSynchronization.Structs.TimeZoneStruct]]) - value: 'typing.Optional[typing.List[TimeSynchronization.Structs.TimeZoneStruct]]' = None + value: typing.Optional[typing.List[TimeSynchronization.Structs.TimeZoneStruct]] = None @dataclass class DSTOffset(ClusterAttributeDescriptor): @@ -11325,7 +11326,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[TimeSynchronization.Structs.DSTOffsetStruct]]) - value: 'typing.Optional[typing.List[TimeSynchronization.Structs.DSTOffsetStruct]]' = None + value: typing.Optional[typing.List[TimeSynchronization.Structs.DSTOffsetStruct]] = None @dataclass class LocalTime(ClusterAttributeDescriptor): @@ -11341,7 +11342,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class TimeZoneDatabase(ClusterAttributeDescriptor): @@ -11357,7 +11358,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[TimeSynchronization.Enums.TimeZoneDatabaseEnum]) - value: 'typing.Optional[TimeSynchronization.Enums.TimeZoneDatabaseEnum]' = None + value: typing.Optional[TimeSynchronization.Enums.TimeZoneDatabaseEnum] = None @dataclass class NTPServerAvailable(ClusterAttributeDescriptor): @@ -11373,7 +11374,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class TimeZoneListMaxSize(ClusterAttributeDescriptor): @@ -11389,7 +11390,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class DSTOffsetListMaxSize(ClusterAttributeDescriptor): @@ -11405,7 +11406,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SupportsDNSResolve(ClusterAttributeDescriptor): @@ -11421,7 +11422,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -11437,7 +11438,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -11453,7 +11454,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -11469,7 +11470,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -11485,7 +11486,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -11501,7 +11502,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -11517,7 +11518,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -11553,7 +11554,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="DSTOffsetActive", Tag=0, Type=bool), ]) - DSTOffsetActive: 'bool' = False + DSTOffsetActive: bool = False @dataclass class TimeZoneStatus(ClusterEvent): @@ -11573,8 +11574,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="name", Tag=1, Type=typing.Optional[str]), ]) - offset: 'int' = 0 - name: 'typing.Optional[str]' = None + offset: int = 0 + name: typing.Optional[str] = None @dataclass class TimeFailure(ClusterEvent): @@ -11642,29 +11643,29 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - vendorName: 'typing.Optional[str]' = None - vendorID: 'typing.Optional[uint]' = None - productName: 'typing.Optional[str]' = None - productID: 'typing.Optional[uint]' = None - nodeLabel: 'typing.Optional[str]' = None - hardwareVersion: 'typing.Optional[uint]' = None - hardwareVersionString: 'typing.Optional[str]' = None - softwareVersion: 'typing.Optional[uint]' = None - softwareVersionString: 'typing.Optional[str]' = None - manufacturingDate: 'typing.Optional[str]' = None - partNumber: 'typing.Optional[str]' = None - productURL: 'typing.Optional[str]' = None - productLabel: 'typing.Optional[str]' = None - serialNumber: 'typing.Optional[str]' = None - reachable: 'bool' = None - uniqueID: 'str' = None - productAppearance: 'typing.Optional[BridgedDeviceBasicInformation.Structs.ProductAppearanceStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + vendorName: typing.Optional[str] = None + vendorID: typing.Optional[uint] = None + productName: typing.Optional[str] = None + productID: typing.Optional[uint] = None + nodeLabel: typing.Optional[str] = None + hardwareVersion: typing.Optional[uint] = None + hardwareVersionString: typing.Optional[str] = None + softwareVersion: typing.Optional[uint] = None + softwareVersionString: typing.Optional[str] = None + manufacturingDate: typing.Optional[str] = None + partNumber: typing.Optional[str] = None + productURL: typing.Optional[str] = None + productLabel: typing.Optional[str] = None + serialNumber: typing.Optional[str] = None + reachable: bool = False + uniqueID: str = "" + productAppearance: typing.Optional[BridgedDeviceBasicInformation.Structs.ProductAppearanceStruct] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ColorEnum(MatterIntEnum): @@ -11732,7 +11733,7 @@ class KeepActive(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000039 command_id: typing.ClassVar[int] = 0x00000080 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -11742,8 +11743,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="timeoutMs", Tag=1, Type=uint), ]) - stayActiveDuration: 'uint' = 0 - timeoutMs: 'uint' = 0 + stayActiveDuration: uint = 0 + timeoutMs: uint = 0 class Attributes: @dataclass @@ -11760,7 +11761,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class VendorID(ClusterAttributeDescriptor): @@ -11776,7 +11777,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ProductName(ClusterAttributeDescriptor): @@ -11792,7 +11793,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class ProductID(ClusterAttributeDescriptor): @@ -11808,7 +11809,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NodeLabel(ClusterAttributeDescriptor): @@ -11824,7 +11825,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class HardwareVersion(ClusterAttributeDescriptor): @@ -11840,7 +11841,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class HardwareVersionString(ClusterAttributeDescriptor): @@ -11856,7 +11857,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class SoftwareVersion(ClusterAttributeDescriptor): @@ -11872,7 +11873,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SoftwareVersionString(ClusterAttributeDescriptor): @@ -11888,7 +11889,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class ManufacturingDate(ClusterAttributeDescriptor): @@ -11904,7 +11905,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class PartNumber(ClusterAttributeDescriptor): @@ -11920,7 +11921,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class ProductURL(ClusterAttributeDescriptor): @@ -11936,7 +11937,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class ProductLabel(ClusterAttributeDescriptor): @@ -11952,7 +11953,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class SerialNumber(ClusterAttributeDescriptor): @@ -11968,7 +11969,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class Reachable(ClusterAttributeDescriptor): @@ -11984,7 +11985,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class UniqueID(ClusterAttributeDescriptor): @@ -12000,7 +12001,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class ProductAppearance(ClusterAttributeDescriptor): @@ -12016,7 +12017,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[BridgedDeviceBasicInformation.Structs.ProductAppearanceStruct]) - value: 'typing.Optional[BridgedDeviceBasicInformation.Structs.ProductAppearanceStruct]' = None + value: typing.Optional[BridgedDeviceBasicInformation.Structs.ProductAppearanceStruct] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -12032,7 +12033,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -12048,7 +12049,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -12064,7 +12065,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -12080,7 +12081,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -12096,7 +12097,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -12112,7 +12113,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -12132,7 +12133,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="softwareVersion", Tag=0, Type=uint), ]) - softwareVersion: 'uint' = 0 + softwareVersion: uint = 0 @dataclass class ShutDown(ClusterEvent): @@ -12183,7 +12184,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="reachableNewValue", Tag=0, Type=bool), ]) - reachableNewValue: 'bool' = False + reachableNewValue: bool = False @dataclass class ActiveChanged(ClusterEvent): @@ -12202,7 +12203,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="promisedActiveDuration", Tag=0, Type=uint), ]) - promisedActiveDuration: 'uint' = 0 + promisedActiveDuration: uint = 0 @dataclass @@ -12224,15 +12225,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - numberOfPositions: 'uint' = None - currentPosition: 'uint' = None - multiPressMax: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + numberOfPositions: uint = 0 + currentPosition: uint = 0 + multiPressMax: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -12258,7 +12259,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class CurrentPosition(ClusterAttributeDescriptor): @@ -12274,7 +12275,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class MultiPressMax(ClusterAttributeDescriptor): @@ -12290,7 +12291,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -12306,7 +12307,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -12322,7 +12323,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -12338,7 +12339,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -12354,7 +12355,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -12370,7 +12371,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -12386,7 +12387,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -12406,7 +12407,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newPosition", Tag=0, Type=uint), ]) - newPosition: 'uint' = 0 + newPosition: uint = 0 @dataclass class InitialPress(ClusterEvent): @@ -12425,7 +12426,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newPosition", Tag=0, Type=uint), ]) - newPosition: 'uint' = 0 + newPosition: uint = 0 @dataclass class LongPress(ClusterEvent): @@ -12444,7 +12445,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newPosition", Tag=0, Type=uint), ]) - newPosition: 'uint' = 0 + newPosition: uint = 0 @dataclass class ShortRelease(ClusterEvent): @@ -12463,7 +12464,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="previousPosition", Tag=0, Type=uint), ]) - previousPosition: 'uint' = 0 + previousPosition: uint = 0 @dataclass class LongRelease(ClusterEvent): @@ -12482,7 +12483,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="previousPosition", Tag=0, Type=uint), ]) - previousPosition: 'uint' = 0 + previousPosition: uint = 0 @dataclass class MultiPressOngoing(ClusterEvent): @@ -12502,8 +12503,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="currentNumberOfPressesCounted", Tag=1, Type=uint), ]) - newPosition: 'uint' = 0 - currentNumberOfPressesCounted: 'uint' = 0 + newPosition: uint = 0 + currentNumberOfPressesCounted: uint = 0 @dataclass class MultiPressComplete(ClusterEvent): @@ -12523,8 +12524,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="totalNumberOfPressesCounted", Tag=1, Type=uint), ]) - previousPosition: 'uint' = 0 - totalNumberOfPressesCounted: 'uint' = 0 + previousPosition: uint = 0 + totalNumberOfPressesCounted: uint = 0 @dataclass @@ -12546,15 +12547,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - windowStatus: 'AdministratorCommissioning.Enums.CommissioningWindowStatusEnum' = None - adminFabricIndex: 'typing.Union[Nullable, uint]' = None - adminVendorId: 'typing.Union[Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + windowStatus: AdministratorCommissioning.Enums.CommissioningWindowStatusEnum = 0 + adminFabricIndex: typing.Union[Nullable, uint] = NullValue + adminVendorId: typing.Union[Nullable, uint] = NullValue + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class CommissioningWindowStatusEnum(MatterIntEnum): @@ -12587,7 +12588,7 @@ class OpenCommissioningWindow(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003C command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -12604,18 +12605,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - commissioningTimeout: 'uint' = 0 - PAKEPasscodeVerifier: 'bytes' = b"" - discriminator: 'uint' = 0 - iterations: 'uint' = 0 - salt: 'bytes' = b"" + commissioningTimeout: uint = 0 + PAKEPasscodeVerifier: bytes = b"" + discriminator: uint = 0 + iterations: uint = 0 + salt: bytes = b"" @dataclass class OpenBasicCommissioningWindow(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003C command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -12628,14 +12629,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - commissioningTimeout: 'uint' = 0 + commissioningTimeout: uint = 0 @dataclass class RevokeCommissioning(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003C command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -12662,7 +12663,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=AdministratorCommissioning.Enums.CommissioningWindowStatusEnum) - value: 'AdministratorCommissioning.Enums.CommissioningWindowStatusEnum' = 0 + value: AdministratorCommissioning.Enums.CommissioningWindowStatusEnum = 0 @dataclass class AdminFabricIndex(ClusterAttributeDescriptor): @@ -12678,7 +12679,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class AdminVendorId(ClusterAttributeDescriptor): @@ -12694,7 +12695,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -12710,7 +12711,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -12726,7 +12727,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -12742,7 +12743,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -12758,7 +12759,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -12774,7 +12775,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -12790,7 +12791,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -12815,18 +12816,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - NOCs: 'typing.List[OperationalCredentials.Structs.NOCStruct]' = None - fabrics: 'typing.List[OperationalCredentials.Structs.FabricDescriptorStruct]' = None - supportedFabrics: 'uint' = None - commissionedFabrics: 'uint' = None - trustedRootCertificates: 'typing.List[bytes]' = None - currentFabricIndex: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + NOCs: typing.List[OperationalCredentials.Structs.NOCStruct] = field(default_factory=lambda: []) + fabrics: typing.List[OperationalCredentials.Structs.FabricDescriptorStruct] = field(default_factory=lambda: []) + supportedFabrics: uint = 0 + commissionedFabrics: uint = 0 + trustedRootCertificates: typing.List[bytes] = field(default_factory=lambda: []) + currentFabricIndex: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class CertificateChainTypeEnum(MatterIntEnum): @@ -12907,14 +12908,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="attestationNonce", Tag=0, Type=bytes), ]) - attestationNonce: 'bytes' = b"" + attestationNonce: bytes = b"" @dataclass class AttestationResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003E command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -12924,8 +12925,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="attestationSignature", Tag=1, Type=bytes), ]) - attestationElements: 'bytes' = b"" - attestationSignature: 'bytes' = b"" + attestationElements: bytes = b"" + attestationSignature: bytes = b"" @dataclass class CertificateChainRequest(ClusterCommand): @@ -12941,14 +12942,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="certificateType", Tag=0, Type=OperationalCredentials.Enums.CertificateChainTypeEnum), ]) - certificateType: 'OperationalCredentials.Enums.CertificateChainTypeEnum' = 0 + certificateType: OperationalCredentials.Enums.CertificateChainTypeEnum = 0 @dataclass class CertificateChainResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003E command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -12957,7 +12958,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="certificate", Tag=0, Type=bytes), ]) - certificate: 'bytes' = b"" + certificate: bytes = b"" @dataclass class CSRRequest(ClusterCommand): @@ -12974,15 +12975,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="isForUpdateNOC", Tag=1, Type=typing.Optional[bool]), ]) - CSRNonce: 'bytes' = b"" - isForUpdateNOC: 'typing.Optional[bool]' = None + CSRNonce: bytes = b"" + isForUpdateNOC: typing.Optional[bool] = None @dataclass class CSRResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003E command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -12992,8 +12993,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="attestationSignature", Tag=1, Type=bytes), ]) - NOCSRElements: 'bytes' = b"" - attestationSignature: 'bytes' = b"" + NOCSRElements: bytes = b"" + attestationSignature: bytes = b"" @dataclass class AddNOC(ClusterCommand): @@ -13013,11 +13014,11 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="adminVendorId", Tag=4, Type=uint), ]) - NOCValue: 'bytes' = b"" - ICACValue: 'typing.Optional[bytes]' = None - IPKValue: 'bytes' = b"" - caseAdminSubject: 'uint' = 0 - adminVendorId: 'uint' = 0 + NOCValue: bytes = b"" + ICACValue: typing.Optional[bytes] = None + IPKValue: bytes = b"" + caseAdminSubject: uint = 0 + adminVendorId: uint = 0 @dataclass class UpdateNOC(ClusterCommand): @@ -13034,15 +13035,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="ICACValue", Tag=1, Type=typing.Optional[bytes]), ]) - NOCValue: 'bytes' = b"" - ICACValue: 'typing.Optional[bytes]' = None + NOCValue: bytes = b"" + ICACValue: typing.Optional[bytes] = None @dataclass class NOCResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003E command_id: typing.ClassVar[int] = 0x00000008 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -13053,9 +13054,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="debugText", Tag=2, Type=typing.Optional[str]), ]) - statusCode: 'OperationalCredentials.Enums.NodeOperationalCertStatusEnum' = 0 - fabricIndex: 'typing.Optional[uint]' = None - debugText: 'typing.Optional[str]' = None + statusCode: OperationalCredentials.Enums.NodeOperationalCertStatusEnum = 0 + fabricIndex: typing.Optional[uint] = None + debugText: typing.Optional[str] = None @dataclass class UpdateFabricLabel(ClusterCommand): @@ -13071,7 +13072,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="label", Tag=0, Type=str), ]) - label: 'str' = "" + label: str = "" @dataclass class RemoveFabric(ClusterCommand): @@ -13087,14 +13088,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=0, Type=uint), ]) - fabricIndex: 'uint' = 0 + fabricIndex: uint = 0 @dataclass class AddTrustedRootCertificate(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003E command_id: typing.ClassVar[int] = 0x0000000B is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -13103,7 +13104,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="rootCACertificate", Tag=0, Type=bytes), ]) - rootCACertificate: 'bytes' = b"" + rootCACertificate: bytes = b"" class Attributes: @dataclass @@ -13120,7 +13121,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[OperationalCredentials.Structs.NOCStruct]) - value: 'typing.List[OperationalCredentials.Structs.NOCStruct]' = field(default_factory=lambda: []) + value: typing.List[OperationalCredentials.Structs.NOCStruct] = field(default_factory=lambda: []) @dataclass class Fabrics(ClusterAttributeDescriptor): @@ -13136,7 +13137,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[OperationalCredentials.Structs.FabricDescriptorStruct]) - value: 'typing.List[OperationalCredentials.Structs.FabricDescriptorStruct]' = field(default_factory=lambda: []) + value: typing.List[OperationalCredentials.Structs.FabricDescriptorStruct] = field(default_factory=lambda: []) @dataclass class SupportedFabrics(ClusterAttributeDescriptor): @@ -13152,7 +13153,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class CommissionedFabrics(ClusterAttributeDescriptor): @@ -13168,7 +13169,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class TrustedRootCertificates(ClusterAttributeDescriptor): @@ -13184,7 +13185,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[bytes]) - value: 'typing.List[bytes]' = field(default_factory=lambda: []) + value: typing.List[bytes] = field(default_factory=lambda: []) @dataclass class CurrentFabricIndex(ClusterAttributeDescriptor): @@ -13200,7 +13201,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -13216,7 +13217,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -13232,7 +13233,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -13248,7 +13249,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -13264,7 +13265,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -13280,7 +13281,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -13296,7 +13297,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -13319,16 +13320,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - groupKeyMap: 'typing.List[GroupKeyManagement.Structs.GroupKeyMapStruct]' = None - groupTable: 'typing.List[GroupKeyManagement.Structs.GroupInfoMapStruct]' = None - maxGroupsPerFabric: 'uint' = None - maxGroupKeysPerFabric: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + groupKeyMap: typing.List[GroupKeyManagement.Structs.GroupKeyMapStruct] = field(default_factory=lambda: []) + groupTable: typing.List[GroupKeyManagement.Structs.GroupInfoMapStruct] = field(default_factory=lambda: []) + maxGroupsPerFabric: uint = 0 + maxGroupKeysPerFabric: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class GroupKeySecurityPolicyEnum(MatterIntEnum): @@ -13408,7 +13409,7 @@ class KeySetWrite(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003F command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -13417,7 +13418,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupKeySet", Tag=0, Type=GroupKeyManagement.Structs.GroupKeySetStruct), ]) - groupKeySet: 'GroupKeyManagement.Structs.GroupKeySetStruct' = field(default_factory=lambda: GroupKeyManagement.Structs.GroupKeySetStruct()) + groupKeySet: GroupKeyManagement.Structs.GroupKeySetStruct = field(default_factory=lambda: GroupKeyManagement.Structs.GroupKeySetStruct()) @dataclass class KeySetRead(ClusterCommand): @@ -13433,14 +13434,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupKeySetID", Tag=0, Type=uint), ]) - groupKeySetID: 'uint' = 0 + groupKeySetID: uint = 0 @dataclass class KeySetReadResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003F command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -13449,14 +13450,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupKeySet", Tag=0, Type=GroupKeyManagement.Structs.GroupKeySetStruct), ]) - groupKeySet: 'GroupKeyManagement.Structs.GroupKeySetStruct' = field(default_factory=lambda: GroupKeyManagement.Structs.GroupKeySetStruct()) + groupKeySet: GroupKeyManagement.Structs.GroupKeySetStruct = field(default_factory=lambda: GroupKeyManagement.Structs.GroupKeySetStruct()) @dataclass class KeySetRemove(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003F command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -13465,7 +13466,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupKeySetID", Tag=0, Type=uint), ]) - groupKeySetID: 'uint' = 0 + groupKeySetID: uint = 0 @dataclass class KeySetReadAllIndices(ClusterCommand): @@ -13485,7 +13486,7 @@ class KeySetReadAllIndicesResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000003F command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -13494,7 +13495,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupKeySetIDs", Tag=0, Type=typing.List[uint]), ]) - groupKeySetIDs: 'typing.List[uint]' = field(default_factory=lambda: []) + groupKeySetIDs: typing.List[uint] = field(default_factory=lambda: []) class Attributes: @dataclass @@ -13511,7 +13512,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[GroupKeyManagement.Structs.GroupKeyMapStruct]) - value: 'typing.List[GroupKeyManagement.Structs.GroupKeyMapStruct]' = field(default_factory=lambda: []) + value: typing.List[GroupKeyManagement.Structs.GroupKeyMapStruct] = field(default_factory=lambda: []) @dataclass class GroupTable(ClusterAttributeDescriptor): @@ -13527,7 +13528,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[GroupKeyManagement.Structs.GroupInfoMapStruct]) - value: 'typing.List[GroupKeyManagement.Structs.GroupInfoMapStruct]' = field(default_factory=lambda: []) + value: typing.List[GroupKeyManagement.Structs.GroupInfoMapStruct] = field(default_factory=lambda: []) @dataclass class MaxGroupsPerFabric(ClusterAttributeDescriptor): @@ -13543,7 +13544,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class MaxGroupKeysPerFabric(ClusterAttributeDescriptor): @@ -13559,7 +13560,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -13575,7 +13576,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -13591,7 +13592,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -13607,7 +13608,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -13623,7 +13624,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -13639,7 +13640,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -13655,7 +13656,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -13675,13 +13676,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - labelList: 'typing.List[FixedLabel.Structs.LabelStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + labelList: typing.List[FixedLabel.Structs.LabelStruct] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Structs: @dataclass @@ -13712,7 +13713,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[FixedLabel.Structs.LabelStruct]) - value: 'typing.List[FixedLabel.Structs.LabelStruct]' = field(default_factory=lambda: []) + value: typing.List[FixedLabel.Structs.LabelStruct] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -13728,7 +13729,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -13744,7 +13745,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -13760,7 +13761,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -13776,7 +13777,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -13792,7 +13793,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -13808,7 +13809,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -13828,13 +13829,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - labelList: 'typing.List[UserLabel.Structs.LabelStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + labelList: typing.List[UserLabel.Structs.LabelStruct] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Structs: @dataclass @@ -13865,7 +13866,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[UserLabel.Structs.LabelStruct]) - value: 'typing.List[UserLabel.Structs.LabelStruct]' = field(default_factory=lambda: []) + value: typing.List[UserLabel.Structs.LabelStruct] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -13881,7 +13882,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -13897,7 +13898,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -13913,7 +13914,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -13929,7 +13930,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -13945,7 +13946,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -13961,7 +13962,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -13980,12 +13981,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -14002,7 +14003,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -14018,7 +14019,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -14034,7 +14035,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -14050,7 +14051,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -14066,7 +14067,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -14082,7 +14083,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -14101,12 +14102,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -14123,7 +14124,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -14139,7 +14140,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -14155,7 +14156,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -14171,7 +14172,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -14187,7 +14188,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -14203,7 +14204,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -14222,12 +14223,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -14244,7 +14245,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -14260,7 +14261,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -14276,7 +14277,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -14292,7 +14293,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -14308,7 +14309,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -14324,7 +14325,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -14344,13 +14345,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - stateValue: 'bool' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + stateValue: bool = False + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -14367,7 +14368,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -14383,7 +14384,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -14399,7 +14400,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -14415,7 +14416,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -14431,7 +14432,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -14447,7 +14448,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -14463,7 +14464,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -14483,7 +14484,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="stateValue", Tag=0, Type=bool), ]) - stateValue: 'bool' = False + stateValue: bool = False @dataclass @@ -14512,22 +14513,22 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - idleModeDuration: 'uint' = None - activeModeDuration: 'uint' = None - activeModeThreshold: 'uint' = None - registeredClients: 'typing.Optional[typing.List[IcdManagement.Structs.MonitoringRegistrationStruct]]' = None - ICDCounter: 'typing.Optional[uint]' = None - clientsSupportedPerFabric: 'typing.Optional[uint]' = None - userActiveModeTriggerHint: 'typing.Optional[uint]' = None - userActiveModeTriggerInstruction: 'typing.Optional[str]' = None - operatingMode: 'typing.Optional[IcdManagement.Enums.OperatingModeEnum]' = None - maximumCheckInBackOff: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + idleModeDuration: uint = 0 + activeModeDuration: uint = 0 + activeModeThreshold: uint = 0 + registeredClients: typing.Optional[typing.List[IcdManagement.Structs.MonitoringRegistrationStruct]] = None + ICDCounter: typing.Optional[uint] = None + clientsSupportedPerFabric: typing.Optional[uint] = None + userActiveModeTriggerHint: typing.Optional[uint] = None + userActiveModeTriggerInstruction: typing.Optional[str] = None + operatingMode: typing.Optional[IcdManagement.Enums.OperatingModeEnum] = None + maximumCheckInBackOff: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ClientTypeEnum(MatterIntEnum): @@ -14611,18 +14612,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clientType", Tag=4, Type=IcdManagement.Enums.ClientTypeEnum), ]) - checkInNodeID: 'uint' = 0 - monitoredSubject: 'uint' = 0 - key: 'bytes' = b"" - verificationKey: 'typing.Optional[bytes]' = None - clientType: 'IcdManagement.Enums.ClientTypeEnum' = 0 + checkInNodeID: uint = 0 + monitoredSubject: uint = 0 + key: bytes = b"" + verificationKey: typing.Optional[bytes] = None + clientType: IcdManagement.Enums.ClientTypeEnum = 0 @dataclass class RegisterClientResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000046 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -14631,14 +14632,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="ICDCounter", Tag=0, Type=uint), ]) - ICDCounter: 'uint' = 0 + ICDCounter: uint = 0 @dataclass class UnregisterClient(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000046 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -14648,8 +14649,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="verificationKey", Tag=1, Type=typing.Optional[bytes]), ]) - checkInNodeID: 'uint' = 0 - verificationKey: 'typing.Optional[bytes]' = None + checkInNodeID: uint = 0 + verificationKey: typing.Optional[bytes] = None @dataclass class StayActiveRequest(ClusterCommand): @@ -14665,14 +14666,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="stayActiveDuration", Tag=0, Type=uint), ]) - stayActiveDuration: 'uint' = 0 + stayActiveDuration: uint = 0 @dataclass class StayActiveResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000046 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -14681,7 +14682,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="promisedActiveDuration", Tag=0, Type=uint), ]) - promisedActiveDuration: 'uint' = 0 + promisedActiveDuration: uint = 0 class Attributes: @dataclass @@ -14698,7 +14699,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ActiveModeDuration(ClusterAttributeDescriptor): @@ -14714,7 +14715,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ActiveModeThreshold(ClusterAttributeDescriptor): @@ -14730,7 +14731,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class RegisteredClients(ClusterAttributeDescriptor): @@ -14746,7 +14747,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[IcdManagement.Structs.MonitoringRegistrationStruct]]) - value: 'typing.Optional[typing.List[IcdManagement.Structs.MonitoringRegistrationStruct]]' = None + value: typing.Optional[typing.List[IcdManagement.Structs.MonitoringRegistrationStruct]] = None @dataclass class ICDCounter(ClusterAttributeDescriptor): @@ -14762,7 +14763,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ClientsSupportedPerFabric(ClusterAttributeDescriptor): @@ -14778,7 +14779,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class UserActiveModeTriggerHint(ClusterAttributeDescriptor): @@ -14794,7 +14795,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class UserActiveModeTriggerInstruction(ClusterAttributeDescriptor): @@ -14810,7 +14811,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class OperatingMode(ClusterAttributeDescriptor): @@ -14826,7 +14827,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[IcdManagement.Enums.OperatingModeEnum]) - value: 'typing.Optional[IcdManagement.Enums.OperatingModeEnum]' = None + value: typing.Optional[IcdManagement.Enums.OperatingModeEnum] = None @dataclass class MaximumCheckInBackOff(ClusterAttributeDescriptor): @@ -14842,7 +14843,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -14858,7 +14859,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -14874,7 +14875,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -14890,7 +14891,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -14906,7 +14907,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -14922,7 +14923,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -14938,7 +14939,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -14960,15 +14961,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - setTime: 'uint' = None - timeRemaining: 'uint' = None - timerState: 'Timer.Enums.TimerStatusEnum' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + setTime: uint = 0 + timeRemaining: uint = 0 + timerState: Timer.Enums.TimerStatusEnum = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class TimerStatusEnum(MatterIntEnum): @@ -14992,7 +14993,7 @@ class SetTimer(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000047 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -15001,14 +15002,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newTime", Tag=0, Type=uint), ]) - newTime: 'uint' = 0 + newTime: uint = 0 @dataclass class ResetTimer(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000047 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -15021,7 +15022,7 @@ class AddTime(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000047 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -15030,14 +15031,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="additionalTime", Tag=0, Type=uint), ]) - additionalTime: 'uint' = 0 + additionalTime: uint = 0 @dataclass class ReduceTime(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000047 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -15046,7 +15047,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="timeReduction", Tag=0, Type=uint), ]) - timeReduction: 'uint' = 0 + timeReduction: uint = 0 class Attributes: @dataclass @@ -15063,7 +15064,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class TimeRemaining(ClusterAttributeDescriptor): @@ -15079,7 +15080,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class TimerState(ClusterAttributeDescriptor): @@ -15095,7 +15096,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=Timer.Enums.TimerStatusEnum) - value: 'Timer.Enums.TimerStatusEnum' = 0 + value: Timer.Enums.TimerStatusEnum = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -15111,7 +15112,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -15127,7 +15128,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -15143,7 +15144,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -15159,7 +15160,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -15175,7 +15176,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -15191,7 +15192,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -15216,18 +15217,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - phaseList: 'typing.Union[Nullable, typing.List[str]]' = None - currentPhase: 'typing.Union[Nullable, uint]' = None - countdownTime: 'typing.Union[None, Nullable, uint]' = None - operationalStateList: 'typing.List[OvenCavityOperationalState.Structs.OperationalStateStruct]' = None - operationalState: 'OvenCavityOperationalState.Enums.OperationalStateEnum' = None - operationalError: 'OvenCavityOperationalState.Structs.ErrorStateStruct' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + phaseList: typing.Union[Nullable, typing.List[str]] = NullValue + currentPhase: typing.Union[Nullable, uint] = NullValue + countdownTime: typing.Union[None, Nullable, uint] = None + operationalStateList: typing.List[OvenCavityOperationalState.Structs.OperationalStateStruct] = field(default_factory=lambda: []) + operationalState: OvenCavityOperationalState.Enums.OperationalStateEnum = 0 + operationalError: OvenCavityOperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: OvenCavityOperationalState.Structs.ErrorStateStruct()) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ErrorStateEnum(MatterIntEnum): @@ -15339,7 +15340,7 @@ class OperationalCommandResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000048 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -15348,7 +15349,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="commandResponseState", Tag=0, Type=OvenCavityOperationalState.Structs.ErrorStateStruct), ]) - commandResponseState: 'OvenCavityOperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: OvenCavityOperationalState.Structs.ErrorStateStruct()) + commandResponseState: OvenCavityOperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: OvenCavityOperationalState.Structs.ErrorStateStruct()) class Attributes: @dataclass @@ -15365,7 +15366,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, typing.List[str]]) - value: 'typing.Union[Nullable, typing.List[str]]' = NullValue + value: typing.Union[Nullable, typing.List[str]] = NullValue @dataclass class CurrentPhase(ClusterAttributeDescriptor): @@ -15381,7 +15382,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class CountdownTime(ClusterAttributeDescriptor): @@ -15397,7 +15398,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OperationalStateList(ClusterAttributeDescriptor): @@ -15413,7 +15414,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[OvenCavityOperationalState.Structs.OperationalStateStruct]) - value: 'typing.List[OvenCavityOperationalState.Structs.OperationalStateStruct]' = field(default_factory=lambda: []) + value: typing.List[OvenCavityOperationalState.Structs.OperationalStateStruct] = field(default_factory=lambda: []) @dataclass class OperationalState(ClusterAttributeDescriptor): @@ -15429,7 +15430,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=OvenCavityOperationalState.Enums.OperationalStateEnum) - value: 'OvenCavityOperationalState.Enums.OperationalStateEnum' = 0 + value: OvenCavityOperationalState.Enums.OperationalStateEnum = 0 @dataclass class OperationalError(ClusterAttributeDescriptor): @@ -15445,7 +15446,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=OvenCavityOperationalState.Structs.ErrorStateStruct) - value: 'OvenCavityOperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: OvenCavityOperationalState.Structs.ErrorStateStruct()) + value: OvenCavityOperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: OvenCavityOperationalState.Structs.ErrorStateStruct()) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -15461,7 +15462,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -15477,7 +15478,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -15493,7 +15494,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -15509,7 +15510,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -15525,7 +15526,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -15541,7 +15542,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -15561,7 +15562,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="errorState", Tag=0, Type=OvenCavityOperationalState.Structs.ErrorStateStruct), ]) - errorState: 'OvenCavityOperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: OvenCavityOperationalState.Structs.ErrorStateStruct()) + errorState: OvenCavityOperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: OvenCavityOperationalState.Structs.ErrorStateStruct()) @dataclass class OperationCompletion(ClusterEvent): @@ -15582,9 +15583,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="pausedTime", Tag=2, Type=typing.Union[None, Nullable, uint]), ]) - completionErrorCode: 'uint' = 0 - totalOperationalTime: 'typing.Union[None, Nullable, uint]' = None - pausedTime: 'typing.Union[None, Nullable, uint]' = None + completionErrorCode: uint = 0 + totalOperationalTime: typing.Union[None, Nullable, uint] = None + pausedTime: typing.Union[None, Nullable, uint] = None @dataclass @@ -15607,16 +15608,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[OvenMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - startUpMode: 'typing.Union[None, Nullable, uint]' = None - onMode: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[OvenMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + startUpMode: typing.Union[None, Nullable, uint] = None + onMode: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -15693,14 +15694,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 @dataclass class ChangeToModeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000049 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -15710,8 +15711,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=typing.Optional[str]), ]) - status: 'uint' = 0 - statusText: 'typing.Optional[str]' = None + status: uint = 0 + statusText: typing.Optional[str] = None class Attributes: @dataclass @@ -15728,7 +15729,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[OvenMode.Structs.ModeOptionStruct]) - value: 'typing.List[OvenMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[OvenMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -15744,7 +15745,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class StartUpMode(ClusterAttributeDescriptor): @@ -15760,7 +15761,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OnMode(ClusterAttributeDescriptor): @@ -15776,7 +15777,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -15792,7 +15793,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -15808,7 +15809,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -15824,7 +15825,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -15840,7 +15841,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -15856,7 +15857,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -15872,7 +15873,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -15893,14 +15894,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedDrynessLevels: 'typing.List[LaundryDryerControls.Enums.DrynessLevelEnum]' = None - selectedDrynessLevel: 'typing.Union[Nullable, LaundryDryerControls.Enums.DrynessLevelEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedDrynessLevels: typing.List[LaundryDryerControls.Enums.DrynessLevelEnum] = field(default_factory=lambda: []) + selectedDrynessLevel: typing.Union[Nullable, LaundryDryerControls.Enums.DrynessLevelEnum] = NullValue + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class DrynessLevelEnum(MatterIntEnum): @@ -15929,7 +15930,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[LaundryDryerControls.Enums.DrynessLevelEnum]) - value: 'typing.List[LaundryDryerControls.Enums.DrynessLevelEnum]' = field(default_factory=lambda: []) + value: typing.List[LaundryDryerControls.Enums.DrynessLevelEnum] = field(default_factory=lambda: []) @dataclass class SelectedDrynessLevel(ClusterAttributeDescriptor): @@ -15945,7 +15946,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, LaundryDryerControls.Enums.DrynessLevelEnum]) - value: 'typing.Union[Nullable, LaundryDryerControls.Enums.DrynessLevelEnum]' = NullValue + value: typing.Union[Nullable, LaundryDryerControls.Enums.DrynessLevelEnum] = NullValue @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -15961,7 +15962,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -15977,7 +15978,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -15993,7 +15994,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -16009,7 +16010,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -16025,7 +16026,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -16041,7 +16042,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -16066,18 +16067,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - description: 'str' = None - standardNamespace: 'typing.Union[Nullable, uint]' = None - supportedModes: 'typing.List[ModeSelect.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - startUpMode: 'typing.Union[None, Nullable, uint]' = None - onMode: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + description: str = "" + standardNamespace: typing.Union[Nullable, uint] = NullValue + supportedModes: typing.List[ModeSelect.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + startUpMode: typing.Union[None, Nullable, uint] = None + onMode: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -16118,7 +16119,7 @@ class ChangeToMode(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000050 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -16127,7 +16128,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 class Attributes: @dataclass @@ -16144,7 +16145,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class StandardNamespace(ClusterAttributeDescriptor): @@ -16160,7 +16161,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class SupportedModes(ClusterAttributeDescriptor): @@ -16176,7 +16177,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ModeSelect.Structs.ModeOptionStruct]) - value: 'typing.List[ModeSelect.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[ModeSelect.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -16192,7 +16193,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class StartUpMode(ClusterAttributeDescriptor): @@ -16208,7 +16209,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OnMode(ClusterAttributeDescriptor): @@ -16224,7 +16225,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -16240,7 +16241,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -16256,7 +16257,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -16272,7 +16273,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -16288,7 +16289,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -16304,7 +16305,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -16320,7 +16321,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -16343,16 +16344,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[LaundryWasherMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - startUpMode: 'typing.Union[None, Nullable, uint]' = None - onMode: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[LaundryWasherMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + startUpMode: typing.Union[None, Nullable, uint] = None + onMode: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -16424,14 +16425,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 @dataclass class ChangeToModeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000051 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -16441,8 +16442,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=typing.Optional[str]), ]) - status: 'uint' = 0 - statusText: 'typing.Optional[str]' = None + status: uint = 0 + statusText: typing.Optional[str] = None class Attributes: @dataclass @@ -16459,7 +16460,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[LaundryWasherMode.Structs.ModeOptionStruct]) - value: 'typing.List[LaundryWasherMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[LaundryWasherMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -16475,7 +16476,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class StartUpMode(ClusterAttributeDescriptor): @@ -16491,7 +16492,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OnMode(ClusterAttributeDescriptor): @@ -16507,7 +16508,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -16523,7 +16524,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -16539,7 +16540,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -16555,7 +16556,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -16571,7 +16572,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -16587,7 +16588,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -16603,7 +16604,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -16626,16 +16627,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[RefrigeratorAndTemperatureControlledCabinetMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - startUpMode: 'typing.Union[None, Nullable, uint]' = None - onMode: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[RefrigeratorAndTemperatureControlledCabinetMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + startUpMode: typing.Union[None, Nullable, uint] = None + onMode: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -16705,14 +16706,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 @dataclass class ChangeToModeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000052 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -16722,8 +16723,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=typing.Optional[str]), ]) - status: 'uint' = 0 - statusText: 'typing.Optional[str]' = None + status: uint = 0 + statusText: typing.Optional[str] = None class Attributes: @dataclass @@ -16740,7 +16741,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[RefrigeratorAndTemperatureControlledCabinetMode.Structs.ModeOptionStruct]) - value: 'typing.List[RefrigeratorAndTemperatureControlledCabinetMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[RefrigeratorAndTemperatureControlledCabinetMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -16756,7 +16757,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class StartUpMode(ClusterAttributeDescriptor): @@ -16772,7 +16773,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OnMode(ClusterAttributeDescriptor): @@ -16788,7 +16789,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -16804,7 +16805,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -16820,7 +16821,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -16836,7 +16837,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -16852,7 +16853,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -16868,7 +16869,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -16884,7 +16885,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -16907,16 +16908,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - spinSpeeds: 'typing.Optional[typing.List[str]]' = None - spinSpeedCurrent: 'typing.Union[None, Nullable, uint]' = None - numberOfRinses: 'typing.Optional[LaundryWasherControls.Enums.NumberOfRinsesEnum]' = None - supportedRinses: 'typing.Optional[typing.List[LaundryWasherControls.Enums.NumberOfRinsesEnum]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + spinSpeeds: typing.Optional[typing.List[str]] = None + spinSpeedCurrent: typing.Union[None, Nullable, uint] = None + numberOfRinses: typing.Optional[LaundryWasherControls.Enums.NumberOfRinsesEnum] = None + supportedRinses: typing.Optional[typing.List[LaundryWasherControls.Enums.NumberOfRinsesEnum]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class NumberOfRinsesEnum(MatterIntEnum): @@ -16950,7 +16951,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[str]]) - value: 'typing.Optional[typing.List[str]]' = None + value: typing.Optional[typing.List[str]] = None @dataclass class SpinSpeedCurrent(ClusterAttributeDescriptor): @@ -16966,7 +16967,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class NumberOfRinses(ClusterAttributeDescriptor): @@ -16982,7 +16983,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[LaundryWasherControls.Enums.NumberOfRinsesEnum]) - value: 'typing.Optional[LaundryWasherControls.Enums.NumberOfRinsesEnum]' = None + value: typing.Optional[LaundryWasherControls.Enums.NumberOfRinsesEnum] = None @dataclass class SupportedRinses(ClusterAttributeDescriptor): @@ -16998,7 +16999,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[LaundryWasherControls.Enums.NumberOfRinsesEnum]]) - value: 'typing.Optional[typing.List[LaundryWasherControls.Enums.NumberOfRinsesEnum]]' = None + value: typing.Optional[typing.List[LaundryWasherControls.Enums.NumberOfRinsesEnum]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -17014,7 +17015,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -17030,7 +17031,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -17046,7 +17047,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -17062,7 +17063,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -17078,7 +17079,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -17094,7 +17095,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -17115,14 +17116,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[RvcRunMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[RvcRunMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -17208,14 +17209,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 @dataclass class ChangeToModeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000054 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -17225,8 +17226,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=typing.Optional[str]), ]) - status: 'uint' = 0 - statusText: 'typing.Optional[str]' = None + status: uint = 0 + statusText: typing.Optional[str] = None class Attributes: @dataclass @@ -17243,7 +17244,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[RvcRunMode.Structs.ModeOptionStruct]) - value: 'typing.List[RvcRunMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[RvcRunMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -17259,7 +17260,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -17275,7 +17276,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -17291,7 +17292,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -17307,7 +17308,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -17323,7 +17324,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -17339,7 +17340,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -17355,7 +17356,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -17376,14 +17377,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[RvcCleanMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[RvcCleanMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -17462,14 +17463,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 @dataclass class ChangeToModeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000055 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -17479,8 +17480,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=typing.Optional[str]), ]) - status: 'uint' = 0 - statusText: 'typing.Optional[str]' = None + status: uint = 0 + statusText: typing.Optional[str] = None class Attributes: @dataclass @@ -17497,7 +17498,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[RvcCleanMode.Structs.ModeOptionStruct]) - value: 'typing.List[RvcCleanMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[RvcCleanMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -17513,7 +17514,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -17529,7 +17530,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -17545,7 +17546,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -17561,7 +17562,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -17577,7 +17578,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -17593,7 +17594,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -17609,7 +17610,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -17634,18 +17635,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - temperatureSetpoint: 'typing.Optional[int]' = None - minTemperature: 'typing.Optional[int]' = None - maxTemperature: 'typing.Optional[int]' = None - step: 'typing.Optional[int]' = None - selectedTemperatureLevel: 'typing.Optional[uint]' = None - supportedTemperatureLevels: 'typing.Optional[typing.List[str]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + temperatureSetpoint: typing.Optional[int] = None + minTemperature: typing.Optional[int] = None + maxTemperature: typing.Optional[int] = None + step: typing.Optional[int] = None + selectedTemperatureLevel: typing.Optional[uint] = None + supportedTemperatureLevels: typing.Optional[typing.List[str]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -17659,7 +17660,7 @@ class SetTemperature(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000056 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -17669,8 +17670,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="targetTemperatureLevel", Tag=1, Type=typing.Optional[uint]), ]) - targetTemperature: 'typing.Optional[int]' = None - targetTemperatureLevel: 'typing.Optional[uint]' = None + targetTemperature: typing.Optional[int] = None + targetTemperatureLevel: typing.Optional[uint] = None class Attributes: @dataclass @@ -17687,7 +17688,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class MinTemperature(ClusterAttributeDescriptor): @@ -17703,7 +17704,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class MaxTemperature(ClusterAttributeDescriptor): @@ -17719,7 +17720,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class Step(ClusterAttributeDescriptor): @@ -17735,7 +17736,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class SelectedTemperatureLevel(ClusterAttributeDescriptor): @@ -17751,7 +17752,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SupportedTemperatureLevels(ClusterAttributeDescriptor): @@ -17767,7 +17768,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[str]]) - value: 'typing.Optional[typing.List[str]]' = None + value: typing.Optional[typing.List[str]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -17783,7 +17784,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -17799,7 +17800,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -17815,7 +17816,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -17831,7 +17832,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -17847,7 +17848,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -17863,7 +17864,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -17885,15 +17886,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - mask: 'uint' = None - state: 'uint' = None - supported: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + mask: uint = 0 + state: uint = 0 + supported: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class AlarmBitmap(IntFlag): @@ -17914,7 +17915,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class State(ClusterAttributeDescriptor): @@ -17930,7 +17931,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Supported(ClusterAttributeDescriptor): @@ -17946,7 +17947,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -17962,7 +17963,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -17978,7 +17979,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -17994,7 +17995,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -18010,7 +18011,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -18026,7 +18027,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -18042,7 +18043,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -18065,10 +18066,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="mask", Tag=3, Type=uint), ]) - active: 'uint' = 0 - inactive: 'uint' = 0 - state: 'uint' = 0 - mask: 'uint' = 0 + active: uint = 0 + inactive: uint = 0 + state: uint = 0 + mask: uint = 0 @dataclass @@ -18091,16 +18092,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[DishwasherMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - startUpMode: 'typing.Union[None, Nullable, uint]' = None - onMode: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[DishwasherMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + startUpMode: typing.Union[None, Nullable, uint] = None + onMode: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -18171,14 +18172,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 @dataclass class ChangeToModeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000059 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -18188,8 +18189,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=typing.Optional[str]), ]) - status: 'uint' = 0 - statusText: 'typing.Optional[str]' = None + status: uint = 0 + statusText: typing.Optional[str] = None class Attributes: @dataclass @@ -18206,7 +18207,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[DishwasherMode.Structs.ModeOptionStruct]) - value: 'typing.List[DishwasherMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[DishwasherMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -18222,7 +18223,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class StartUpMode(ClusterAttributeDescriptor): @@ -18238,7 +18239,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OnMode(ClusterAttributeDescriptor): @@ -18254,7 +18255,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -18270,7 +18271,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -18286,7 +18287,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -18302,7 +18303,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -18318,7 +18319,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -18334,7 +18335,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -18350,7 +18351,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -18370,13 +18371,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - airQuality: 'AirQuality.Enums.AirQualityEnum' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + airQuality: AirQuality.Enums.AirQualityEnum = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class AirQualityEnum(MatterIntEnum): @@ -18415,7 +18416,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=AirQuality.Enums.AirQualityEnum) - value: 'AirQuality.Enums.AirQualityEnum' = 0 + value: AirQuality.Enums.AirQualityEnum = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -18431,7 +18432,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -18447,7 +18448,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -18463,7 +18464,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -18479,7 +18480,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -18495,7 +18496,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -18511,7 +18512,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -18543,25 +18544,25 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - expressedState: 'SmokeCoAlarm.Enums.ExpressedStateEnum' = None - smokeState: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None - COState: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None - batteryAlert: 'SmokeCoAlarm.Enums.AlarmStateEnum' = None - deviceMuted: 'typing.Optional[SmokeCoAlarm.Enums.MuteStateEnum]' = None - testInProgress: 'bool' = None - hardwareFaultAlert: 'bool' = None - endOfServiceAlert: 'SmokeCoAlarm.Enums.EndOfServiceEnum' = None - interconnectSmokeAlarm: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None - interconnectCOAlarm: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None - contaminationState: 'typing.Optional[SmokeCoAlarm.Enums.ContaminationStateEnum]' = None - smokeSensitivityLevel: 'typing.Optional[SmokeCoAlarm.Enums.SensitivityEnum]' = None - expiryDate: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + expressedState: SmokeCoAlarm.Enums.ExpressedStateEnum = 0 + smokeState: typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum] = None + COState: typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum] = None + batteryAlert: SmokeCoAlarm.Enums.AlarmStateEnum = 0 + deviceMuted: typing.Optional[SmokeCoAlarm.Enums.MuteStateEnum] = None + testInProgress: bool = False + hardwareFaultAlert: bool = False + endOfServiceAlert: SmokeCoAlarm.Enums.EndOfServiceEnum = 0 + interconnectSmokeAlarm: typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum] = None + interconnectCOAlarm: typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum] = None + contaminationState: typing.Optional[SmokeCoAlarm.Enums.ContaminationStateEnum] = None + smokeSensitivityLevel: typing.Optional[SmokeCoAlarm.Enums.SensitivityEnum] = None + expiryDate: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class AlarmStateEnum(MatterIntEnum): @@ -18640,7 +18641,7 @@ class SelfTestRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000005C command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -18663,7 +18664,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=SmokeCoAlarm.Enums.ExpressedStateEnum) - value: 'SmokeCoAlarm.Enums.ExpressedStateEnum' = 0 + value: SmokeCoAlarm.Enums.ExpressedStateEnum = 0 @dataclass class SmokeState(ClusterAttributeDescriptor): @@ -18679,7 +18680,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]) - value: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None + value: typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum] = None @dataclass class COState(ClusterAttributeDescriptor): @@ -18695,7 +18696,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]) - value: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None + value: typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum] = None @dataclass class BatteryAlert(ClusterAttributeDescriptor): @@ -18711,7 +18712,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=SmokeCoAlarm.Enums.AlarmStateEnum) - value: 'SmokeCoAlarm.Enums.AlarmStateEnum' = 0 + value: SmokeCoAlarm.Enums.AlarmStateEnum = 0 @dataclass class DeviceMuted(ClusterAttributeDescriptor): @@ -18727,7 +18728,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.MuteStateEnum]) - value: 'typing.Optional[SmokeCoAlarm.Enums.MuteStateEnum]' = None + value: typing.Optional[SmokeCoAlarm.Enums.MuteStateEnum] = None @dataclass class TestInProgress(ClusterAttributeDescriptor): @@ -18743,7 +18744,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class HardwareFaultAlert(ClusterAttributeDescriptor): @@ -18759,7 +18760,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class EndOfServiceAlert(ClusterAttributeDescriptor): @@ -18775,7 +18776,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=SmokeCoAlarm.Enums.EndOfServiceEnum) - value: 'SmokeCoAlarm.Enums.EndOfServiceEnum' = 0 + value: SmokeCoAlarm.Enums.EndOfServiceEnum = 0 @dataclass class InterconnectSmokeAlarm(ClusterAttributeDescriptor): @@ -18791,7 +18792,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]) - value: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None + value: typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum] = None @dataclass class InterconnectCOAlarm(ClusterAttributeDescriptor): @@ -18807,7 +18808,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]) - value: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None + value: typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum] = None @dataclass class ContaminationState(ClusterAttributeDescriptor): @@ -18823,7 +18824,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.ContaminationStateEnum]) - value: 'typing.Optional[SmokeCoAlarm.Enums.ContaminationStateEnum]' = None + value: typing.Optional[SmokeCoAlarm.Enums.ContaminationStateEnum] = None @dataclass class SmokeSensitivityLevel(ClusterAttributeDescriptor): @@ -18839,7 +18840,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.SensitivityEnum]) - value: 'typing.Optional[SmokeCoAlarm.Enums.SensitivityEnum]' = None + value: typing.Optional[SmokeCoAlarm.Enums.SensitivityEnum] = None @dataclass class ExpiryDate(ClusterAttributeDescriptor): @@ -18855,7 +18856,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -18871,7 +18872,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -18887,7 +18888,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -18903,7 +18904,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -18919,7 +18920,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -18935,7 +18936,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -18951,7 +18952,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -18971,7 +18972,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarmSeverityLevel", Tag=0, Type=SmokeCoAlarm.Enums.AlarmStateEnum), ]) - alarmSeverityLevel: 'SmokeCoAlarm.Enums.AlarmStateEnum' = 0 + alarmSeverityLevel: SmokeCoAlarm.Enums.AlarmStateEnum = 0 @dataclass class COAlarm(ClusterEvent): @@ -18990,7 +18991,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarmSeverityLevel", Tag=0, Type=SmokeCoAlarm.Enums.AlarmStateEnum), ]) - alarmSeverityLevel: 'SmokeCoAlarm.Enums.AlarmStateEnum' = 0 + alarmSeverityLevel: SmokeCoAlarm.Enums.AlarmStateEnum = 0 @dataclass class LowBattery(ClusterEvent): @@ -19009,7 +19010,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarmSeverityLevel", Tag=0, Type=SmokeCoAlarm.Enums.AlarmStateEnum), ]) - alarmSeverityLevel: 'SmokeCoAlarm.Enums.AlarmStateEnum' = 0 + alarmSeverityLevel: SmokeCoAlarm.Enums.AlarmStateEnum = 0 @dataclass class HardwareFault(ClusterEvent): @@ -19108,7 +19109,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarmSeverityLevel", Tag=0, Type=SmokeCoAlarm.Enums.AlarmStateEnum), ]) - alarmSeverityLevel: 'SmokeCoAlarm.Enums.AlarmStateEnum' = 0 + alarmSeverityLevel: SmokeCoAlarm.Enums.AlarmStateEnum = 0 @dataclass class InterconnectCOAlarm(ClusterEvent): @@ -19127,7 +19128,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarmSeverityLevel", Tag=0, Type=SmokeCoAlarm.Enums.AlarmStateEnum), ]) - alarmSeverityLevel: 'SmokeCoAlarm.Enums.AlarmStateEnum' = 0 + alarmSeverityLevel: SmokeCoAlarm.Enums.AlarmStateEnum = 0 @dataclass class AllClear(ClusterEvent): @@ -19166,16 +19167,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - mask: 'uint' = None - latch: 'typing.Optional[uint]' = None - state: 'uint' = None - supported: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + mask: uint = 0 + latch: typing.Optional[uint] = None + state: uint = 0 + supported: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class AlarmBitmap(IntFlag): @@ -19195,7 +19196,7 @@ class Reset(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000005D command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -19204,14 +19205,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarms", Tag=0, Type=uint), ]) - alarms: 'uint' = 0 + alarms: uint = 0 @dataclass class ModifyEnabledAlarms(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000005D command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -19220,7 +19221,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="mask", Tag=0, Type=uint), ]) - mask: 'uint' = 0 + mask: uint = 0 class Attributes: @dataclass @@ -19237,7 +19238,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Latch(ClusterAttributeDescriptor): @@ -19253,7 +19254,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class State(ClusterAttributeDescriptor): @@ -19269,7 +19270,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Supported(ClusterAttributeDescriptor): @@ -19285,7 +19286,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -19301,7 +19302,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -19317,7 +19318,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -19333,7 +19334,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -19349,7 +19350,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -19365,7 +19366,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -19381,7 +19382,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -19404,10 +19405,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="mask", Tag=3, Type=uint), ]) - active: 'uint' = 0 - inactive: 'uint' = 0 - state: 'uint' = 0 - mask: 'uint' = 0 + active: uint = 0 + inactive: uint = 0 + state: uint = 0 + mask: uint = 0 @dataclass @@ -19428,14 +19429,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[MicrowaveOvenMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[MicrowaveOvenMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -19505,7 +19506,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[MicrowaveOvenMode.Structs.ModeOptionStruct]) - value: 'typing.List[MicrowaveOvenMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[MicrowaveOvenMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -19521,7 +19522,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -19537,7 +19538,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -19553,7 +19554,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -19569,7 +19570,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -19585,7 +19586,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -19601,7 +19602,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -19617,7 +19618,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -19645,21 +19646,21 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - cookTime: 'uint' = None - maxCookTime: 'uint' = None - powerSetting: 'typing.Optional[uint]' = None - minPower: 'typing.Optional[uint]' = None - maxPower: 'typing.Optional[uint]' = None - powerStep: 'typing.Optional[uint]' = None - supportedWatts: 'typing.Optional[typing.List[uint]]' = None - selectedWattIndex: 'typing.Optional[uint]' = None - wattRating: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + cookTime: uint = 0 + maxCookTime: uint = 0 + powerSetting: typing.Optional[uint] = None + minPower: typing.Optional[uint] = None + maxPower: typing.Optional[uint] = None + powerStep: typing.Optional[uint] = None + supportedWatts: typing.Optional[typing.List[uint]] = None + selectedWattIndex: typing.Optional[uint] = None + wattRating: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -19673,7 +19674,7 @@ class SetCookingParameters(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000005F command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -19686,18 +19687,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="startAfterSetting", Tag=4, Type=typing.Optional[bool]), ]) - cookMode: 'typing.Optional[uint]' = None - cookTime: 'typing.Optional[uint]' = None - powerSetting: 'typing.Optional[uint]' = None - wattSettingIndex: 'typing.Optional[uint]' = None - startAfterSetting: 'typing.Optional[bool]' = None + cookMode: typing.Optional[uint] = None + cookTime: typing.Optional[uint] = None + powerSetting: typing.Optional[uint] = None + wattSettingIndex: typing.Optional[uint] = None + startAfterSetting: typing.Optional[bool] = None @dataclass class AddMoreTime(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000005F command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -19706,7 +19707,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="timeToAdd", Tag=0, Type=uint), ]) - timeToAdd: 'uint' = 0 + timeToAdd: uint = 0 class Attributes: @dataclass @@ -19723,7 +19724,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class MaxCookTime(ClusterAttributeDescriptor): @@ -19739,7 +19740,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class PowerSetting(ClusterAttributeDescriptor): @@ -19755,7 +19756,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MinPower(ClusterAttributeDescriptor): @@ -19771,7 +19772,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MaxPower(ClusterAttributeDescriptor): @@ -19787,7 +19788,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PowerStep(ClusterAttributeDescriptor): @@ -19803,7 +19804,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SupportedWatts(ClusterAttributeDescriptor): @@ -19819,7 +19820,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[uint]]) - value: 'typing.Optional[typing.List[uint]]' = None + value: typing.Optional[typing.List[uint]] = None @dataclass class SelectedWattIndex(ClusterAttributeDescriptor): @@ -19835,7 +19836,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class WattRating(ClusterAttributeDescriptor): @@ -19851,7 +19852,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -19867,7 +19868,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -19883,7 +19884,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -19899,7 +19900,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -19915,7 +19916,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -19931,7 +19932,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -19947,7 +19948,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -19972,18 +19973,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - phaseList: 'typing.Union[Nullable, typing.List[str]]' = None - currentPhase: 'typing.Union[Nullable, uint]' = None - countdownTime: 'typing.Union[None, Nullable, uint]' = None - operationalStateList: 'typing.List[OperationalState.Structs.OperationalStateStruct]' = None - operationalState: 'OperationalState.Enums.OperationalStateEnum' = None - operationalError: 'OperationalState.Structs.ErrorStateStruct' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + phaseList: typing.Union[Nullable, typing.List[str]] = NullValue + currentPhase: typing.Union[Nullable, uint] = NullValue + countdownTime: typing.Union[None, Nullable, uint] = None + operationalStateList: typing.List[OperationalState.Structs.OperationalStateStruct] = field(default_factory=lambda: []) + operationalState: OperationalState.Enums.OperationalStateEnum = 0 + operationalError: OperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: OperationalState.Structs.ErrorStateStruct()) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ErrorStateEnum(MatterIntEnum): @@ -20095,7 +20096,7 @@ class OperationalCommandResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000060 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -20104,7 +20105,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="commandResponseState", Tag=0, Type=OperationalState.Structs.ErrorStateStruct), ]) - commandResponseState: 'OperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: OperationalState.Structs.ErrorStateStruct()) + commandResponseState: OperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: OperationalState.Structs.ErrorStateStruct()) class Attributes: @dataclass @@ -20121,7 +20122,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, typing.List[str]]) - value: 'typing.Union[Nullable, typing.List[str]]' = NullValue + value: typing.Union[Nullable, typing.List[str]] = NullValue @dataclass class CurrentPhase(ClusterAttributeDescriptor): @@ -20137,7 +20138,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class CountdownTime(ClusterAttributeDescriptor): @@ -20153,7 +20154,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OperationalStateList(ClusterAttributeDescriptor): @@ -20169,7 +20170,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[OperationalState.Structs.OperationalStateStruct]) - value: 'typing.List[OperationalState.Structs.OperationalStateStruct]' = field(default_factory=lambda: []) + value: typing.List[OperationalState.Structs.OperationalStateStruct] = field(default_factory=lambda: []) @dataclass class OperationalState(ClusterAttributeDescriptor): @@ -20185,7 +20186,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=OperationalState.Enums.OperationalStateEnum) - value: 'OperationalState.Enums.OperationalStateEnum' = 0 + value: OperationalState.Enums.OperationalStateEnum = 0 @dataclass class OperationalError(ClusterAttributeDescriptor): @@ -20201,7 +20202,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=OperationalState.Structs.ErrorStateStruct) - value: 'OperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: OperationalState.Structs.ErrorStateStruct()) + value: OperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: OperationalState.Structs.ErrorStateStruct()) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -20217,7 +20218,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -20233,7 +20234,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -20249,7 +20250,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -20265,7 +20266,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -20281,7 +20282,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -20297,7 +20298,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -20317,7 +20318,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="errorState", Tag=0, Type=OperationalState.Structs.ErrorStateStruct), ]) - errorState: 'OperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: OperationalState.Structs.ErrorStateStruct()) + errorState: OperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: OperationalState.Structs.ErrorStateStruct()) @dataclass class OperationCompletion(ClusterEvent): @@ -20338,9 +20339,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="pausedTime", Tag=2, Type=typing.Union[None, Nullable, uint]), ]) - completionErrorCode: 'uint' = 0 - totalOperationalTime: 'typing.Union[None, Nullable, uint]' = None - pausedTime: 'typing.Union[None, Nullable, uint]' = None + completionErrorCode: uint = 0 + totalOperationalTime: typing.Union[None, Nullable, uint] = None + pausedTime: typing.Union[None, Nullable, uint] = None @dataclass @@ -20365,18 +20366,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - phaseList: 'typing.Union[Nullable, typing.List[str]]' = None - currentPhase: 'typing.Union[Nullable, uint]' = None - countdownTime: 'typing.Union[None, Nullable, uint]' = None - operationalStateList: 'typing.List[RvcOperationalState.Structs.OperationalStateStruct]' = None - operationalState: 'uint' = None - operationalError: 'RvcOperationalState.Structs.ErrorStateStruct' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + phaseList: typing.Union[Nullable, typing.List[str]] = NullValue + currentPhase: typing.Union[Nullable, uint] = NullValue + countdownTime: typing.Union[None, Nullable, uint] = None + operationalStateList: typing.List[RvcOperationalState.Structs.OperationalStateStruct] = field(default_factory=lambda: []) + operationalState: uint = 0 + operationalError: RvcOperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: RvcOperationalState.Structs.ErrorStateStruct()) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ErrorStateEnum(MatterIntEnum): @@ -20473,7 +20474,7 @@ class OperationalCommandResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000061 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -20482,7 +20483,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="commandResponseState", Tag=0, Type=RvcOperationalState.Structs.ErrorStateStruct), ]) - commandResponseState: 'RvcOperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: RvcOperationalState.Structs.ErrorStateStruct()) + commandResponseState: RvcOperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: RvcOperationalState.Structs.ErrorStateStruct()) @dataclass class GoHome(ClusterCommand): @@ -20512,7 +20513,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, typing.List[str]]) - value: 'typing.Union[Nullable, typing.List[str]]' = NullValue + value: typing.Union[Nullable, typing.List[str]] = NullValue @dataclass class CurrentPhase(ClusterAttributeDescriptor): @@ -20528,7 +20529,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class CountdownTime(ClusterAttributeDescriptor): @@ -20544,7 +20545,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OperationalStateList(ClusterAttributeDescriptor): @@ -20560,7 +20561,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[RvcOperationalState.Structs.OperationalStateStruct]) - value: 'typing.List[RvcOperationalState.Structs.OperationalStateStruct]' = field(default_factory=lambda: []) + value: typing.List[RvcOperationalState.Structs.OperationalStateStruct] = field(default_factory=lambda: []) @dataclass class OperationalState(ClusterAttributeDescriptor): @@ -20576,7 +20577,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class OperationalError(ClusterAttributeDescriptor): @@ -20592,7 +20593,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=RvcOperationalState.Structs.ErrorStateStruct) - value: 'RvcOperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: RvcOperationalState.Structs.ErrorStateStruct()) + value: RvcOperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: RvcOperationalState.Structs.ErrorStateStruct()) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -20608,7 +20609,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -20624,7 +20625,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -20640,7 +20641,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -20656,7 +20657,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -20672,7 +20673,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -20688,7 +20689,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -20708,7 +20709,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="errorState", Tag=0, Type=RvcOperationalState.Structs.ErrorStateStruct), ]) - errorState: 'RvcOperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: RvcOperationalState.Structs.ErrorStateStruct()) + errorState: RvcOperationalState.Structs.ErrorStateStruct = field(default_factory=lambda: RvcOperationalState.Structs.ErrorStateStruct()) @dataclass class OperationCompletion(ClusterEvent): @@ -20729,9 +20730,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="pausedTime", Tag=2, Type=typing.Union[None, Nullable, uint]), ]) - completionErrorCode: 'uint' = 0 - totalOperationalTime: 'typing.Union[None, Nullable, uint]' = None - pausedTime: 'typing.Union[None, Nullable, uint]' = None + completionErrorCode: uint = 0 + totalOperationalTime: typing.Union[None, Nullable, uint] = None + pausedTime: typing.Union[None, Nullable, uint] = None @dataclass @@ -20753,15 +20754,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - lastConfiguredBy: 'typing.Union[None, Nullable, uint]' = None - sceneTableSize: 'uint' = None - fabricSceneInfo: 'typing.List[ScenesManagement.Structs.SceneInfoStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + lastConfiguredBy: typing.Union[None, Nullable, uint] = None + sceneTableSize: uint = 0 + fabricSceneInfo: typing.List[ScenesManagement.Structs.SceneInfoStruct] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class CopyModeBitmap(IntFlag): @@ -20851,18 +20852,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="extensionFieldSets", Tag=4, Type=typing.List[ScenesManagement.Structs.ExtensionFieldSet]), ]) - groupID: 'uint' = 0 - sceneID: 'uint' = 0 - transitionTime: 'uint' = 0 - sceneName: 'str' = "" - extensionFieldSets: 'typing.List[ScenesManagement.Structs.ExtensionFieldSet]' = field(default_factory=lambda: []) + groupID: uint = 0 + sceneID: uint = 0 + transitionTime: uint = 0 + sceneName: str = "" + extensionFieldSets: typing.List[ScenesManagement.Structs.ExtensionFieldSet] = field(default_factory=lambda: []) @dataclass class AddSceneResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000062 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -20873,9 +20874,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sceneID", Tag=2, Type=uint), ]) - status: 'uint' = 0 - groupID: 'uint' = 0 - sceneID: 'uint' = 0 + status: uint = 0 + groupID: uint = 0 + sceneID: uint = 0 @dataclass class ViewScene(ClusterCommand): @@ -20892,15 +20893,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sceneID", Tag=1, Type=uint), ]) - groupID: 'uint' = 0 - sceneID: 'uint' = 0 + groupID: uint = 0 + sceneID: uint = 0 @dataclass class ViewSceneResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000062 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -20914,12 +20915,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="extensionFieldSets", Tag=5, Type=typing.Optional[typing.List[ScenesManagement.Structs.ExtensionFieldSet]]), ]) - status: 'uint' = 0 - groupID: 'uint' = 0 - sceneID: 'uint' = 0 - transitionTime: 'typing.Optional[uint]' = None - sceneName: 'typing.Optional[str]' = None - extensionFieldSets: 'typing.Optional[typing.List[ScenesManagement.Structs.ExtensionFieldSet]]' = None + status: uint = 0 + groupID: uint = 0 + sceneID: uint = 0 + transitionTime: typing.Optional[uint] = None + sceneName: typing.Optional[str] = None + extensionFieldSets: typing.Optional[typing.List[ScenesManagement.Structs.ExtensionFieldSet]] = None @dataclass class RemoveScene(ClusterCommand): @@ -20936,15 +20937,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sceneID", Tag=1, Type=uint), ]) - groupID: 'uint' = 0 - sceneID: 'uint' = 0 + groupID: uint = 0 + sceneID: uint = 0 @dataclass class RemoveSceneResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000062 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -20955,9 +20956,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sceneID", Tag=2, Type=uint), ]) - status: 'uint' = 0 - groupID: 'uint' = 0 - sceneID: 'uint' = 0 + status: uint = 0 + groupID: uint = 0 + sceneID: uint = 0 @dataclass class RemoveAllScenes(ClusterCommand): @@ -20973,14 +20974,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupID", Tag=0, Type=uint), ]) - groupID: 'uint' = 0 + groupID: uint = 0 @dataclass class RemoveAllScenesResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000062 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -20990,8 +20991,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupID", Tag=1, Type=uint), ]) - status: 'uint' = 0 - groupID: 'uint' = 0 + status: uint = 0 + groupID: uint = 0 @dataclass class StoreScene(ClusterCommand): @@ -21008,15 +21009,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sceneID", Tag=1, Type=uint), ]) - groupID: 'uint' = 0 - sceneID: 'uint' = 0 + groupID: uint = 0 + sceneID: uint = 0 @dataclass class StoreSceneResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000062 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -21027,16 +21028,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sceneID", Tag=2, Type=uint), ]) - status: 'uint' = 0 - groupID: 'uint' = 0 - sceneID: 'uint' = 0 + status: uint = 0 + groupID: uint = 0 + sceneID: uint = 0 @dataclass class RecallScene(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000062 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -21047,9 +21048,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="transitionTime", Tag=2, Type=typing.Union[None, Nullable, uint]), ]) - groupID: 'uint' = 0 - sceneID: 'uint' = 0 - transitionTime: 'typing.Union[None, Nullable, uint]' = None + groupID: uint = 0 + sceneID: uint = 0 + transitionTime: typing.Union[None, Nullable, uint] = None @dataclass class GetSceneMembership(ClusterCommand): @@ -21065,14 +21066,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="groupID", Tag=0, Type=uint), ]) - groupID: 'uint' = 0 + groupID: uint = 0 @dataclass class GetSceneMembershipResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000062 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -21084,10 +21085,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sceneList", Tag=3, Type=typing.Optional[typing.List[uint]]), ]) - status: 'uint' = 0 - capacity: 'typing.Union[Nullable, uint]' = NullValue - groupID: 'uint' = 0 - sceneList: 'typing.Optional[typing.List[uint]]' = None + status: uint = 0 + capacity: typing.Union[Nullable, uint] = NullValue + groupID: uint = 0 + sceneList: typing.Optional[typing.List[uint]] = None @dataclass class CopyScene(ClusterCommand): @@ -21107,18 +21108,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sceneIdentifierTo", Tag=4, Type=uint), ]) - mode: 'uint' = 0 - groupIdentifierFrom: 'uint' = 0 - sceneIdentifierFrom: 'uint' = 0 - groupIdentifierTo: 'uint' = 0 - sceneIdentifierTo: 'uint' = 0 + mode: uint = 0 + groupIdentifierFrom: uint = 0 + sceneIdentifierFrom: uint = 0 + groupIdentifierTo: uint = 0 + sceneIdentifierTo: uint = 0 @dataclass class CopySceneResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000062 command_id: typing.ClassVar[int] = 0x00000040 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -21129,9 +21130,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sceneIdentifierFrom", Tag=2, Type=uint), ]) - status: 'uint' = 0 - groupIdentifierFrom: 'uint' = 0 - sceneIdentifierFrom: 'uint' = 0 + status: uint = 0 + groupIdentifierFrom: uint = 0 + sceneIdentifierFrom: uint = 0 class Attributes: @dataclass @@ -21148,7 +21149,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class SceneTableSize(ClusterAttributeDescriptor): @@ -21164,7 +21165,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class FabricSceneInfo(ClusterAttributeDescriptor): @@ -21180,7 +21181,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ScenesManagement.Structs.SceneInfoStruct]) - value: 'typing.List[ScenesManagement.Structs.SceneInfoStruct]' = field(default_factory=lambda: []) + value: typing.List[ScenesManagement.Structs.SceneInfoStruct] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -21196,7 +21197,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -21212,7 +21213,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -21228,7 +21229,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -21244,7 +21245,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -21260,7 +21261,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -21276,7 +21277,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -21301,18 +21302,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - condition: 'typing.Optional[uint]' = None - degradationDirection: 'typing.Optional[HepaFilterMonitoring.Enums.DegradationDirectionEnum]' = None - changeIndication: 'HepaFilterMonitoring.Enums.ChangeIndicationEnum' = None - inPlaceIndicator: 'typing.Optional[bool]' = None - lastChangedTime: 'typing.Union[None, Nullable, uint]' = None - replacementProductList: 'typing.Optional[typing.List[HepaFilterMonitoring.Structs.ReplacementProductStruct]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + condition: typing.Optional[uint] = None + degradationDirection: typing.Optional[HepaFilterMonitoring.Enums.DegradationDirectionEnum] = None + changeIndication: HepaFilterMonitoring.Enums.ChangeIndicationEnum = 0 + inPlaceIndicator: typing.Optional[bool] = None + lastChangedTime: typing.Union[None, Nullable, uint] = None + replacementProductList: typing.Optional[typing.List[HepaFilterMonitoring.Structs.ReplacementProductStruct]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ChangeIndicationEnum(MatterIntEnum): @@ -21372,7 +21373,7 @@ class ResetCondition(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000071 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -21395,7 +21396,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class DegradationDirection(ClusterAttributeDescriptor): @@ -21411,7 +21412,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[HepaFilterMonitoring.Enums.DegradationDirectionEnum]) - value: 'typing.Optional[HepaFilterMonitoring.Enums.DegradationDirectionEnum]' = None + value: typing.Optional[HepaFilterMonitoring.Enums.DegradationDirectionEnum] = None @dataclass class ChangeIndication(ClusterAttributeDescriptor): @@ -21427,7 +21428,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=HepaFilterMonitoring.Enums.ChangeIndicationEnum) - value: 'HepaFilterMonitoring.Enums.ChangeIndicationEnum' = 0 + value: HepaFilterMonitoring.Enums.ChangeIndicationEnum = 0 @dataclass class InPlaceIndicator(ClusterAttributeDescriptor): @@ -21443,7 +21444,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class LastChangedTime(ClusterAttributeDescriptor): @@ -21459,7 +21460,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class ReplacementProductList(ClusterAttributeDescriptor): @@ -21475,7 +21476,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[HepaFilterMonitoring.Structs.ReplacementProductStruct]]) - value: 'typing.Optional[typing.List[HepaFilterMonitoring.Structs.ReplacementProductStruct]]' = None + value: typing.Optional[typing.List[HepaFilterMonitoring.Structs.ReplacementProductStruct]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -21491,7 +21492,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -21507,7 +21508,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -21523,7 +21524,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -21539,7 +21540,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -21555,7 +21556,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -21571,7 +21572,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -21596,18 +21597,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - condition: 'typing.Optional[uint]' = None - degradationDirection: 'typing.Optional[ActivatedCarbonFilterMonitoring.Enums.DegradationDirectionEnum]' = None - changeIndication: 'ActivatedCarbonFilterMonitoring.Enums.ChangeIndicationEnum' = None - inPlaceIndicator: 'typing.Optional[bool]' = None - lastChangedTime: 'typing.Union[None, Nullable, uint]' = None - replacementProductList: 'typing.Optional[typing.List[ActivatedCarbonFilterMonitoring.Structs.ReplacementProductStruct]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + condition: typing.Optional[uint] = None + degradationDirection: typing.Optional[ActivatedCarbonFilterMonitoring.Enums.DegradationDirectionEnum] = None + changeIndication: ActivatedCarbonFilterMonitoring.Enums.ChangeIndicationEnum = 0 + inPlaceIndicator: typing.Optional[bool] = None + lastChangedTime: typing.Union[None, Nullable, uint] = None + replacementProductList: typing.Optional[typing.List[ActivatedCarbonFilterMonitoring.Structs.ReplacementProductStruct]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ChangeIndicationEnum(MatterIntEnum): @@ -21667,7 +21668,7 @@ class ResetCondition(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000072 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -21690,7 +21691,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class DegradationDirection(ClusterAttributeDescriptor): @@ -21706,7 +21707,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[ActivatedCarbonFilterMonitoring.Enums.DegradationDirectionEnum]) - value: 'typing.Optional[ActivatedCarbonFilterMonitoring.Enums.DegradationDirectionEnum]' = None + value: typing.Optional[ActivatedCarbonFilterMonitoring.Enums.DegradationDirectionEnum] = None @dataclass class ChangeIndication(ClusterAttributeDescriptor): @@ -21722,7 +21723,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=ActivatedCarbonFilterMonitoring.Enums.ChangeIndicationEnum) - value: 'ActivatedCarbonFilterMonitoring.Enums.ChangeIndicationEnum' = 0 + value: ActivatedCarbonFilterMonitoring.Enums.ChangeIndicationEnum = 0 @dataclass class InPlaceIndicator(ClusterAttributeDescriptor): @@ -21738,7 +21739,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class LastChangedTime(ClusterAttributeDescriptor): @@ -21754,7 +21755,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class ReplacementProductList(ClusterAttributeDescriptor): @@ -21770,7 +21771,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[ActivatedCarbonFilterMonitoring.Structs.ReplacementProductStruct]]) - value: 'typing.Optional[typing.List[ActivatedCarbonFilterMonitoring.Structs.ReplacementProductStruct]]' = None + value: typing.Optional[typing.List[ActivatedCarbonFilterMonitoring.Structs.ReplacementProductStruct]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -21786,7 +21787,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -21802,7 +21803,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -21818,7 +21819,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -21834,7 +21835,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -21850,7 +21851,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -21866,7 +21867,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -21893,20 +21894,20 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - currentSensitivityLevel: 'typing.Optional[uint]' = None - supportedSensitivityLevels: 'typing.Optional[uint]' = None - defaultSensitivityLevel: 'typing.Optional[uint]' = None - alarmsActive: 'typing.Optional[uint]' = None - alarmsSuppressed: 'typing.Optional[uint]' = None - alarmsEnabled: 'typing.Optional[uint]' = None - alarmsSupported: 'typing.Optional[uint]' = None - sensorFault: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + currentSensitivityLevel: typing.Optional[uint] = None + supportedSensitivityLevels: typing.Optional[uint] = None + defaultSensitivityLevel: typing.Optional[uint] = None + alarmsActive: typing.Optional[uint] = None + alarmsSuppressed: typing.Optional[uint] = None + alarmsEnabled: typing.Optional[uint] = None + alarmsSupported: typing.Optional[uint] = None + sensorFault: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class AlarmModeBitmap(IntFlag): @@ -21928,7 +21929,7 @@ class SuppressAlarm(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000080 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -21937,14 +21938,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarmsToSuppress", Tag=0, Type=uint), ]) - alarmsToSuppress: 'uint' = 0 + alarmsToSuppress: uint = 0 @dataclass class EnableDisableAlarm(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000080 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -21953,7 +21954,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarmsToEnableDisable", Tag=0, Type=uint), ]) - alarmsToEnableDisable: 'uint' = 0 + alarmsToEnableDisable: uint = 0 class Attributes: @dataclass @@ -21970,7 +21971,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SupportedSensitivityLevels(ClusterAttributeDescriptor): @@ -21986,7 +21987,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class DefaultSensitivityLevel(ClusterAttributeDescriptor): @@ -22002,7 +22003,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AlarmsActive(ClusterAttributeDescriptor): @@ -22018,7 +22019,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AlarmsSuppressed(ClusterAttributeDescriptor): @@ -22034,7 +22035,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AlarmsEnabled(ClusterAttributeDescriptor): @@ -22050,7 +22051,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AlarmsSupported(ClusterAttributeDescriptor): @@ -22066,7 +22067,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SensorFault(ClusterAttributeDescriptor): @@ -22082,7 +22083,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -22098,7 +22099,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -22114,7 +22115,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -22130,7 +22131,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -22146,7 +22147,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -22162,7 +22163,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -22178,7 +22179,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -22199,8 +22200,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarmsSuppressed", Tag=1, Type=typing.Optional[uint]), ]) - alarmsActive: 'uint' = 0 - alarmsSuppressed: 'typing.Optional[uint]' = None + alarmsActive: uint = 0 + alarmsSuppressed: typing.Optional[uint] = None @dataclass class SensorFault(ClusterEvent): @@ -22219,7 +22220,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sensorFault", Tag=0, Type=uint), ]) - sensorFault: 'uint' = 0 + sensorFault: uint = 0 @dataclass @@ -22249,23 +22250,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - openDuration: 'typing.Union[Nullable, uint]' = None - defaultOpenDuration: 'typing.Union[Nullable, uint]' = None - autoCloseTime: 'typing.Union[None, Nullable, uint]' = None - remainingDuration: 'typing.Union[Nullable, uint]' = None - currentState: 'typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum]' = None - targetState: 'typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum]' = None - currentLevel: 'typing.Union[None, Nullable, uint]' = None - targetLevel: 'typing.Union[None, Nullable, uint]' = None - defaultOpenLevel: 'typing.Optional[uint]' = None - valveFault: 'typing.Optional[uint]' = None - levelStep: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + openDuration: typing.Union[Nullable, uint] = NullValue + defaultOpenDuration: typing.Union[Nullable, uint] = NullValue + autoCloseTime: typing.Union[None, Nullable, uint] = None + remainingDuration: typing.Union[Nullable, uint] = NullValue + currentState: typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum] = NullValue + targetState: typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum] = NullValue + currentLevel: typing.Union[None, Nullable, uint] = None + targetLevel: typing.Union[None, Nullable, uint] = None + defaultOpenLevel: typing.Optional[uint] = None + valveFault: typing.Optional[uint] = None + levelStep: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class StatusCodeEnum(MatterIntEnum): @@ -22305,7 +22306,7 @@ class Open(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000081 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -22315,15 +22316,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="targetLevel", Tag=1, Type=typing.Optional[uint]), ]) - openDuration: 'typing.Union[None, Nullable, uint]' = None - targetLevel: 'typing.Optional[uint]' = None + openDuration: typing.Union[None, Nullable, uint] = None + targetLevel: typing.Optional[uint] = None @dataclass class Close(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000081 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -22346,7 +22347,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class DefaultOpenDuration(ClusterAttributeDescriptor): @@ -22362,7 +22363,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class AutoCloseTime(ClusterAttributeDescriptor): @@ -22378,7 +22379,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class RemainingDuration(ClusterAttributeDescriptor): @@ -22394,7 +22395,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class CurrentState(ClusterAttributeDescriptor): @@ -22410,7 +22411,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum]) - value: 'typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum]' = NullValue + value: typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum] = NullValue @dataclass class TargetState(ClusterAttributeDescriptor): @@ -22426,7 +22427,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum]) - value: 'typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum]' = NullValue + value: typing.Union[Nullable, ValveConfigurationAndControl.Enums.ValveStateEnum] = NullValue @dataclass class CurrentLevel(ClusterAttributeDescriptor): @@ -22442,7 +22443,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class TargetLevel(ClusterAttributeDescriptor): @@ -22458,7 +22459,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class DefaultOpenLevel(ClusterAttributeDescriptor): @@ -22474,7 +22475,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ValveFault(ClusterAttributeDescriptor): @@ -22490,7 +22491,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class LevelStep(ClusterAttributeDescriptor): @@ -22506,7 +22507,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -22522,7 +22523,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -22538,7 +22539,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -22554,7 +22555,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -22570,7 +22571,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -22586,7 +22587,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -22602,7 +22603,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -22623,8 +22624,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="valveLevel", Tag=1, Type=typing.Optional[uint]), ]) - valveState: 'ValveConfigurationAndControl.Enums.ValveStateEnum' = 0 - valveLevel: 'typing.Optional[uint]' = None + valveState: ValveConfigurationAndControl.Enums.ValveStateEnum = 0 + valveLevel: typing.Optional[uint] = None @dataclass class ValveFault(ClusterEvent): @@ -22643,7 +22644,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="valveFault", Tag=0, Type=uint), ]) - valveFault: 'uint' = 0 + valveFault: uint = 0 @dataclass @@ -22681,31 +22682,31 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - powerMode: 'ElectricalPowerMeasurement.Enums.PowerModeEnum' = None - numberOfMeasurementTypes: 'uint' = None - accuracy: 'typing.List[ElectricalPowerMeasurement.Structs.MeasurementAccuracyStruct]' = None - ranges: 'typing.Optional[typing.List[ElectricalPowerMeasurement.Structs.MeasurementRangeStruct]]' = None - voltage: 'typing.Union[None, Nullable, int]' = None - activeCurrent: 'typing.Union[None, Nullable, int]' = None - reactiveCurrent: 'typing.Union[None, Nullable, int]' = None - apparentCurrent: 'typing.Union[None, Nullable, int]' = None - activePower: 'typing.Union[Nullable, int]' = None - reactivePower: 'typing.Union[None, Nullable, int]' = None - apparentPower: 'typing.Union[None, Nullable, int]' = None - RMSVoltage: 'typing.Union[None, Nullable, int]' = None - RMSCurrent: 'typing.Union[None, Nullable, int]' = None - RMSPower: 'typing.Union[None, Nullable, int]' = None - frequency: 'typing.Union[None, Nullable, int]' = None - harmonicCurrents: 'typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]]' = None - harmonicPhases: 'typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]]' = None - powerFactor: 'typing.Union[None, Nullable, int]' = None - neutralCurrent: 'typing.Union[None, Nullable, int]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + powerMode: ElectricalPowerMeasurement.Enums.PowerModeEnum = 0 + numberOfMeasurementTypes: uint = 0 + accuracy: typing.List[ElectricalPowerMeasurement.Structs.MeasurementAccuracyStruct] = field(default_factory=lambda: []) + ranges: typing.Optional[typing.List[ElectricalPowerMeasurement.Structs.MeasurementRangeStruct]] = None + voltage: typing.Union[None, Nullable, int] = None + activeCurrent: typing.Union[None, Nullable, int] = None + reactiveCurrent: typing.Union[None, Nullable, int] = None + apparentCurrent: typing.Union[None, Nullable, int] = None + activePower: typing.Union[Nullable, int] = NullValue + reactivePower: typing.Union[None, Nullable, int] = None + apparentPower: typing.Union[None, Nullable, int] = None + RMSVoltage: typing.Union[None, Nullable, int] = None + RMSCurrent: typing.Union[None, Nullable, int] = None + RMSPower: typing.Union[None, Nullable, int] = None + frequency: typing.Union[None, Nullable, int] = None + harmonicCurrents: typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]] = None + harmonicPhases: typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]] = None + powerFactor: typing.Union[None, Nullable, int] = None + neutralCurrent: typing.Union[None, Nullable, int] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class MeasurementTypeEnum(MatterIntEnum): @@ -22852,7 +22853,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=ElectricalPowerMeasurement.Enums.PowerModeEnum) - value: 'ElectricalPowerMeasurement.Enums.PowerModeEnum' = 0 + value: ElectricalPowerMeasurement.Enums.PowerModeEnum = 0 @dataclass class NumberOfMeasurementTypes(ClusterAttributeDescriptor): @@ -22868,7 +22869,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Accuracy(ClusterAttributeDescriptor): @@ -22884,7 +22885,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ElectricalPowerMeasurement.Structs.MeasurementAccuracyStruct]) - value: 'typing.List[ElectricalPowerMeasurement.Structs.MeasurementAccuracyStruct]' = field(default_factory=lambda: []) + value: typing.List[ElectricalPowerMeasurement.Structs.MeasurementAccuracyStruct] = field(default_factory=lambda: []) @dataclass class Ranges(ClusterAttributeDescriptor): @@ -22900,7 +22901,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[ElectricalPowerMeasurement.Structs.MeasurementRangeStruct]]) - value: 'typing.Optional[typing.List[ElectricalPowerMeasurement.Structs.MeasurementRangeStruct]]' = None + value: typing.Optional[typing.List[ElectricalPowerMeasurement.Structs.MeasurementRangeStruct]] = None @dataclass class Voltage(ClusterAttributeDescriptor): @@ -22916,7 +22917,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class ActiveCurrent(ClusterAttributeDescriptor): @@ -22932,7 +22933,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class ReactiveCurrent(ClusterAttributeDescriptor): @@ -22948,7 +22949,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class ApparentCurrent(ClusterAttributeDescriptor): @@ -22964,7 +22965,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class ActivePower(ClusterAttributeDescriptor): @@ -22980,7 +22981,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class ReactivePower(ClusterAttributeDescriptor): @@ -22996,7 +22997,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class ApparentPower(ClusterAttributeDescriptor): @@ -23012,7 +23013,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class RMSVoltage(ClusterAttributeDescriptor): @@ -23028,7 +23029,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class RMSCurrent(ClusterAttributeDescriptor): @@ -23044,7 +23045,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class RMSPower(ClusterAttributeDescriptor): @@ -23060,7 +23061,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class Frequency(ClusterAttributeDescriptor): @@ -23076,7 +23077,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class HarmonicCurrents(ClusterAttributeDescriptor): @@ -23092,7 +23093,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]]) - value: 'typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]]' = None + value: typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]] = None @dataclass class HarmonicPhases(ClusterAttributeDescriptor): @@ -23108,7 +23109,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]]) - value: 'typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]]' = None + value: typing.Union[None, Nullable, typing.List[ElectricalPowerMeasurement.Structs.HarmonicMeasurementStruct]] = None @dataclass class PowerFactor(ClusterAttributeDescriptor): @@ -23124,7 +23125,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class NeutralCurrent(ClusterAttributeDescriptor): @@ -23140,7 +23141,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -23156,7 +23157,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -23172,7 +23173,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -23188,7 +23189,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -23204,7 +23205,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -23220,7 +23221,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -23236,7 +23237,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -23256,7 +23257,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="ranges", Tag=0, Type=typing.List[ElectricalPowerMeasurement.Structs.MeasurementRangeStruct]), ]) - ranges: 'typing.List[ElectricalPowerMeasurement.Structs.MeasurementRangeStruct]' = field(default_factory=lambda: []) + ranges: typing.List[ElectricalPowerMeasurement.Structs.MeasurementRangeStruct] = field(default_factory=lambda: []) @dataclass @@ -23281,18 +23282,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - accuracy: 'ElectricalEnergyMeasurement.Structs.MeasurementAccuracyStruct' = None - cumulativeEnergyImported: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None - cumulativeEnergyExported: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None - periodicEnergyImported: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None - periodicEnergyExported: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None - cumulativeEnergyReset: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.CumulativeEnergyResetStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + accuracy: ElectricalEnergyMeasurement.Structs.MeasurementAccuracyStruct = field(default_factory=lambda: ElectricalEnergyMeasurement.Structs.MeasurementAccuracyStruct()) + cumulativeEnergyImported: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None + cumulativeEnergyExported: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None + periodicEnergyImported: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None + periodicEnergyExported: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None + cumulativeEnergyReset: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.CumulativeEnergyResetStruct] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class MeasurementTypeEnum(MatterIntEnum): @@ -23420,7 +23421,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=ElectricalEnergyMeasurement.Structs.MeasurementAccuracyStruct) - value: 'ElectricalEnergyMeasurement.Structs.MeasurementAccuracyStruct' = field(default_factory=lambda: ElectricalEnergyMeasurement.Structs.MeasurementAccuracyStruct()) + value: ElectricalEnergyMeasurement.Structs.MeasurementAccuracyStruct = field(default_factory=lambda: ElectricalEnergyMeasurement.Structs.MeasurementAccuracyStruct()) @dataclass class CumulativeEnergyImported(ClusterAttributeDescriptor): @@ -23436,7 +23437,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]) - value: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None + value: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None @dataclass class CumulativeEnergyExported(ClusterAttributeDescriptor): @@ -23452,7 +23453,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]) - value: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None + value: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None @dataclass class PeriodicEnergyImported(ClusterAttributeDescriptor): @@ -23468,7 +23469,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]) - value: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None + value: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None @dataclass class PeriodicEnergyExported(ClusterAttributeDescriptor): @@ -23484,7 +23485,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]) - value: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None + value: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None @dataclass class CumulativeEnergyReset(ClusterAttributeDescriptor): @@ -23500,7 +23501,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.CumulativeEnergyResetStruct]) - value: 'typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.CumulativeEnergyResetStruct]' = None + value: typing.Union[None, Nullable, ElectricalEnergyMeasurement.Structs.CumulativeEnergyResetStruct] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -23516,7 +23517,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -23532,7 +23533,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -23548,7 +23549,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -23564,7 +23565,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -23580,7 +23581,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -23596,7 +23597,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -23617,8 +23618,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="energyExported", Tag=1, Type=typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]), ]) - energyImported: 'typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None - energyExported: 'typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None + energyImported: typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None + energyExported: typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None @dataclass class PeriodicEnergyMeasured(ClusterEvent): @@ -23638,8 +23639,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="energyExported", Tag=1, Type=typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]), ]) - energyImported: 'typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None - energyExported: 'typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct]' = None + energyImported: typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None + energyExported: typing.Optional[ElectricalEnergyMeasurement.Structs.EnergyMeasurementStruct] = None @dataclass @@ -23664,18 +23665,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - heaterTypes: 'uint' = None - heatDemand: 'uint' = None - tankVolume: 'typing.Optional[uint]' = None - estimatedHeatRequired: 'typing.Optional[int]' = None - tankPercentage: 'typing.Optional[uint]' = None - boostState: 'WaterHeaterManagement.Enums.BoostStateEnum' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + heaterTypes: uint = 0 + heatDemand: uint = 0 + tankVolume: typing.Optional[uint] = None + estimatedHeatRequired: typing.Optional[int] = None + tankPercentage: typing.Optional[uint] = None + boostState: WaterHeaterManagement.Enums.BoostStateEnum = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class BoostStateEnum(MatterIntEnum): @@ -23727,7 +23728,7 @@ class Boost(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000094 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -23736,14 +23737,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="boostInfo", Tag=0, Type=WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct), ]) - boostInfo: 'WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct' = field(default_factory=lambda: WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct()) + boostInfo: WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct = field(default_factory=lambda: WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct()) @dataclass class CancelBoost(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000094 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -23766,7 +23767,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class HeatDemand(ClusterAttributeDescriptor): @@ -23782,7 +23783,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class TankVolume(ClusterAttributeDescriptor): @@ -23798,7 +23799,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class EstimatedHeatRequired(ClusterAttributeDescriptor): @@ -23814,7 +23815,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class TankPercentage(ClusterAttributeDescriptor): @@ -23830,7 +23831,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class BoostState(ClusterAttributeDescriptor): @@ -23846,7 +23847,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=WaterHeaterManagement.Enums.BoostStateEnum) - value: 'WaterHeaterManagement.Enums.BoostStateEnum' = 0 + value: WaterHeaterManagement.Enums.BoostStateEnum = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -23862,7 +23863,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -23878,7 +23879,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -23894,7 +23895,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -23910,7 +23911,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -23926,7 +23927,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -23942,7 +23943,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -23962,7 +23963,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="boostInfo", Tag=0, Type=WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct), ]) - boostInfo: 'WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct' = field(default_factory=lambda: WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct()) + boostInfo: WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct = field(default_factory=lambda: WaterHeaterManagement.Structs.WaterHeaterBoostInfoStruct()) @dataclass class BoostEnded(ClusterEvent): @@ -24005,20 +24006,20 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - loadControlPrograms: 'typing.List[DemandResponseLoadControl.Structs.LoadControlProgramStruct]' = None - numberOfLoadControlPrograms: 'uint' = None - events: 'typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct]' = None - activeEvents: 'typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct]' = None - numberOfEventsPerProgram: 'uint' = None - numberOfTransitions: 'uint' = None - defaultRandomStart: 'uint' = None - defaultRandomDuration: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + loadControlPrograms: typing.List[DemandResponseLoadControl.Structs.LoadControlProgramStruct] = field(default_factory=lambda: []) + numberOfLoadControlPrograms: uint = 0 + events: typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct] = field(default_factory=lambda: []) + activeEvents: typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct] = field(default_factory=lambda: []) + numberOfEventsPerProgram: uint = 0 + numberOfTransitions: uint = 0 + defaultRandomStart: uint = 0 + defaultRandomDuration: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class CriticalityLevelEnum(MatterIntEnum): @@ -24251,7 +24252,7 @@ class RegisterLoadControlProgramRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000096 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -24260,14 +24261,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="loadControlProgram", Tag=0, Type=DemandResponseLoadControl.Structs.LoadControlProgramStruct), ]) - loadControlProgram: 'DemandResponseLoadControl.Structs.LoadControlProgramStruct' = field(default_factory=lambda: DemandResponseLoadControl.Structs.LoadControlProgramStruct()) + loadControlProgram: DemandResponseLoadControl.Structs.LoadControlProgramStruct = field(default_factory=lambda: DemandResponseLoadControl.Structs.LoadControlProgramStruct()) @dataclass class UnregisterLoadControlProgramRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000096 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -24276,14 +24277,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="loadControlProgramID", Tag=0, Type=bytes), ]) - loadControlProgramID: 'bytes' = b"" + loadControlProgramID: bytes = b"" @dataclass class AddLoadControlEventRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000096 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -24292,14 +24293,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="event", Tag=0, Type=DemandResponseLoadControl.Structs.LoadControlEventStruct), ]) - event: 'DemandResponseLoadControl.Structs.LoadControlEventStruct' = field(default_factory=lambda: DemandResponseLoadControl.Structs.LoadControlEventStruct()) + event: DemandResponseLoadControl.Structs.LoadControlEventStruct = field(default_factory=lambda: DemandResponseLoadControl.Structs.LoadControlEventStruct()) @dataclass class RemoveLoadControlEventRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000096 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -24309,15 +24310,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="cancelControl", Tag=1, Type=uint), ]) - eventID: 'bytes' = b"" - cancelControl: 'uint' = 0 + eventID: bytes = b"" + cancelControl: uint = 0 @dataclass class ClearLoadControlEventsRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000096 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -24340,7 +24341,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[DemandResponseLoadControl.Structs.LoadControlProgramStruct]) - value: 'typing.List[DemandResponseLoadControl.Structs.LoadControlProgramStruct]' = field(default_factory=lambda: []) + value: typing.List[DemandResponseLoadControl.Structs.LoadControlProgramStruct] = field(default_factory=lambda: []) @dataclass class NumberOfLoadControlPrograms(ClusterAttributeDescriptor): @@ -24356,7 +24357,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Events(ClusterAttributeDescriptor): @@ -24372,7 +24373,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct]) - value: 'typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct]' = field(default_factory=lambda: []) + value: typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct] = field(default_factory=lambda: []) @dataclass class ActiveEvents(ClusterAttributeDescriptor): @@ -24388,7 +24389,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct]) - value: 'typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct]' = field(default_factory=lambda: []) + value: typing.List[DemandResponseLoadControl.Structs.LoadControlEventStruct] = field(default_factory=lambda: []) @dataclass class NumberOfEventsPerProgram(ClusterAttributeDescriptor): @@ -24404,7 +24405,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class NumberOfTransitions(ClusterAttributeDescriptor): @@ -24420,7 +24421,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class DefaultRandomStart(ClusterAttributeDescriptor): @@ -24436,7 +24437,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class DefaultRandomDuration(ClusterAttributeDescriptor): @@ -24452,7 +24453,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -24468,7 +24469,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -24484,7 +24485,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -24500,7 +24501,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -24516,7 +24517,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -24532,7 +24533,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -24548,7 +24549,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -24577,16 +24578,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="heatingSourceControl", Tag=9, Type=typing.Union[None, Nullable, DemandResponseLoadControl.Structs.HeatingSourceControlStruct]), ]) - eventID: 'bytes' = b"" - transitionIndex: 'typing.Union[Nullable, uint]' = NullValue - status: 'DemandResponseLoadControl.Enums.LoadControlEventStatusEnum' = 0 - criticality: 'DemandResponseLoadControl.Enums.CriticalityLevelEnum' = 0 - control: 'uint' = 0 - temperatureControl: 'typing.Union[None, Nullable, DemandResponseLoadControl.Structs.TemperatureControlStruct]' = None - averageLoadControl: 'typing.Union[None, Nullable, DemandResponseLoadControl.Structs.AverageLoadControlStruct]' = None - dutyCycleControl: 'typing.Union[None, Nullable, DemandResponseLoadControl.Structs.DutyCycleControlStruct]' = None - powerSavingsControl: 'typing.Union[None, Nullable, DemandResponseLoadControl.Structs.PowerSavingsControlStruct]' = None - heatingSourceControl: 'typing.Union[None, Nullable, DemandResponseLoadControl.Structs.HeatingSourceControlStruct]' = None + eventID: bytes = b"" + transitionIndex: typing.Union[Nullable, uint] = NullValue + status: DemandResponseLoadControl.Enums.LoadControlEventStatusEnum = 0 + criticality: DemandResponseLoadControl.Enums.CriticalityLevelEnum = 0 + control: uint = 0 + temperatureControl: typing.Union[None, Nullable, DemandResponseLoadControl.Structs.TemperatureControlStruct] = None + averageLoadControl: typing.Union[None, Nullable, DemandResponseLoadControl.Structs.AverageLoadControlStruct] = None + dutyCycleControl: typing.Union[None, Nullable, DemandResponseLoadControl.Structs.DutyCycleControlStruct] = None + powerSavingsControl: typing.Union[None, Nullable, DemandResponseLoadControl.Structs.PowerSavingsControlStruct] = None + heatingSourceControl: typing.Union[None, Nullable, DemandResponseLoadControl.Structs.HeatingSourceControlStruct] = None @dataclass @@ -24607,14 +24608,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - messages: 'typing.List[Messages.Structs.MessageStruct]' = None - activeMessageIDs: 'typing.List[bytes]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + messages: typing.List[Messages.Structs.MessageStruct] = field(default_factory=lambda: []) + activeMessageIDs: typing.List[bytes] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class FutureMessagePreferenceEnum(MatterIntEnum): @@ -24697,7 +24698,7 @@ class PresentMessagesRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000097 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -24712,20 +24713,20 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="responses", Tag=6, Type=typing.Optional[typing.List[Messages.Structs.MessageResponseOptionStruct]]), ]) - messageID: 'bytes' = b"" - priority: 'Messages.Enums.MessagePriorityEnum' = 0 - messageControl: 'uint' = 0 - startTime: 'typing.Union[Nullable, uint]' = NullValue - duration: 'typing.Union[Nullable, uint]' = NullValue - messageText: 'str' = "" - responses: 'typing.Optional[typing.List[Messages.Structs.MessageResponseOptionStruct]]' = None + messageID: bytes = b"" + priority: Messages.Enums.MessagePriorityEnum = 0 + messageControl: uint = 0 + startTime: typing.Union[Nullable, uint] = NullValue + duration: typing.Union[Nullable, uint] = NullValue + messageText: str = "" + responses: typing.Optional[typing.List[Messages.Structs.MessageResponseOptionStruct]] = None @dataclass class CancelMessagesRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000097 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -24734,7 +24735,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="messageIDs", Tag=0, Type=typing.List[bytes]), ]) - messageIDs: 'typing.List[bytes]' = field(default_factory=lambda: []) + messageIDs: typing.List[bytes] = field(default_factory=lambda: []) class Attributes: @dataclass @@ -24751,7 +24752,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[Messages.Structs.MessageStruct]) - value: 'typing.List[Messages.Structs.MessageStruct]' = field(default_factory=lambda: []) + value: typing.List[Messages.Structs.MessageStruct] = field(default_factory=lambda: []) @dataclass class ActiveMessageIDs(ClusterAttributeDescriptor): @@ -24767,7 +24768,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[bytes]) - value: 'typing.List[bytes]' = field(default_factory=lambda: []) + value: typing.List[bytes] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -24783,7 +24784,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -24799,7 +24800,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -24815,7 +24816,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -24831,7 +24832,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -24847,7 +24848,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -24863,7 +24864,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -24883,7 +24884,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="messageID", Tag=0, Type=bytes), ]) - messageID: 'bytes' = b"" + messageID: bytes = b"" @dataclass class MessagePresented(ClusterEvent): @@ -24902,7 +24903,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="messageID", Tag=0, Type=bytes), ]) - messageID: 'bytes' = b"" + messageID: bytes = b"" @dataclass class MessageComplete(ClusterEvent): @@ -24924,10 +24925,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="futureMessagesPreference", Tag=3, Type=typing.Union[Nullable, Messages.Enums.FutureMessagePreferenceEnum]), ]) - messageID: 'bytes' = b"" - responseID: 'typing.Union[None, Nullable, uint]' = None - reply: 'typing.Union[None, Nullable, str]' = None - futureMessagesPreference: 'typing.Union[Nullable, Messages.Enums.FutureMessagePreferenceEnum]' = NullValue + messageID: bytes = b"" + responseID: typing.Union[None, Nullable, uint] = None + reply: typing.Union[None, Nullable, str] = None + futureMessagesPreference: typing.Union[Nullable, Messages.Enums.FutureMessagePreferenceEnum] = NullValue @dataclass @@ -24954,20 +24955,20 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - ESAType: 'DeviceEnergyManagement.Enums.ESATypeEnum' = None - ESACanGenerate: 'bool' = None - ESAState: 'DeviceEnergyManagement.Enums.ESAStateEnum' = None - absMinPower: 'int' = None - absMaxPower: 'int' = None - powerAdjustmentCapability: 'typing.Union[None, Nullable, DeviceEnergyManagement.Structs.PowerAdjustCapabilityStruct]' = None - forecast: 'typing.Union[None, Nullable, DeviceEnergyManagement.Structs.ForecastStruct]' = None - optOutState: 'typing.Optional[DeviceEnergyManagement.Enums.OptOutStateEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + ESAType: DeviceEnergyManagement.Enums.ESATypeEnum = 0 + ESACanGenerate: bool = False + ESAState: DeviceEnergyManagement.Enums.ESAStateEnum = 0 + absMinPower: int = 0 + absMaxPower: int = 0 + powerAdjustmentCapability: typing.Union[None, Nullable, DeviceEnergyManagement.Structs.PowerAdjustCapabilityStruct] = None + forecast: typing.Union[None, Nullable, DeviceEnergyManagement.Structs.ForecastStruct] = None + optOutState: typing.Optional[DeviceEnergyManagement.Enums.OptOutStateEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class AdjustmentCauseEnum(MatterIntEnum): @@ -25237,7 +25238,7 @@ class PowerAdjustRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000098 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25248,16 +25249,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="cause", Tag=2, Type=DeviceEnergyManagement.Enums.AdjustmentCauseEnum), ]) - power: 'int' = 0 - duration: 'uint' = 0 - cause: 'DeviceEnergyManagement.Enums.AdjustmentCauseEnum' = 0 + power: int = 0 + duration: uint = 0 + cause: DeviceEnergyManagement.Enums.AdjustmentCauseEnum = 0 @dataclass class CancelPowerAdjustRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000098 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25270,7 +25271,7 @@ class StartTimeAdjustRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000098 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25280,15 +25281,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="cause", Tag=1, Type=DeviceEnergyManagement.Enums.AdjustmentCauseEnum), ]) - requestedStartTime: 'uint' = 0 - cause: 'DeviceEnergyManagement.Enums.AdjustmentCauseEnum' = 0 + requestedStartTime: uint = 0 + cause: DeviceEnergyManagement.Enums.AdjustmentCauseEnum = 0 @dataclass class PauseRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000098 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25298,15 +25299,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="cause", Tag=1, Type=DeviceEnergyManagement.Enums.AdjustmentCauseEnum), ]) - duration: 'uint' = 0 - cause: 'DeviceEnergyManagement.Enums.AdjustmentCauseEnum' = 0 + duration: uint = 0 + cause: DeviceEnergyManagement.Enums.AdjustmentCauseEnum = 0 @dataclass class ResumeRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000098 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25319,7 +25320,7 @@ class ModifyForecastRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000098 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25330,16 +25331,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="cause", Tag=2, Type=DeviceEnergyManagement.Enums.AdjustmentCauseEnum), ]) - forecastID: 'uint' = 0 - slotAdjustments: 'typing.List[DeviceEnergyManagement.Structs.SlotAdjustmentStruct]' = field(default_factory=lambda: []) - cause: 'DeviceEnergyManagement.Enums.AdjustmentCauseEnum' = 0 + forecastID: uint = 0 + slotAdjustments: typing.List[DeviceEnergyManagement.Structs.SlotAdjustmentStruct] = field(default_factory=lambda: []) + cause: DeviceEnergyManagement.Enums.AdjustmentCauseEnum = 0 @dataclass class RequestConstraintBasedForecast(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000098 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25349,15 +25350,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="cause", Tag=1, Type=DeviceEnergyManagement.Enums.AdjustmentCauseEnum), ]) - constraints: 'typing.List[DeviceEnergyManagement.Structs.ConstraintsStruct]' = field(default_factory=lambda: []) - cause: 'DeviceEnergyManagement.Enums.AdjustmentCauseEnum' = 0 + constraints: typing.List[DeviceEnergyManagement.Structs.ConstraintsStruct] = field(default_factory=lambda: []) + cause: DeviceEnergyManagement.Enums.AdjustmentCauseEnum = 0 @dataclass class CancelRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000098 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25380,7 +25381,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=DeviceEnergyManagement.Enums.ESATypeEnum) - value: 'DeviceEnergyManagement.Enums.ESATypeEnum' = 0 + value: DeviceEnergyManagement.Enums.ESATypeEnum = 0 @dataclass class ESACanGenerate(ClusterAttributeDescriptor): @@ -25396,7 +25397,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class ESAState(ClusterAttributeDescriptor): @@ -25412,7 +25413,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=DeviceEnergyManagement.Enums.ESAStateEnum) - value: 'DeviceEnergyManagement.Enums.ESAStateEnum' = 0 + value: DeviceEnergyManagement.Enums.ESAStateEnum = 0 @dataclass class AbsMinPower(ClusterAttributeDescriptor): @@ -25428,7 +25429,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class AbsMaxPower(ClusterAttributeDescriptor): @@ -25444,7 +25445,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class PowerAdjustmentCapability(ClusterAttributeDescriptor): @@ -25460,7 +25461,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, DeviceEnergyManagement.Structs.PowerAdjustCapabilityStruct]) - value: 'typing.Union[None, Nullable, DeviceEnergyManagement.Structs.PowerAdjustCapabilityStruct]' = None + value: typing.Union[None, Nullable, DeviceEnergyManagement.Structs.PowerAdjustCapabilityStruct] = None @dataclass class Forecast(ClusterAttributeDescriptor): @@ -25476,7 +25477,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, DeviceEnergyManagement.Structs.ForecastStruct]) - value: 'typing.Union[None, Nullable, DeviceEnergyManagement.Structs.ForecastStruct]' = None + value: typing.Union[None, Nullable, DeviceEnergyManagement.Structs.ForecastStruct] = None @dataclass class OptOutState(ClusterAttributeDescriptor): @@ -25492,7 +25493,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[DeviceEnergyManagement.Enums.OptOutStateEnum]) - value: 'typing.Optional[DeviceEnergyManagement.Enums.OptOutStateEnum]' = None + value: typing.Optional[DeviceEnergyManagement.Enums.OptOutStateEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -25508,7 +25509,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -25524,7 +25525,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -25540,7 +25541,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -25556,7 +25557,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -25572,7 +25573,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -25588,7 +25589,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -25626,9 +25627,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="energyUse", Tag=2, Type=int), ]) - cause: 'DeviceEnergyManagement.Enums.CauseEnum' = 0 - duration: 'uint' = 0 - energyUse: 'int' = 0 + cause: DeviceEnergyManagement.Enums.CauseEnum = 0 + duration: uint = 0 + energyUse: int = 0 @dataclass class Paused(ClusterEvent): @@ -25663,7 +25664,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="cause", Tag=0, Type=DeviceEnergyManagement.Enums.CauseEnum), ]) - cause: 'DeviceEnergyManagement.Enums.CauseEnum' = 0 + cause: DeviceEnergyManagement.Enums.CauseEnum = 0 @dataclass @@ -25705,35 +25706,35 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - state: 'typing.Union[Nullable, EnergyEvse.Enums.StateEnum]' = None - supplyState: 'EnergyEvse.Enums.SupplyStateEnum' = None - faultState: 'EnergyEvse.Enums.FaultStateEnum' = None - chargingEnabledUntil: 'typing.Union[Nullable, uint]' = None - dischargingEnabledUntil: 'typing.Union[None, Nullable, uint]' = None - circuitCapacity: 'int' = None - minimumChargeCurrent: 'int' = None - maximumChargeCurrent: 'int' = None - maximumDischargeCurrent: 'typing.Optional[int]' = None - userMaximumChargeCurrent: 'typing.Optional[int]' = None - randomizationDelayWindow: 'typing.Optional[uint]' = None - nextChargeStartTime: 'typing.Union[None, Nullable, uint]' = None - nextChargeTargetTime: 'typing.Union[None, Nullable, uint]' = None - nextChargeRequiredEnergy: 'typing.Union[None, Nullable, int]' = None - nextChargeTargetSoC: 'typing.Union[None, Nullable, uint]' = None - approximateEVEfficiency: 'typing.Union[None, Nullable, uint]' = None - stateOfCharge: 'typing.Union[None, Nullable, uint]' = None - batteryCapacity: 'typing.Union[None, Nullable, int]' = None - vehicleID: 'typing.Union[None, Nullable, str]' = None - sessionID: 'typing.Union[Nullable, uint]' = None - sessionDuration: 'typing.Union[Nullable, uint]' = None - sessionEnergyCharged: 'typing.Union[Nullable, int]' = None - sessionEnergyDischarged: 'typing.Union[None, Nullable, int]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + state: typing.Union[Nullable, EnergyEvse.Enums.StateEnum] = NullValue + supplyState: EnergyEvse.Enums.SupplyStateEnum = 0 + faultState: EnergyEvse.Enums.FaultStateEnum = 0 + chargingEnabledUntil: typing.Union[Nullable, uint] = NullValue + dischargingEnabledUntil: typing.Union[None, Nullable, uint] = None + circuitCapacity: int = 0 + minimumChargeCurrent: int = 0 + maximumChargeCurrent: int = 0 + maximumDischargeCurrent: typing.Optional[int] = None + userMaximumChargeCurrent: typing.Optional[int] = None + randomizationDelayWindow: typing.Optional[uint] = None + nextChargeStartTime: typing.Union[None, Nullable, uint] = None + nextChargeTargetTime: typing.Union[None, Nullable, uint] = None + nextChargeRequiredEnergy: typing.Union[None, Nullable, int] = None + nextChargeTargetSoC: typing.Union[None, Nullable, uint] = None + approximateEVEfficiency: typing.Union[None, Nullable, uint] = None + stateOfCharge: typing.Union[None, Nullable, uint] = None + batteryCapacity: typing.Union[None, Nullable, int] = None + vehicleID: typing.Union[None, Nullable, str] = None + sessionID: typing.Union[Nullable, uint] = NullValue + sessionDuration: typing.Union[Nullable, uint] = NullValue + sessionEnergyCharged: typing.Union[Nullable, int] = NullValue + sessionEnergyDischarged: typing.Union[None, Nullable, int] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class EnergyTransferStoppedReasonEnum(MatterIntEnum): @@ -25849,7 +25850,7 @@ class GetTargetsResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000099 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25858,14 +25859,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="chargingTargetSchedules", Tag=0, Type=typing.List[EnergyEvse.Structs.ChargingTargetScheduleStruct]), ]) - chargingTargetSchedules: 'typing.List[EnergyEvse.Structs.ChargingTargetScheduleStruct]' = field(default_factory=lambda: []) + chargingTargetSchedules: typing.List[EnergyEvse.Structs.ChargingTargetScheduleStruct] = field(default_factory=lambda: []) @dataclass class Disable(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000099 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25882,7 +25883,7 @@ class EnableCharging(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000099 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25897,16 +25898,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - chargingEnabledUntil: 'typing.Union[Nullable, uint]' = NullValue - minimumChargeCurrent: 'int' = 0 - maximumChargeCurrent: 'int' = 0 + chargingEnabledUntil: typing.Union[Nullable, uint] = NullValue + minimumChargeCurrent: int = 0 + maximumChargeCurrent: int = 0 @dataclass class EnableDischarging(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000099 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25920,15 +25921,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - dischargingEnabledUntil: 'typing.Union[Nullable, uint]' = NullValue - maximumDischargeCurrent: 'int' = 0 + dischargingEnabledUntil: typing.Union[Nullable, uint] = NullValue + maximumDischargeCurrent: int = 0 @dataclass class StartDiagnostics(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000099 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25945,7 +25946,7 @@ class SetTargets(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000099 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -25958,7 +25959,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - chargingTargetSchedules: 'typing.List[EnergyEvse.Structs.ChargingTargetScheduleStruct]' = field(default_factory=lambda: []) + chargingTargetSchedules: typing.List[EnergyEvse.Structs.ChargingTargetScheduleStruct] = field(default_factory=lambda: []) @dataclass class GetTargets(ClusterCommand): @@ -25982,7 +25983,7 @@ class ClearTargets(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000099 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -26009,7 +26010,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, EnergyEvse.Enums.StateEnum]) - value: 'typing.Union[Nullable, EnergyEvse.Enums.StateEnum]' = NullValue + value: typing.Union[Nullable, EnergyEvse.Enums.StateEnum] = NullValue @dataclass class SupplyState(ClusterAttributeDescriptor): @@ -26025,7 +26026,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=EnergyEvse.Enums.SupplyStateEnum) - value: 'EnergyEvse.Enums.SupplyStateEnum' = 0 + value: EnergyEvse.Enums.SupplyStateEnum = 0 @dataclass class FaultState(ClusterAttributeDescriptor): @@ -26041,7 +26042,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=EnergyEvse.Enums.FaultStateEnum) - value: 'EnergyEvse.Enums.FaultStateEnum' = 0 + value: EnergyEvse.Enums.FaultStateEnum = 0 @dataclass class ChargingEnabledUntil(ClusterAttributeDescriptor): @@ -26057,7 +26058,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class DischargingEnabledUntil(ClusterAttributeDescriptor): @@ -26073,7 +26074,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class CircuitCapacity(ClusterAttributeDescriptor): @@ -26089,7 +26090,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class MinimumChargeCurrent(ClusterAttributeDescriptor): @@ -26105,7 +26106,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class MaximumChargeCurrent(ClusterAttributeDescriptor): @@ -26121,7 +26122,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class MaximumDischargeCurrent(ClusterAttributeDescriptor): @@ -26137,7 +26138,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class UserMaximumChargeCurrent(ClusterAttributeDescriptor): @@ -26153,7 +26154,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class RandomizationDelayWindow(ClusterAttributeDescriptor): @@ -26169,7 +26170,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NextChargeStartTime(ClusterAttributeDescriptor): @@ -26185,7 +26186,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class NextChargeTargetTime(ClusterAttributeDescriptor): @@ -26201,7 +26202,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class NextChargeRequiredEnergy(ClusterAttributeDescriptor): @@ -26217,7 +26218,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class NextChargeTargetSoC(ClusterAttributeDescriptor): @@ -26233,7 +26234,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class ApproximateEVEfficiency(ClusterAttributeDescriptor): @@ -26249,7 +26250,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class StateOfCharge(ClusterAttributeDescriptor): @@ -26265,7 +26266,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class BatteryCapacity(ClusterAttributeDescriptor): @@ -26281,7 +26282,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class VehicleID(ClusterAttributeDescriptor): @@ -26297,7 +26298,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, str]) - value: 'typing.Union[None, Nullable, str]' = None + value: typing.Union[None, Nullable, str] = None @dataclass class SessionID(ClusterAttributeDescriptor): @@ -26313,7 +26314,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class SessionDuration(ClusterAttributeDescriptor): @@ -26329,7 +26330,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class SessionEnergyCharged(ClusterAttributeDescriptor): @@ -26345,7 +26346,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class SessionEnergyDischarged(ClusterAttributeDescriptor): @@ -26361,7 +26362,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -26377,7 +26378,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -26393,7 +26394,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -26409,7 +26410,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -26425,7 +26426,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -26441,7 +26442,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -26457,7 +26458,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -26477,7 +26478,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sessionID", Tag=0, Type=uint), ]) - sessionID: 'uint' = 0 + sessionID: uint = 0 @dataclass class EVNotDetected(ClusterEvent): @@ -26500,11 +26501,11 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sessionEnergyDischarged", Tag=4, Type=typing.Optional[int]), ]) - sessionID: 'uint' = 0 - state: 'EnergyEvse.Enums.StateEnum' = 0 - sessionDuration: 'uint' = 0 - sessionEnergyCharged: 'int' = 0 - sessionEnergyDischarged: 'typing.Optional[int]' = None + sessionID: uint = 0 + state: EnergyEvse.Enums.StateEnum = 0 + sessionDuration: uint = 0 + sessionEnergyCharged: int = 0 + sessionEnergyDischarged: typing.Optional[int] = None @dataclass class EnergyTransferStarted(ClusterEvent): @@ -26526,10 +26527,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="maximumDischargeCurrent", Tag=3, Type=typing.Optional[int]), ]) - sessionID: 'uint' = 0 - state: 'EnergyEvse.Enums.StateEnum' = 0 - maximumCurrent: 'int' = 0 - maximumDischargeCurrent: 'typing.Optional[int]' = None + sessionID: uint = 0 + state: EnergyEvse.Enums.StateEnum = 0 + maximumCurrent: int = 0 + maximumDischargeCurrent: typing.Optional[int] = None @dataclass class EnergyTransferStopped(ClusterEvent): @@ -26552,11 +26553,11 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="energyDischarged", Tag=5, Type=typing.Optional[int]), ]) - sessionID: 'uint' = 0 - state: 'EnergyEvse.Enums.StateEnum' = 0 - reason: 'EnergyEvse.Enums.EnergyTransferStoppedReasonEnum' = 0 - energyTransferred: 'int' = 0 - energyDischarged: 'typing.Optional[int]' = None + sessionID: uint = 0 + state: EnergyEvse.Enums.StateEnum = 0 + reason: EnergyEvse.Enums.EnergyTransferStoppedReasonEnum = 0 + energyTransferred: int = 0 + energyDischarged: typing.Optional[int] = None @dataclass class Fault(ClusterEvent): @@ -26578,10 +26579,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="faultStateCurrentState", Tag=4, Type=EnergyEvse.Enums.FaultStateEnum), ]) - sessionID: 'typing.Union[Nullable, uint]' = NullValue - state: 'EnergyEvse.Enums.StateEnum' = 0 - faultStatePreviousState: 'EnergyEvse.Enums.FaultStateEnum' = 0 - faultStateCurrentState: 'EnergyEvse.Enums.FaultStateEnum' = 0 + sessionID: typing.Union[Nullable, uint] = NullValue + state: EnergyEvse.Enums.StateEnum = 0 + faultStatePreviousState: EnergyEvse.Enums.FaultStateEnum = 0 + faultStateCurrentState: EnergyEvse.Enums.FaultStateEnum = 0 @dataclass class Rfid(ClusterEvent): @@ -26600,7 +26601,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="uid", Tag=0, Type=bytes), ]) - uid: 'bytes' = b"" + uid: bytes = b"" @dataclass @@ -26624,17 +26625,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - energyBalances: 'typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]]' = None - currentEnergyBalance: 'typing.Optional[uint]' = None - energyPriorities: 'typing.Optional[typing.List[EnergyPreference.Enums.EnergyPriorityEnum]]' = None - lowPowerModeSensitivities: 'typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]]' = None - currentLowPowerModeSensitivity: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + energyBalances: typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]] = None + currentEnergyBalance: typing.Optional[uint] = None + energyPriorities: typing.Optional[typing.List[EnergyPreference.Enums.EnergyPriorityEnum]] = None + lowPowerModeSensitivities: typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]] = None + currentLowPowerModeSensitivity: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class EnergyPriorityEnum(MatterIntEnum): @@ -26682,7 +26683,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]]) - value: 'typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]]' = None + value: typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]] = None @dataclass class CurrentEnergyBalance(ClusterAttributeDescriptor): @@ -26698,7 +26699,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class EnergyPriorities(ClusterAttributeDescriptor): @@ -26714,7 +26715,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[EnergyPreference.Enums.EnergyPriorityEnum]]) - value: 'typing.Optional[typing.List[EnergyPreference.Enums.EnergyPriorityEnum]]' = None + value: typing.Optional[typing.List[EnergyPreference.Enums.EnergyPriorityEnum]] = None @dataclass class LowPowerModeSensitivities(ClusterAttributeDescriptor): @@ -26730,7 +26731,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]]) - value: 'typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]]' = None + value: typing.Optional[typing.List[EnergyPreference.Structs.BalanceStruct]] = None @dataclass class CurrentLowPowerModeSensitivity(ClusterAttributeDescriptor): @@ -26746,7 +26747,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -26762,7 +26763,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -26778,7 +26779,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -26794,7 +26795,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -26810,7 +26811,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -26826,7 +26827,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -26842,7 +26843,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -26863,14 +26864,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - availableEndpoints: 'typing.Optional[typing.List[uint]]' = None - activeEndpoints: 'typing.Optional[typing.List[uint]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + availableEndpoints: typing.Optional[typing.List[uint]] = None + activeEndpoints: typing.Optional[typing.List[uint]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -26894,7 +26895,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[uint]]) - value: 'typing.Optional[typing.List[uint]]' = None + value: typing.Optional[typing.List[uint]] = None @dataclass class ActiveEndpoints(ClusterAttributeDescriptor): @@ -26910,7 +26911,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[uint]]) - value: 'typing.Optional[typing.List[uint]]' = None + value: typing.Optional[typing.List[uint]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -26926,7 +26927,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -26942,7 +26943,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -26958,7 +26959,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -26974,7 +26975,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -26990,7 +26991,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -27006,7 +27007,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -27029,16 +27030,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[EnergyEvseMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - startUpMode: 'typing.Union[None, Nullable, uint]' = None - onMode: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[EnergyEvseMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + startUpMode: typing.Union[None, Nullable, uint] = None + onMode: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -27109,14 +27110,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 @dataclass class ChangeToModeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000009D command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -27126,8 +27127,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=typing.Optional[str]), ]) - status: 'uint' = 0 - statusText: 'typing.Optional[str]' = None + status: uint = 0 + statusText: typing.Optional[str] = None class Attributes: @dataclass @@ -27144,7 +27145,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[EnergyEvseMode.Structs.ModeOptionStruct]) - value: 'typing.List[EnergyEvseMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[EnergyEvseMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -27160,7 +27161,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class StartUpMode(ClusterAttributeDescriptor): @@ -27176,7 +27177,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OnMode(ClusterAttributeDescriptor): @@ -27192,7 +27193,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -27208,7 +27209,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -27224,7 +27225,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -27240,7 +27241,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -27256,7 +27257,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -27272,7 +27273,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -27288,7 +27289,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -27311,16 +27312,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[WaterHeaterMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - startUpMode: 'typing.Union[None, Nullable, uint]' = None - onMode: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[WaterHeaterMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + startUpMode: typing.Union[None, Nullable, uint] = None + onMode: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -27391,14 +27392,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 @dataclass class ChangeToModeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000009E command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -27408,8 +27409,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=typing.Optional[str]), ]) - status: 'uint' = 0 - statusText: 'typing.Optional[str]' = None + status: uint = 0 + statusText: typing.Optional[str] = None class Attributes: @dataclass @@ -27426,7 +27427,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[WaterHeaterMode.Structs.ModeOptionStruct]) - value: 'typing.List[WaterHeaterMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[WaterHeaterMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -27442,7 +27443,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class StartUpMode(ClusterAttributeDescriptor): @@ -27458,7 +27459,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OnMode(ClusterAttributeDescriptor): @@ -27474,7 +27475,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -27490,7 +27491,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -27506,7 +27507,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -27522,7 +27523,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -27538,7 +27539,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -27554,7 +27555,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -27570,7 +27571,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -27593,16 +27594,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedModes: 'typing.List[DeviceEnergyManagementMode.Structs.ModeOptionStruct]' = None - currentMode: 'uint' = None - startUpMode: 'typing.Union[None, Nullable, uint]' = None - onMode: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedModes: typing.List[DeviceEnergyManagementMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) + currentMode: uint = 0 + startUpMode: typing.Union[None, Nullable, uint] = None + onMode: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ModeTag(MatterIntEnum): @@ -27674,14 +27675,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newMode", Tag=0, Type=uint), ]) - newMode: 'uint' = 0 + newMode: uint = 0 @dataclass class ChangeToModeResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000009F command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -27691,8 +27692,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=typing.Optional[str]), ]) - status: 'uint' = 0 - statusText: 'typing.Optional[str]' = None + status: uint = 0 + statusText: typing.Optional[str] = None class Attributes: @dataclass @@ -27709,7 +27710,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[DeviceEnergyManagementMode.Structs.ModeOptionStruct]) - value: 'typing.List[DeviceEnergyManagementMode.Structs.ModeOptionStruct]' = field(default_factory=lambda: []) + value: typing.List[DeviceEnergyManagementMode.Structs.ModeOptionStruct] = field(default_factory=lambda: []) @dataclass class CurrentMode(ClusterAttributeDescriptor): @@ -27725,7 +27726,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class StartUpMode(ClusterAttributeDescriptor): @@ -27741,7 +27742,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OnMode(ClusterAttributeDescriptor): @@ -27757,7 +27758,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -27773,7 +27774,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -27789,7 +27790,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -27805,7 +27806,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -27821,7 +27822,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -27837,7 +27838,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -27853,7 +27854,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -27917,57 +27918,57 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - lockState: 'typing.Union[Nullable, DoorLock.Enums.DlLockState]' = None - lockType: 'DoorLock.Enums.DlLockType' = None - actuatorEnabled: 'bool' = None - doorState: 'typing.Union[None, Nullable, DoorLock.Enums.DoorStateEnum]' = None - doorOpenEvents: 'typing.Optional[uint]' = None - doorClosedEvents: 'typing.Optional[uint]' = None - openPeriod: 'typing.Optional[uint]' = None - numberOfTotalUsersSupported: 'typing.Optional[uint]' = None - numberOfPINUsersSupported: 'typing.Optional[uint]' = None - numberOfRFIDUsersSupported: 'typing.Optional[uint]' = None - numberOfWeekDaySchedulesSupportedPerUser: 'typing.Optional[uint]' = None - numberOfYearDaySchedulesSupportedPerUser: 'typing.Optional[uint]' = None - numberOfHolidaySchedulesSupported: 'typing.Optional[uint]' = None - maxPINCodeLength: 'typing.Optional[uint]' = None - minPINCodeLength: 'typing.Optional[uint]' = None - maxRFIDCodeLength: 'typing.Optional[uint]' = None - minRFIDCodeLength: 'typing.Optional[uint]' = None - credentialRulesSupport: 'typing.Optional[uint]' = None - numberOfCredentialsSupportedPerUser: 'typing.Optional[uint]' = None - language: 'typing.Optional[str]' = None - LEDSettings: 'typing.Optional[uint]' = None - autoRelockTime: 'typing.Optional[uint]' = None - soundVolume: 'typing.Optional[uint]' = None - operatingMode: 'DoorLock.Enums.OperatingModeEnum' = None - supportedOperatingModes: 'uint' = None - defaultConfigurationRegister: 'typing.Optional[uint]' = None - enableLocalProgramming: 'typing.Optional[bool]' = None - enableOneTouchLocking: 'typing.Optional[bool]' = None - enableInsideStatusLED: 'typing.Optional[bool]' = None - enablePrivacyModeButton: 'typing.Optional[bool]' = None - localProgrammingFeatures: 'typing.Optional[uint]' = None - wrongCodeEntryLimit: 'typing.Optional[uint]' = None - userCodeTemporaryDisableTime: 'typing.Optional[uint]' = None - sendPINOverTheAir: 'typing.Optional[bool]' = None - requirePINforRemoteOperation: 'typing.Optional[bool]' = None - expiringUserTimeout: 'typing.Optional[uint]' = None - aliroReaderVerificationKey: 'typing.Union[None, Nullable, bytes]' = None - aliroReaderGroupIdentifier: 'typing.Union[None, Nullable, bytes]' = None - aliroReaderGroupSubIdentifier: 'typing.Optional[bytes]' = None - aliroExpeditedTransactionSupportedProtocolVersions: 'typing.Optional[typing.List[bytes]]' = None - aliroGroupResolvingKey: 'typing.Union[None, Nullable, bytes]' = None - aliroSupportedBLEUWBProtocolVersions: 'typing.Optional[typing.List[bytes]]' = None - aliroBLEAdvertisingVersion: 'typing.Optional[uint]' = None - numberOfAliroCredentialIssuerKeysSupported: 'typing.Optional[uint]' = None - numberOfAliroEndpointKeysSupported: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + lockState: typing.Union[Nullable, DoorLock.Enums.DlLockState] = NullValue + lockType: DoorLock.Enums.DlLockType = 0 + actuatorEnabled: bool = False + doorState: typing.Union[None, Nullable, DoorLock.Enums.DoorStateEnum] = None + doorOpenEvents: typing.Optional[uint] = None + doorClosedEvents: typing.Optional[uint] = None + openPeriod: typing.Optional[uint] = None + numberOfTotalUsersSupported: typing.Optional[uint] = None + numberOfPINUsersSupported: typing.Optional[uint] = None + numberOfRFIDUsersSupported: typing.Optional[uint] = None + numberOfWeekDaySchedulesSupportedPerUser: typing.Optional[uint] = None + numberOfYearDaySchedulesSupportedPerUser: typing.Optional[uint] = None + numberOfHolidaySchedulesSupported: typing.Optional[uint] = None + maxPINCodeLength: typing.Optional[uint] = None + minPINCodeLength: typing.Optional[uint] = None + maxRFIDCodeLength: typing.Optional[uint] = None + minRFIDCodeLength: typing.Optional[uint] = None + credentialRulesSupport: typing.Optional[uint] = None + numberOfCredentialsSupportedPerUser: typing.Optional[uint] = None + language: typing.Optional[str] = None + LEDSettings: typing.Optional[uint] = None + autoRelockTime: typing.Optional[uint] = None + soundVolume: typing.Optional[uint] = None + operatingMode: DoorLock.Enums.OperatingModeEnum = 0 + supportedOperatingModes: uint = 0 + defaultConfigurationRegister: typing.Optional[uint] = None + enableLocalProgramming: typing.Optional[bool] = None + enableOneTouchLocking: typing.Optional[bool] = None + enableInsideStatusLED: typing.Optional[bool] = None + enablePrivacyModeButton: typing.Optional[bool] = None + localProgrammingFeatures: typing.Optional[uint] = None + wrongCodeEntryLimit: typing.Optional[uint] = None + userCodeTemporaryDisableTime: typing.Optional[uint] = None + sendPINOverTheAir: typing.Optional[bool] = None + requirePINforRemoteOperation: typing.Optional[bool] = None + expiringUserTimeout: typing.Optional[uint] = None + aliroReaderVerificationKey: typing.Union[None, Nullable, bytes] = None + aliroReaderGroupIdentifier: typing.Union[None, Nullable, bytes] = None + aliroReaderGroupSubIdentifier: typing.Optional[bytes] = None + aliroExpeditedTransactionSupportedProtocolVersions: typing.Optional[typing.List[bytes]] = None + aliroGroupResolvingKey: typing.Union[None, Nullable, bytes] = None + aliroSupportedBLEUWBProtocolVersions: typing.Optional[typing.List[bytes]] = None + aliroBLEAdvertisingVersion: typing.Optional[uint] = None + numberOfAliroCredentialIssuerKeysSupported: typing.Optional[uint] = None + numberOfAliroEndpointKeysSupported: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class AlarmCodeEnum(MatterIntEnum): @@ -28400,7 +28401,7 @@ class LockDoor(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28413,14 +28414,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - PINCode: 'typing.Optional[bytes]' = None + PINCode: typing.Optional[bytes] = None @dataclass class UnlockDoor(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28433,14 +28434,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - PINCode: 'typing.Optional[bytes]' = None + PINCode: typing.Optional[bytes] = None @dataclass class UnlockWithTimeout(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28454,15 +28455,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - timeout: 'uint' = 0 - PINCode: 'typing.Optional[bytes]' = None + timeout: uint = 0 + PINCode: typing.Optional[bytes] = None @dataclass class SetWeekDaySchedule(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x0000000B is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28477,13 +28478,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="endMinute", Tag=6, Type=uint), ]) - weekDayIndex: 'uint' = 0 - userIndex: 'uint' = 0 - daysMask: 'uint' = 0 - startHour: 'uint' = 0 - startMinute: 'uint' = 0 - endHour: 'uint' = 0 - endMinute: 'uint' = 0 + weekDayIndex: uint = 0 + userIndex: uint = 0 + daysMask: uint = 0 + startHour: uint = 0 + startMinute: uint = 0 + endHour: uint = 0 + endMinute: uint = 0 @dataclass class GetWeekDaySchedule(ClusterCommand): @@ -28500,15 +28501,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="userIndex", Tag=1, Type=uint), ]) - weekDayIndex: 'uint' = 0 - userIndex: 'uint' = 0 + weekDayIndex: uint = 0 + userIndex: uint = 0 @dataclass class GetWeekDayScheduleResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x0000000C is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28524,21 +28525,21 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="endMinute", Tag=7, Type=typing.Optional[uint]), ]) - weekDayIndex: 'uint' = 0 - userIndex: 'uint' = 0 - status: 'DoorLock.Enums.DlStatus' = 0 - daysMask: 'typing.Optional[uint]' = None - startHour: 'typing.Optional[uint]' = None - startMinute: 'typing.Optional[uint]' = None - endHour: 'typing.Optional[uint]' = None - endMinute: 'typing.Optional[uint]' = None + weekDayIndex: uint = 0 + userIndex: uint = 0 + status: DoorLock.Enums.DlStatus = 0 + daysMask: typing.Optional[uint] = None + startHour: typing.Optional[uint] = None + startMinute: typing.Optional[uint] = None + endHour: typing.Optional[uint] = None + endMinute: typing.Optional[uint] = None @dataclass class ClearWeekDaySchedule(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x0000000D is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28548,15 +28549,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="userIndex", Tag=1, Type=uint), ]) - weekDayIndex: 'uint' = 0 - userIndex: 'uint' = 0 + weekDayIndex: uint = 0 + userIndex: uint = 0 @dataclass class SetYearDaySchedule(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x0000000E is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28568,10 +28569,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="localEndTime", Tag=3, Type=uint), ]) - yearDayIndex: 'uint' = 0 - userIndex: 'uint' = 0 - localStartTime: 'uint' = 0 - localEndTime: 'uint' = 0 + yearDayIndex: uint = 0 + userIndex: uint = 0 + localStartTime: uint = 0 + localEndTime: uint = 0 @dataclass class GetYearDaySchedule(ClusterCommand): @@ -28588,15 +28589,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="userIndex", Tag=1, Type=uint), ]) - yearDayIndex: 'uint' = 0 - userIndex: 'uint' = 0 + yearDayIndex: uint = 0 + userIndex: uint = 0 @dataclass class GetYearDayScheduleResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x0000000F is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28609,18 +28610,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="localEndTime", Tag=4, Type=typing.Optional[uint]), ]) - yearDayIndex: 'uint' = 0 - userIndex: 'uint' = 0 - status: 'DoorLock.Enums.DlStatus' = 0 - localStartTime: 'typing.Optional[uint]' = None - localEndTime: 'typing.Optional[uint]' = None + yearDayIndex: uint = 0 + userIndex: uint = 0 + status: DoorLock.Enums.DlStatus = 0 + localStartTime: typing.Optional[uint] = None + localEndTime: typing.Optional[uint] = None @dataclass class ClearYearDaySchedule(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000010 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28630,15 +28631,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="userIndex", Tag=1, Type=uint), ]) - yearDayIndex: 'uint' = 0 - userIndex: 'uint' = 0 + yearDayIndex: uint = 0 + userIndex: uint = 0 @dataclass class SetHolidaySchedule(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000011 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28650,10 +28651,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="operatingMode", Tag=3, Type=DoorLock.Enums.OperatingModeEnum), ]) - holidayIndex: 'uint' = 0 - localStartTime: 'uint' = 0 - localEndTime: 'uint' = 0 - operatingMode: 'DoorLock.Enums.OperatingModeEnum' = 0 + holidayIndex: uint = 0 + localStartTime: uint = 0 + localEndTime: uint = 0 + operatingMode: DoorLock.Enums.OperatingModeEnum = 0 @dataclass class GetHolidaySchedule(ClusterCommand): @@ -28669,14 +28670,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="holidayIndex", Tag=0, Type=uint), ]) - holidayIndex: 'uint' = 0 + holidayIndex: uint = 0 @dataclass class GetHolidayScheduleResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000012 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28689,18 +28690,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="operatingMode", Tag=4, Type=typing.Optional[DoorLock.Enums.OperatingModeEnum]), ]) - holidayIndex: 'uint' = 0 - status: 'DoorLock.Enums.DlStatus' = 0 - localStartTime: 'typing.Optional[uint]' = None - localEndTime: 'typing.Optional[uint]' = None - operatingMode: 'typing.Optional[DoorLock.Enums.OperatingModeEnum]' = None + holidayIndex: uint = 0 + status: DoorLock.Enums.DlStatus = 0 + localStartTime: typing.Optional[uint] = None + localEndTime: typing.Optional[uint] = None + operatingMode: typing.Optional[DoorLock.Enums.OperatingModeEnum] = None @dataclass class ClearHolidaySchedule(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000013 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28709,14 +28710,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="holidayIndex", Tag=0, Type=uint), ]) - holidayIndex: 'uint' = 0 + holidayIndex: uint = 0 @dataclass class SetUser(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x0000001A is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28735,13 +28736,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - operationType: 'DoorLock.Enums.DataOperationTypeEnum' = 0 - userIndex: 'uint' = 0 - userName: 'typing.Union[Nullable, str]' = NullValue - userUniqueID: 'typing.Union[Nullable, uint]' = NullValue - userStatus: 'typing.Union[Nullable, DoorLock.Enums.UserStatusEnum]' = NullValue - userType: 'typing.Union[Nullable, DoorLock.Enums.UserTypeEnum]' = NullValue - credentialRule: 'typing.Union[Nullable, DoorLock.Enums.CredentialRuleEnum]' = NullValue + operationType: DoorLock.Enums.DataOperationTypeEnum = 0 + userIndex: uint = 0 + userName: typing.Union[Nullable, str] = NullValue + userUniqueID: typing.Union[Nullable, uint] = NullValue + userStatus: typing.Union[Nullable, DoorLock.Enums.UserStatusEnum] = NullValue + userType: typing.Union[Nullable, DoorLock.Enums.UserTypeEnum] = NullValue + credentialRule: typing.Union[Nullable, DoorLock.Enums.CredentialRuleEnum] = NullValue @dataclass class GetUser(ClusterCommand): @@ -28757,14 +28758,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="userIndex", Tag=0, Type=uint), ]) - userIndex: 'uint' = 0 + userIndex: uint = 0 @dataclass class GetUserResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x0000001C is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28782,23 +28783,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="nextUserIndex", Tag=9, Type=typing.Union[Nullable, uint]), ]) - userIndex: 'uint' = 0 - userName: 'typing.Union[Nullable, str]' = NullValue - userUniqueID: 'typing.Union[Nullable, uint]' = NullValue - userStatus: 'typing.Union[Nullable, DoorLock.Enums.UserStatusEnum]' = NullValue - userType: 'typing.Union[Nullable, DoorLock.Enums.UserTypeEnum]' = NullValue - credentialRule: 'typing.Union[Nullable, DoorLock.Enums.CredentialRuleEnum]' = NullValue - credentials: 'typing.Union[Nullable, typing.List[DoorLock.Structs.CredentialStruct]]' = NullValue - creatorFabricIndex: 'typing.Union[Nullable, uint]' = NullValue - lastModifiedFabricIndex: 'typing.Union[Nullable, uint]' = NullValue - nextUserIndex: 'typing.Union[Nullable, uint]' = NullValue + userIndex: uint = 0 + userName: typing.Union[Nullable, str] = NullValue + userUniqueID: typing.Union[Nullable, uint] = NullValue + userStatus: typing.Union[Nullable, DoorLock.Enums.UserStatusEnum] = NullValue + userType: typing.Union[Nullable, DoorLock.Enums.UserTypeEnum] = NullValue + credentialRule: typing.Union[Nullable, DoorLock.Enums.CredentialRuleEnum] = NullValue + credentials: typing.Union[Nullable, typing.List[DoorLock.Structs.CredentialStruct]] = NullValue + creatorFabricIndex: typing.Union[Nullable, uint] = NullValue + lastModifiedFabricIndex: typing.Union[Nullable, uint] = NullValue + nextUserIndex: typing.Union[Nullable, uint] = NullValue @dataclass class ClearUser(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x0000001D is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28811,7 +28812,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - userIndex: 'uint' = 0 + userIndex: uint = 0 @dataclass class SetCredential(ClusterCommand): @@ -28836,19 +28837,19 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - operationType: 'DoorLock.Enums.DataOperationTypeEnum' = 0 - credential: 'DoorLock.Structs.CredentialStruct' = field(default_factory=lambda: DoorLock.Structs.CredentialStruct()) - credentialData: 'bytes' = b"" - userIndex: 'typing.Union[Nullable, uint]' = NullValue - userStatus: 'typing.Union[Nullable, DoorLock.Enums.UserStatusEnum]' = NullValue - userType: 'typing.Union[Nullable, DoorLock.Enums.UserTypeEnum]' = NullValue + operationType: DoorLock.Enums.DataOperationTypeEnum = 0 + credential: DoorLock.Structs.CredentialStruct = field(default_factory=lambda: DoorLock.Structs.CredentialStruct()) + credentialData: bytes = b"" + userIndex: typing.Union[Nullable, uint] = NullValue + userStatus: typing.Union[Nullable, DoorLock.Enums.UserStatusEnum] = NullValue + userType: typing.Union[Nullable, DoorLock.Enums.UserTypeEnum] = NullValue @dataclass class SetCredentialResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000023 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28859,9 +28860,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="nextCredentialIndex", Tag=2, Type=typing.Union[Nullable, uint]), ]) - status: 'DoorLock.Enums.DlStatus' = 0 - userIndex: 'typing.Union[Nullable, uint]' = NullValue - nextCredentialIndex: 'typing.Union[Nullable, uint]' = NullValue + status: DoorLock.Enums.DlStatus = 0 + userIndex: typing.Union[Nullable, uint] = NullValue + nextCredentialIndex: typing.Union[Nullable, uint] = NullValue @dataclass class GetCredentialStatus(ClusterCommand): @@ -28877,14 +28878,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="credential", Tag=0, Type=DoorLock.Structs.CredentialStruct), ]) - credential: 'DoorLock.Structs.CredentialStruct' = field(default_factory=lambda: DoorLock.Structs.CredentialStruct()) + credential: DoorLock.Structs.CredentialStruct = field(default_factory=lambda: DoorLock.Structs.CredentialStruct()) @dataclass class GetCredentialStatusResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000025 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28898,19 +28899,19 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="credentialData", Tag=5, Type=typing.Union[None, Nullable, bytes]), ]) - credentialExists: 'bool' = False - userIndex: 'typing.Union[Nullable, uint]' = NullValue - creatorFabricIndex: 'typing.Union[Nullable, uint]' = NullValue - lastModifiedFabricIndex: 'typing.Union[Nullable, uint]' = NullValue - nextCredentialIndex: 'typing.Union[Nullable, uint]' = NullValue - credentialData: 'typing.Union[None, Nullable, bytes]' = None + credentialExists: bool = False + userIndex: typing.Union[Nullable, uint] = NullValue + creatorFabricIndex: typing.Union[Nullable, uint] = NullValue + lastModifiedFabricIndex: typing.Union[Nullable, uint] = NullValue + nextCredentialIndex: typing.Union[Nullable, uint] = NullValue + credentialData: typing.Union[None, Nullable, bytes] = None @dataclass class ClearCredential(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000026 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28923,14 +28924,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - credential: 'typing.Union[Nullable, DoorLock.Structs.CredentialStruct]' = NullValue + credential: typing.Union[Nullable, DoorLock.Structs.CredentialStruct] = NullValue @dataclass class UnboltDoor(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000027 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28943,14 +28944,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - PINCode: 'typing.Optional[bytes]' = None + PINCode: typing.Optional[bytes] = None @dataclass class SetAliroReaderConfig(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000028 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -28966,17 +28967,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - signingKey: 'bytes' = b"" - verificationKey: 'bytes' = b"" - groupIdentifier: 'bytes' = b"" - groupResolvingKey: 'typing.Optional[bytes]' = None + signingKey: bytes = b"" + verificationKey: bytes = b"" + groupIdentifier: bytes = b"" + groupResolvingKey: typing.Optional[bytes] = None @dataclass class ClearAliroReaderConfig(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000101 command_id: typing.ClassVar[int] = 0x00000029 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -29003,7 +29004,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, DoorLock.Enums.DlLockState]) - value: 'typing.Union[Nullable, DoorLock.Enums.DlLockState]' = NullValue + value: typing.Union[Nullable, DoorLock.Enums.DlLockState] = NullValue @dataclass class LockType(ClusterAttributeDescriptor): @@ -29019,7 +29020,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=DoorLock.Enums.DlLockType) - value: 'DoorLock.Enums.DlLockType' = 0 + value: DoorLock.Enums.DlLockType = 0 @dataclass class ActuatorEnabled(ClusterAttributeDescriptor): @@ -29035,7 +29036,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class DoorState(ClusterAttributeDescriptor): @@ -29051,7 +29052,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, DoorLock.Enums.DoorStateEnum]) - value: 'typing.Union[None, Nullable, DoorLock.Enums.DoorStateEnum]' = None + value: typing.Union[None, Nullable, DoorLock.Enums.DoorStateEnum] = None @dataclass class DoorOpenEvents(ClusterAttributeDescriptor): @@ -29067,7 +29068,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class DoorClosedEvents(ClusterAttributeDescriptor): @@ -29083,7 +29084,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class OpenPeriod(ClusterAttributeDescriptor): @@ -29099,7 +29100,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfTotalUsersSupported(ClusterAttributeDescriptor): @@ -29115,7 +29116,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfPINUsersSupported(ClusterAttributeDescriptor): @@ -29131,7 +29132,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfRFIDUsersSupported(ClusterAttributeDescriptor): @@ -29147,7 +29148,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfWeekDaySchedulesSupportedPerUser(ClusterAttributeDescriptor): @@ -29163,7 +29164,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfYearDaySchedulesSupportedPerUser(ClusterAttributeDescriptor): @@ -29179,7 +29180,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfHolidaySchedulesSupported(ClusterAttributeDescriptor): @@ -29195,7 +29196,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MaxPINCodeLength(ClusterAttributeDescriptor): @@ -29211,7 +29212,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MinPINCodeLength(ClusterAttributeDescriptor): @@ -29227,7 +29228,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MaxRFIDCodeLength(ClusterAttributeDescriptor): @@ -29243,7 +29244,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MinRFIDCodeLength(ClusterAttributeDescriptor): @@ -29259,7 +29260,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CredentialRulesSupport(ClusterAttributeDescriptor): @@ -29275,7 +29276,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfCredentialsSupportedPerUser(ClusterAttributeDescriptor): @@ -29291,7 +29292,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Language(ClusterAttributeDescriptor): @@ -29307,7 +29308,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class LEDSettings(ClusterAttributeDescriptor): @@ -29323,7 +29324,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AutoRelockTime(ClusterAttributeDescriptor): @@ -29339,7 +29340,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SoundVolume(ClusterAttributeDescriptor): @@ -29355,7 +29356,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class OperatingMode(ClusterAttributeDescriptor): @@ -29371,7 +29372,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=DoorLock.Enums.OperatingModeEnum) - value: 'DoorLock.Enums.OperatingModeEnum' = 0 + value: DoorLock.Enums.OperatingModeEnum = 0 @dataclass class SupportedOperatingModes(ClusterAttributeDescriptor): @@ -29387,7 +29388,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class DefaultConfigurationRegister(ClusterAttributeDescriptor): @@ -29403,7 +29404,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class EnableLocalProgramming(ClusterAttributeDescriptor): @@ -29419,7 +29420,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class EnableOneTouchLocking(ClusterAttributeDescriptor): @@ -29435,7 +29436,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class EnableInsideStatusLED(ClusterAttributeDescriptor): @@ -29451,7 +29452,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class EnablePrivacyModeButton(ClusterAttributeDescriptor): @@ -29467,7 +29468,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class LocalProgrammingFeatures(ClusterAttributeDescriptor): @@ -29483,7 +29484,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class WrongCodeEntryLimit(ClusterAttributeDescriptor): @@ -29499,7 +29500,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class UserCodeTemporaryDisableTime(ClusterAttributeDescriptor): @@ -29515,7 +29516,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SendPINOverTheAir(ClusterAttributeDescriptor): @@ -29531,7 +29532,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class RequirePINforRemoteOperation(ClusterAttributeDescriptor): @@ -29547,7 +29548,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class ExpiringUserTimeout(ClusterAttributeDescriptor): @@ -29563,7 +29564,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AliroReaderVerificationKey(ClusterAttributeDescriptor): @@ -29579,7 +29580,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, bytes]) - value: 'typing.Union[None, Nullable, bytes]' = None + value: typing.Union[None, Nullable, bytes] = None @dataclass class AliroReaderGroupIdentifier(ClusterAttributeDescriptor): @@ -29595,7 +29596,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, bytes]) - value: 'typing.Union[None, Nullable, bytes]' = None + value: typing.Union[None, Nullable, bytes] = None @dataclass class AliroReaderGroupSubIdentifier(ClusterAttributeDescriptor): @@ -29611,7 +29612,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bytes]) - value: 'typing.Optional[bytes]' = None + value: typing.Optional[bytes] = None @dataclass class AliroExpeditedTransactionSupportedProtocolVersions(ClusterAttributeDescriptor): @@ -29627,7 +29628,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[bytes]]) - value: 'typing.Optional[typing.List[bytes]]' = None + value: typing.Optional[typing.List[bytes]] = None @dataclass class AliroGroupResolvingKey(ClusterAttributeDescriptor): @@ -29643,7 +29644,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, bytes]) - value: 'typing.Union[None, Nullable, bytes]' = None + value: typing.Union[None, Nullable, bytes] = None @dataclass class AliroSupportedBLEUWBProtocolVersions(ClusterAttributeDescriptor): @@ -29659,7 +29660,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[bytes]]) - value: 'typing.Optional[typing.List[bytes]]' = None + value: typing.Optional[typing.List[bytes]] = None @dataclass class AliroBLEAdvertisingVersion(ClusterAttributeDescriptor): @@ -29675,7 +29676,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfAliroCredentialIssuerKeysSupported(ClusterAttributeDescriptor): @@ -29691,7 +29692,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfAliroEndpointKeysSupported(ClusterAttributeDescriptor): @@ -29707,7 +29708,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -29723,7 +29724,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -29739,7 +29740,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -29755,7 +29756,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -29771,7 +29772,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -29787,7 +29788,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -29803,7 +29804,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -29823,7 +29824,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="alarmCode", Tag=0, Type=DoorLock.Enums.AlarmCodeEnum), ]) - alarmCode: 'DoorLock.Enums.AlarmCodeEnum' = 0 + alarmCode: DoorLock.Enums.AlarmCodeEnum = 0 @dataclass class DoorStateChange(ClusterEvent): @@ -29842,7 +29843,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="doorState", Tag=0, Type=DoorLock.Enums.DoorStateEnum), ]) - doorState: 'DoorLock.Enums.DoorStateEnum' = 0 + doorState: DoorLock.Enums.DoorStateEnum = 0 @dataclass class LockOperation(ClusterEvent): @@ -29866,12 +29867,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="credentials", Tag=5, Type=typing.Union[None, Nullable, typing.List[DoorLock.Structs.CredentialStruct]]), ]) - lockOperationType: 'DoorLock.Enums.LockOperationTypeEnum' = 0 - operationSource: 'DoorLock.Enums.OperationSourceEnum' = 0 - userIndex: 'typing.Union[Nullable, uint]' = NullValue - fabricIndex: 'typing.Union[Nullable, uint]' = NullValue - sourceNode: 'typing.Union[Nullable, uint]' = NullValue - credentials: 'typing.Union[None, Nullable, typing.List[DoorLock.Structs.CredentialStruct]]' = None + lockOperationType: DoorLock.Enums.LockOperationTypeEnum = 0 + operationSource: DoorLock.Enums.OperationSourceEnum = 0 + userIndex: typing.Union[Nullable, uint] = NullValue + fabricIndex: typing.Union[Nullable, uint] = NullValue + sourceNode: typing.Union[Nullable, uint] = NullValue + credentials: typing.Union[None, Nullable, typing.List[DoorLock.Structs.CredentialStruct]] = None @dataclass class LockOperationError(ClusterEvent): @@ -29896,13 +29897,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="credentials", Tag=6, Type=typing.Union[None, Nullable, typing.List[DoorLock.Structs.CredentialStruct]]), ]) - lockOperationType: 'DoorLock.Enums.LockOperationTypeEnum' = 0 - operationSource: 'DoorLock.Enums.OperationSourceEnum' = 0 - operationError: 'DoorLock.Enums.OperationErrorEnum' = 0 - userIndex: 'typing.Union[Nullable, uint]' = NullValue - fabricIndex: 'typing.Union[Nullable, uint]' = NullValue - sourceNode: 'typing.Union[Nullable, uint]' = NullValue - credentials: 'typing.Union[None, Nullable, typing.List[DoorLock.Structs.CredentialStruct]]' = None + lockOperationType: DoorLock.Enums.LockOperationTypeEnum = 0 + operationSource: DoorLock.Enums.OperationSourceEnum = 0 + operationError: DoorLock.Enums.OperationErrorEnum = 0 + userIndex: typing.Union[Nullable, uint] = NullValue + fabricIndex: typing.Union[Nullable, uint] = NullValue + sourceNode: typing.Union[Nullable, uint] = NullValue + credentials: typing.Union[None, Nullable, typing.List[DoorLock.Structs.CredentialStruct]] = None @dataclass class LockUserChange(ClusterEvent): @@ -29927,13 +29928,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="dataIndex", Tag=6, Type=typing.Union[Nullable, uint]), ]) - lockDataType: 'DoorLock.Enums.LockDataTypeEnum' = 0 - dataOperationType: 'DoorLock.Enums.DataOperationTypeEnum' = 0 - operationSource: 'DoorLock.Enums.OperationSourceEnum' = 0 - userIndex: 'typing.Union[Nullable, uint]' = NullValue - fabricIndex: 'typing.Union[Nullable, uint]' = NullValue - sourceNode: 'typing.Union[Nullable, uint]' = NullValue - dataIndex: 'typing.Union[Nullable, uint]' = NullValue + lockDataType: DoorLock.Enums.LockDataTypeEnum = 0 + dataOperationType: DoorLock.Enums.DataOperationTypeEnum = 0 + operationSource: DoorLock.Enums.OperationSourceEnum = 0 + userIndex: typing.Union[Nullable, uint] = NullValue + fabricIndex: typing.Union[Nullable, uint] = NullValue + sourceNode: typing.Union[Nullable, uint] = NullValue + dataIndex: typing.Union[Nullable, uint] = NullValue @dataclass @@ -29974,34 +29975,34 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - type: 'WindowCovering.Enums.Type' = None - physicalClosedLimitLift: 'typing.Optional[uint]' = None - physicalClosedLimitTilt: 'typing.Optional[uint]' = None - currentPositionLift: 'typing.Union[None, Nullable, uint]' = None - currentPositionTilt: 'typing.Union[None, Nullable, uint]' = None - numberOfActuationsLift: 'typing.Optional[uint]' = None - numberOfActuationsTilt: 'typing.Optional[uint]' = None - configStatus: 'uint' = None - currentPositionLiftPercentage: 'typing.Union[None, Nullable, uint]' = None - currentPositionTiltPercentage: 'typing.Union[None, Nullable, uint]' = None - operationalStatus: 'uint' = None - targetPositionLiftPercent100ths: 'typing.Union[None, Nullable, uint]' = None - targetPositionTiltPercent100ths: 'typing.Union[None, Nullable, uint]' = None - endProductType: 'WindowCovering.Enums.EndProductType' = None - currentPositionLiftPercent100ths: 'typing.Union[None, Nullable, uint]' = None - currentPositionTiltPercent100ths: 'typing.Union[None, Nullable, uint]' = None - installedOpenLimitLift: 'typing.Optional[uint]' = None - installedClosedLimitLift: 'typing.Optional[uint]' = None - installedOpenLimitTilt: 'typing.Optional[uint]' = None - installedClosedLimitTilt: 'typing.Optional[uint]' = None - mode: 'uint' = None - safetyStatus: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + type: WindowCovering.Enums.Type = 0 + physicalClosedLimitLift: typing.Optional[uint] = None + physicalClosedLimitTilt: typing.Optional[uint] = None + currentPositionLift: typing.Union[None, Nullable, uint] = None + currentPositionTilt: typing.Union[None, Nullable, uint] = None + numberOfActuationsLift: typing.Optional[uint] = None + numberOfActuationsTilt: typing.Optional[uint] = None + configStatus: uint = 0 + currentPositionLiftPercentage: typing.Union[None, Nullable, uint] = None + currentPositionTiltPercentage: typing.Union[None, Nullable, uint] = None + operationalStatus: uint = 0 + targetPositionLiftPercent100ths: typing.Union[None, Nullable, uint] = None + targetPositionTiltPercent100ths: typing.Union[None, Nullable, uint] = None + endProductType: WindowCovering.Enums.EndProductType = 0 + currentPositionLiftPercent100ths: typing.Union[None, Nullable, uint] = None + currentPositionTiltPercent100ths: typing.Union[None, Nullable, uint] = None + installedOpenLimitLift: typing.Optional[uint] = None + installedClosedLimitLift: typing.Optional[uint] = None + installedOpenLimitTilt: typing.Optional[uint] = None + installedClosedLimitTilt: typing.Optional[uint] = None + mode: uint = 0 + safetyStatus: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class EndProductType(MatterIntEnum): @@ -30102,7 +30103,7 @@ class UpOrOpen(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000102 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -30115,7 +30116,7 @@ class DownOrClose(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000102 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -30128,7 +30129,7 @@ class StopMotion(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000102 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -30141,7 +30142,7 @@ class GoToLiftValue(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000102 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -30150,14 +30151,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="liftValue", Tag=0, Type=uint), ]) - liftValue: 'uint' = 0 + liftValue: uint = 0 @dataclass class GoToLiftPercentage(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000102 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -30166,14 +30167,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="liftPercent100thsValue", Tag=0, Type=uint), ]) - liftPercent100thsValue: 'uint' = 0 + liftPercent100thsValue: uint = 0 @dataclass class GoToTiltValue(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000102 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -30182,14 +30183,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="tiltValue", Tag=0, Type=uint), ]) - tiltValue: 'uint' = 0 + tiltValue: uint = 0 @dataclass class GoToTiltPercentage(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000102 command_id: typing.ClassVar[int] = 0x00000008 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -30198,7 +30199,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="tiltPercent100thsValue", Tag=0, Type=uint), ]) - tiltPercent100thsValue: 'uint' = 0 + tiltPercent100thsValue: uint = 0 class Attributes: @dataclass @@ -30215,7 +30216,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=WindowCovering.Enums.Type) - value: 'WindowCovering.Enums.Type' = 0 + value: WindowCovering.Enums.Type = 0 @dataclass class PhysicalClosedLimitLift(ClusterAttributeDescriptor): @@ -30231,7 +30232,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PhysicalClosedLimitTilt(ClusterAttributeDescriptor): @@ -30247,7 +30248,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CurrentPositionLift(ClusterAttributeDescriptor): @@ -30263,7 +30264,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class CurrentPositionTilt(ClusterAttributeDescriptor): @@ -30279,7 +30280,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class NumberOfActuationsLift(ClusterAttributeDescriptor): @@ -30295,7 +30296,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfActuationsTilt(ClusterAttributeDescriptor): @@ -30311,7 +30312,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ConfigStatus(ClusterAttributeDescriptor): @@ -30327,7 +30328,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class CurrentPositionLiftPercentage(ClusterAttributeDescriptor): @@ -30343,7 +30344,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class CurrentPositionTiltPercentage(ClusterAttributeDescriptor): @@ -30359,7 +30360,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OperationalStatus(ClusterAttributeDescriptor): @@ -30375,7 +30376,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class TargetPositionLiftPercent100ths(ClusterAttributeDescriptor): @@ -30391,7 +30392,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class TargetPositionTiltPercent100ths(ClusterAttributeDescriptor): @@ -30407,7 +30408,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class EndProductType(ClusterAttributeDescriptor): @@ -30423,7 +30424,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=WindowCovering.Enums.EndProductType) - value: 'WindowCovering.Enums.EndProductType' = 0 + value: WindowCovering.Enums.EndProductType = 0 @dataclass class CurrentPositionLiftPercent100ths(ClusterAttributeDescriptor): @@ -30439,7 +30440,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class CurrentPositionTiltPercent100ths(ClusterAttributeDescriptor): @@ -30455,7 +30456,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class InstalledOpenLimitLift(ClusterAttributeDescriptor): @@ -30471,7 +30472,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class InstalledClosedLimitLift(ClusterAttributeDescriptor): @@ -30487,7 +30488,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class InstalledOpenLimitTilt(ClusterAttributeDescriptor): @@ -30503,7 +30504,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class InstalledClosedLimitTilt(ClusterAttributeDescriptor): @@ -30519,7 +30520,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Mode(ClusterAttributeDescriptor): @@ -30535,7 +30536,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class SafetyStatus(ClusterAttributeDescriptor): @@ -30551,7 +30552,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -30567,7 +30568,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -30583,7 +30584,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -30599,7 +30600,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -30615,7 +30616,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -30631,7 +30632,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -30647,7 +30648,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -30672,18 +30673,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedAreas: 'typing.List[ServiceArea.Structs.AreaStruct]' = None - supportedMaps: 'typing.Optional[typing.List[ServiceArea.Structs.MapStruct]]' = None - selectedAreas: 'typing.List[uint]' = None - currentArea: 'typing.Union[None, Nullable, uint]' = None - estimatedEndTime: 'typing.Union[None, Nullable, uint]' = None - progress: 'typing.Optional[typing.List[ServiceArea.Structs.ProgressStruct]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedAreas: typing.List[ServiceArea.Structs.AreaStruct] = field(default_factory=lambda: []) + supportedMaps: typing.Optional[typing.List[ServiceArea.Structs.MapStruct]] = None + selectedAreas: typing.List[uint] = field(default_factory=lambda: []) + currentArea: typing.Union[None, Nullable, uint] = None + estimatedEndTime: typing.Union[None, Nullable, uint] = None + progress: typing.Optional[typing.List[ServiceArea.Structs.ProgressStruct]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class OperationalStatusEnum(MatterIntEnum): @@ -30812,14 +30813,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newAreas", Tag=0, Type=typing.List[uint]), ]) - newAreas: 'typing.List[uint]' = field(default_factory=lambda: []) + newAreas: typing.List[uint] = field(default_factory=lambda: []) @dataclass class SelectAreasResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000150 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -30829,8 +30830,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=str), ]) - status: 'ServiceArea.Enums.SelectAreasStatus' = 0 - statusText: 'str' = "" + status: ServiceArea.Enums.SelectAreasStatus = 0 + statusText: str = "" @dataclass class SkipArea(ClusterCommand): @@ -30846,14 +30847,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="skippedArea", Tag=0, Type=uint), ]) - skippedArea: 'uint' = 0 + skippedArea: uint = 0 @dataclass class SkipAreaResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000150 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -30863,8 +30864,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="statusText", Tag=1, Type=str), ]) - status: 'ServiceArea.Enums.SkipAreaStatus' = 0 - statusText: 'str' = "" + status: ServiceArea.Enums.SkipAreaStatus = 0 + statusText: str = "" class Attributes: @dataclass @@ -30881,7 +30882,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ServiceArea.Structs.AreaStruct]) - value: 'typing.List[ServiceArea.Structs.AreaStruct]' = field(default_factory=lambda: []) + value: typing.List[ServiceArea.Structs.AreaStruct] = field(default_factory=lambda: []) @dataclass class SupportedMaps(ClusterAttributeDescriptor): @@ -30897,7 +30898,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[ServiceArea.Structs.MapStruct]]) - value: 'typing.Optional[typing.List[ServiceArea.Structs.MapStruct]]' = None + value: typing.Optional[typing.List[ServiceArea.Structs.MapStruct]] = None @dataclass class SelectedAreas(ClusterAttributeDescriptor): @@ -30913,7 +30914,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class CurrentArea(ClusterAttributeDescriptor): @@ -30929,7 +30930,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class EstimatedEndTime(ClusterAttributeDescriptor): @@ -30945,7 +30946,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class Progress(ClusterAttributeDescriptor): @@ -30961,7 +30962,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[ServiceArea.Structs.ProgressStruct]]) - value: 'typing.Optional[typing.List[ServiceArea.Structs.ProgressStruct]]' = None + value: typing.Optional[typing.List[ServiceArea.Structs.ProgressStruct]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -30977,7 +30978,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -30993,7 +30994,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -31009,7 +31010,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -31025,7 +31026,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -31041,7 +31042,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -31057,7 +31058,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -31099,35 +31100,35 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - maxPressure: 'typing.Union[Nullable, int]' = None - maxSpeed: 'typing.Union[Nullable, uint]' = None - maxFlow: 'typing.Union[Nullable, uint]' = None - minConstPressure: 'typing.Union[None, Nullable, int]' = None - maxConstPressure: 'typing.Union[None, Nullable, int]' = None - minCompPressure: 'typing.Union[None, Nullable, int]' = None - maxCompPressure: 'typing.Union[None, Nullable, int]' = None - minConstSpeed: 'typing.Union[None, Nullable, uint]' = None - maxConstSpeed: 'typing.Union[None, Nullable, uint]' = None - minConstFlow: 'typing.Union[None, Nullable, uint]' = None - maxConstFlow: 'typing.Union[None, Nullable, uint]' = None - minConstTemp: 'typing.Union[None, Nullable, int]' = None - maxConstTemp: 'typing.Union[None, Nullable, int]' = None - pumpStatus: 'typing.Optional[uint]' = None - effectiveOperationMode: 'PumpConfigurationAndControl.Enums.OperationModeEnum' = None - effectiveControlMode: 'PumpConfigurationAndControl.Enums.ControlModeEnum' = None - capacity: 'typing.Union[Nullable, int]' = None - speed: 'typing.Union[None, Nullable, uint]' = None - lifetimeRunningHours: 'typing.Union[None, Nullable, uint]' = None - power: 'typing.Union[None, Nullable, uint]' = None - lifetimeEnergyConsumed: 'typing.Union[None, Nullable, uint]' = None - operationMode: 'PumpConfigurationAndControl.Enums.OperationModeEnum' = None - controlMode: 'typing.Optional[PumpConfigurationAndControl.Enums.ControlModeEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + maxPressure: typing.Union[Nullable, int] = NullValue + maxSpeed: typing.Union[Nullable, uint] = NullValue + maxFlow: typing.Union[Nullable, uint] = NullValue + minConstPressure: typing.Union[None, Nullable, int] = None + maxConstPressure: typing.Union[None, Nullable, int] = None + minCompPressure: typing.Union[None, Nullable, int] = None + maxCompPressure: typing.Union[None, Nullable, int] = None + minConstSpeed: typing.Union[None, Nullable, uint] = None + maxConstSpeed: typing.Union[None, Nullable, uint] = None + minConstFlow: typing.Union[None, Nullable, uint] = None + maxConstFlow: typing.Union[None, Nullable, uint] = None + minConstTemp: typing.Union[None, Nullable, int] = None + maxConstTemp: typing.Union[None, Nullable, int] = None + pumpStatus: typing.Optional[uint] = None + effectiveOperationMode: PumpConfigurationAndControl.Enums.OperationModeEnum = 0 + effectiveControlMode: PumpConfigurationAndControl.Enums.ControlModeEnum = 0 + capacity: typing.Union[Nullable, int] = NullValue + speed: typing.Union[None, Nullable, uint] = None + lifetimeRunningHours: typing.Union[None, Nullable, uint] = None + power: typing.Union[None, Nullable, uint] = None + lifetimeEnergyConsumed: typing.Union[None, Nullable, uint] = None + operationMode: PumpConfigurationAndControl.Enums.OperationModeEnum = 0 + controlMode: typing.Optional[PumpConfigurationAndControl.Enums.ControlModeEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ControlModeEnum(MatterIntEnum): @@ -31190,7 +31191,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class MaxSpeed(ClusterAttributeDescriptor): @@ -31206,7 +31207,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class MaxFlow(ClusterAttributeDescriptor): @@ -31222,7 +31223,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class MinConstPressure(ClusterAttributeDescriptor): @@ -31238,7 +31239,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class MaxConstPressure(ClusterAttributeDescriptor): @@ -31254,7 +31255,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class MinCompPressure(ClusterAttributeDescriptor): @@ -31270,7 +31271,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class MaxCompPressure(ClusterAttributeDescriptor): @@ -31286,7 +31287,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class MinConstSpeed(ClusterAttributeDescriptor): @@ -31302,7 +31303,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class MaxConstSpeed(ClusterAttributeDescriptor): @@ -31318,7 +31319,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class MinConstFlow(ClusterAttributeDescriptor): @@ -31334,7 +31335,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class MaxConstFlow(ClusterAttributeDescriptor): @@ -31350,7 +31351,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class MinConstTemp(ClusterAttributeDescriptor): @@ -31366,7 +31367,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class MaxConstTemp(ClusterAttributeDescriptor): @@ -31382,7 +31383,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class PumpStatus(ClusterAttributeDescriptor): @@ -31398,7 +31399,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class EffectiveOperationMode(ClusterAttributeDescriptor): @@ -31414,7 +31415,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=PumpConfigurationAndControl.Enums.OperationModeEnum) - value: 'PumpConfigurationAndControl.Enums.OperationModeEnum' = 0 + value: PumpConfigurationAndControl.Enums.OperationModeEnum = 0 @dataclass class EffectiveControlMode(ClusterAttributeDescriptor): @@ -31430,7 +31431,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=PumpConfigurationAndControl.Enums.ControlModeEnum) - value: 'PumpConfigurationAndControl.Enums.ControlModeEnum' = 0 + value: PumpConfigurationAndControl.Enums.ControlModeEnum = 0 @dataclass class Capacity(ClusterAttributeDescriptor): @@ -31446,7 +31447,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class Speed(ClusterAttributeDescriptor): @@ -31462,7 +31463,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class LifetimeRunningHours(ClusterAttributeDescriptor): @@ -31478,7 +31479,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class Power(ClusterAttributeDescriptor): @@ -31494,7 +31495,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class LifetimeEnergyConsumed(ClusterAttributeDescriptor): @@ -31510,7 +31511,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OperationMode(ClusterAttributeDescriptor): @@ -31526,7 +31527,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=PumpConfigurationAndControl.Enums.OperationModeEnum) - value: 'PumpConfigurationAndControl.Enums.OperationModeEnum' = 0 + value: PumpConfigurationAndControl.Enums.OperationModeEnum = 0 @dataclass class ControlMode(ClusterAttributeDescriptor): @@ -31542,7 +31543,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[PumpConfigurationAndControl.Enums.ControlModeEnum]) - value: 'typing.Optional[PumpConfigurationAndControl.Enums.ControlModeEnum]' = None + value: typing.Optional[PumpConfigurationAndControl.Enums.ControlModeEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -31558,7 +31559,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -31574,7 +31575,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -31590,7 +31591,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -31606,7 +31607,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -31622,7 +31623,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -31638,7 +31639,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -31990,72 +31991,72 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - localTemperature: 'typing.Union[Nullable, int]' = None - outdoorTemperature: 'typing.Union[None, Nullable, int]' = None - occupancy: 'typing.Optional[uint]' = None - absMinHeatSetpointLimit: 'typing.Optional[int]' = None - absMaxHeatSetpointLimit: 'typing.Optional[int]' = None - absMinCoolSetpointLimit: 'typing.Optional[int]' = None - absMaxCoolSetpointLimit: 'typing.Optional[int]' = None - PICoolingDemand: 'typing.Optional[uint]' = None - PIHeatingDemand: 'typing.Optional[uint]' = None - HVACSystemTypeConfiguration: 'typing.Optional[uint]' = None - localTemperatureCalibration: 'typing.Optional[int]' = None - occupiedCoolingSetpoint: 'typing.Optional[int]' = None - occupiedHeatingSetpoint: 'typing.Optional[int]' = None - unoccupiedCoolingSetpoint: 'typing.Optional[int]' = None - unoccupiedHeatingSetpoint: 'typing.Optional[int]' = None - minHeatSetpointLimit: 'typing.Optional[int]' = None - maxHeatSetpointLimit: 'typing.Optional[int]' = None - minCoolSetpointLimit: 'typing.Optional[int]' = None - maxCoolSetpointLimit: 'typing.Optional[int]' = None - minSetpointDeadBand: 'typing.Optional[int]' = None - remoteSensing: 'typing.Optional[uint]' = None - controlSequenceOfOperation: 'Thermostat.Enums.ControlSequenceOfOperationEnum' = None - systemMode: 'Thermostat.Enums.SystemModeEnum' = None - thermostatRunningMode: 'typing.Optional[Thermostat.Enums.ThermostatRunningModeEnum]' = None - startOfWeek: 'typing.Optional[Thermostat.Enums.StartOfWeekEnum]' = None - numberOfWeeklyTransitions: 'typing.Optional[uint]' = None - numberOfDailyTransitions: 'typing.Optional[uint]' = None - temperatureSetpointHold: 'typing.Optional[Thermostat.Enums.TemperatureSetpointHoldEnum]' = None - temperatureSetpointHoldDuration: 'typing.Union[None, Nullable, uint]' = None - thermostatProgrammingOperationMode: 'typing.Optional[uint]' = None - thermostatRunningState: 'typing.Optional[uint]' = None - setpointChangeSource: 'typing.Optional[Thermostat.Enums.SetpointChangeSourceEnum]' = None - setpointChangeAmount: 'typing.Union[None, Nullable, int]' = None - setpointChangeSourceTimestamp: 'typing.Optional[uint]' = None - occupiedSetback: 'typing.Union[None, Nullable, uint]' = None - occupiedSetbackMin: 'typing.Union[None, Nullable, uint]' = None - occupiedSetbackMax: 'typing.Union[None, Nullable, uint]' = None - unoccupiedSetback: 'typing.Union[None, Nullable, uint]' = None - unoccupiedSetbackMin: 'typing.Union[None, Nullable, uint]' = None - unoccupiedSetbackMax: 'typing.Union[None, Nullable, uint]' = None - emergencyHeatDelta: 'typing.Optional[uint]' = None - ACType: 'typing.Optional[Thermostat.Enums.ACTypeEnum]' = None - ACCapacity: 'typing.Optional[uint]' = None - ACRefrigerantType: 'typing.Optional[Thermostat.Enums.ACRefrigerantTypeEnum]' = None - ACCompressorType: 'typing.Optional[Thermostat.Enums.ACCompressorTypeEnum]' = None - ACErrorCode: 'typing.Optional[uint]' = None - ACLouverPosition: 'typing.Optional[Thermostat.Enums.ACLouverPositionEnum]' = None - ACCoilTemperature: 'typing.Union[None, Nullable, int]' = None - ACCapacityformat: 'typing.Optional[Thermostat.Enums.ACCapacityFormatEnum]' = None - presetTypes: 'typing.Optional[typing.List[Thermostat.Structs.PresetTypeStruct]]' = None - scheduleTypes: 'typing.Optional[typing.List[Thermostat.Structs.ScheduleTypeStruct]]' = None - numberOfPresets: 'typing.Optional[uint]' = None - numberOfSchedules: 'typing.Optional[uint]' = None - numberOfScheduleTransitions: 'typing.Optional[uint]' = None - numberOfScheduleTransitionPerDay: 'typing.Union[None, Nullable, uint]' = None - activePresetHandle: 'typing.Union[None, Nullable, bytes]' = None - activeScheduleHandle: 'typing.Union[None, Nullable, bytes]' = None - presets: 'typing.Optional[typing.List[Thermostat.Structs.PresetStruct]]' = None - schedules: 'typing.Optional[typing.List[Thermostat.Structs.ScheduleStruct]]' = None - setpointHoldExpiryTimestamp: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + localTemperature: typing.Union[Nullable, int] = NullValue + outdoorTemperature: typing.Union[None, Nullable, int] = None + occupancy: typing.Optional[uint] = None + absMinHeatSetpointLimit: typing.Optional[int] = None + absMaxHeatSetpointLimit: typing.Optional[int] = None + absMinCoolSetpointLimit: typing.Optional[int] = None + absMaxCoolSetpointLimit: typing.Optional[int] = None + PICoolingDemand: typing.Optional[uint] = None + PIHeatingDemand: typing.Optional[uint] = None + HVACSystemTypeConfiguration: typing.Optional[uint] = None + localTemperatureCalibration: typing.Optional[int] = None + occupiedCoolingSetpoint: typing.Optional[int] = None + occupiedHeatingSetpoint: typing.Optional[int] = None + unoccupiedCoolingSetpoint: typing.Optional[int] = None + unoccupiedHeatingSetpoint: typing.Optional[int] = None + minHeatSetpointLimit: typing.Optional[int] = None + maxHeatSetpointLimit: typing.Optional[int] = None + minCoolSetpointLimit: typing.Optional[int] = None + maxCoolSetpointLimit: typing.Optional[int] = None + minSetpointDeadBand: typing.Optional[int] = None + remoteSensing: typing.Optional[uint] = None + controlSequenceOfOperation: Thermostat.Enums.ControlSequenceOfOperationEnum = 0 + systemMode: Thermostat.Enums.SystemModeEnum = 0 + thermostatRunningMode: typing.Optional[Thermostat.Enums.ThermostatRunningModeEnum] = None + startOfWeek: typing.Optional[Thermostat.Enums.StartOfWeekEnum] = None + numberOfWeeklyTransitions: typing.Optional[uint] = None + numberOfDailyTransitions: typing.Optional[uint] = None + temperatureSetpointHold: typing.Optional[Thermostat.Enums.TemperatureSetpointHoldEnum] = None + temperatureSetpointHoldDuration: typing.Union[None, Nullable, uint] = None + thermostatProgrammingOperationMode: typing.Optional[uint] = None + thermostatRunningState: typing.Optional[uint] = None + setpointChangeSource: typing.Optional[Thermostat.Enums.SetpointChangeSourceEnum] = None + setpointChangeAmount: typing.Union[None, Nullable, int] = None + setpointChangeSourceTimestamp: typing.Optional[uint] = None + occupiedSetback: typing.Union[None, Nullable, uint] = None + occupiedSetbackMin: typing.Union[None, Nullable, uint] = None + occupiedSetbackMax: typing.Union[None, Nullable, uint] = None + unoccupiedSetback: typing.Union[None, Nullable, uint] = None + unoccupiedSetbackMin: typing.Union[None, Nullable, uint] = None + unoccupiedSetbackMax: typing.Union[None, Nullable, uint] = None + emergencyHeatDelta: typing.Optional[uint] = None + ACType: typing.Optional[Thermostat.Enums.ACTypeEnum] = None + ACCapacity: typing.Optional[uint] = None + ACRefrigerantType: typing.Optional[Thermostat.Enums.ACRefrigerantTypeEnum] = None + ACCompressorType: typing.Optional[Thermostat.Enums.ACCompressorTypeEnum] = None + ACErrorCode: typing.Optional[uint] = None + ACLouverPosition: typing.Optional[Thermostat.Enums.ACLouverPositionEnum] = None + ACCoilTemperature: typing.Union[None, Nullable, int] = None + ACCapacityformat: typing.Optional[Thermostat.Enums.ACCapacityFormatEnum] = None + presetTypes: typing.Optional[typing.List[Thermostat.Structs.PresetTypeStruct]] = None + scheduleTypes: typing.Optional[typing.List[Thermostat.Structs.ScheduleTypeStruct]] = None + numberOfPresets: typing.Optional[uint] = None + numberOfSchedules: typing.Optional[uint] = None + numberOfScheduleTransitions: typing.Optional[uint] = None + numberOfScheduleTransitionPerDay: typing.Union[None, Nullable, uint] = None + activePresetHandle: typing.Union[None, Nullable, bytes] = None + activeScheduleHandle: typing.Union[None, Nullable, bytes] = None + presets: typing.Optional[typing.List[Thermostat.Structs.PresetStruct]] = None + schedules: typing.Optional[typing.List[Thermostat.Structs.ScheduleStruct]] = None + setpointHoldExpiryTimestamp: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ACCapacityFormatEnum(MatterIntEnum): @@ -32394,7 +32395,7 @@ class SetpointRaiseLower(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000201 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -32404,15 +32405,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="amount", Tag=1, Type=int), ]) - mode: 'Thermostat.Enums.SetpointRaiseLowerModeEnum' = 0 - amount: 'int' = 0 + mode: Thermostat.Enums.SetpointRaiseLowerModeEnum = 0 + amount: int = 0 @dataclass class GetWeeklyScheduleResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000201 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -32424,17 +32425,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="transitions", Tag=3, Type=typing.List[Thermostat.Structs.WeeklyScheduleTransitionStruct]), ]) - numberOfTransitionsForSequence: 'uint' = 0 - dayOfWeekForSequence: 'uint' = 0 - modeForSequence: 'uint' = 0 - transitions: 'typing.List[Thermostat.Structs.WeeklyScheduleTransitionStruct]' = field(default_factory=lambda: []) + numberOfTransitionsForSequence: uint = 0 + dayOfWeekForSequence: uint = 0 + modeForSequence: uint = 0 + transitions: typing.List[Thermostat.Structs.WeeklyScheduleTransitionStruct] = field(default_factory=lambda: []) @dataclass class SetWeeklySchedule(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000201 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -32446,10 +32447,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="transitions", Tag=3, Type=typing.List[Thermostat.Structs.WeeklyScheduleTransitionStruct]), ]) - numberOfTransitionsForSequence: 'uint' = 0 - dayOfWeekForSequence: 'uint' = 0 - modeForSequence: 'uint' = 0 - transitions: 'typing.List[Thermostat.Structs.WeeklyScheduleTransitionStruct]' = field(default_factory=lambda: []) + numberOfTransitionsForSequence: uint = 0 + dayOfWeekForSequence: uint = 0 + modeForSequence: uint = 0 + transitions: typing.List[Thermostat.Structs.WeeklyScheduleTransitionStruct] = field(default_factory=lambda: []) @dataclass class GetWeeklySchedule(ClusterCommand): @@ -32466,15 +32467,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="modeToReturn", Tag=1, Type=uint), ]) - daysToReturn: 'uint' = 0 - modeToReturn: 'uint' = 0 + daysToReturn: uint = 0 + modeToReturn: uint = 0 @dataclass class ClearWeeklySchedule(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000201 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -32487,7 +32488,7 @@ class SetActiveScheduleRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000201 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -32496,14 +32497,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="scheduleHandle", Tag=0, Type=bytes), ]) - scheduleHandle: 'bytes' = b"" + scheduleHandle: bytes = b"" @dataclass class SetActivePresetRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000201 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -32512,14 +32513,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="presetHandle", Tag=0, Type=typing.Union[Nullable, bytes]), ]) - presetHandle: 'typing.Union[Nullable, bytes]' = NullValue + presetHandle: typing.Union[Nullable, bytes] = NullValue @dataclass class AtomicResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000201 command_id: typing.ClassVar[int] = 0x000000FD is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -32530,9 +32531,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="timeout", Tag=2, Type=typing.Optional[uint]), ]) - statusCode: 'uint' = 0 - attributeStatus: 'typing.List[Globals.Structs.AtomicAttributeStatusStruct]' = field(default_factory=lambda: []) - timeout: 'typing.Optional[uint]' = None + statusCode: uint = 0 + attributeStatus: typing.List[Globals.Structs.AtomicAttributeStatusStruct] = field(default_factory=lambda: []) + timeout: typing.Optional[uint] = None @dataclass class AtomicRequest(ClusterCommand): @@ -32550,9 +32551,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="timeout", Tag=2, Type=typing.Optional[uint]), ]) - requestType: 'Globals.Enums.AtomicRequestTypeEnum' = 0 - attributeRequests: 'typing.List[uint]' = field(default_factory=lambda: []) - timeout: 'typing.Optional[uint]' = None + requestType: Globals.Enums.AtomicRequestTypeEnum = 0 + attributeRequests: typing.List[uint] = field(default_factory=lambda: []) + timeout: typing.Optional[uint] = None class Attributes: @dataclass @@ -32569,7 +32570,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class OutdoorTemperature(ClusterAttributeDescriptor): @@ -32585,7 +32586,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class Occupancy(ClusterAttributeDescriptor): @@ -32601,7 +32602,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AbsMinHeatSetpointLimit(ClusterAttributeDescriptor): @@ -32617,7 +32618,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class AbsMaxHeatSetpointLimit(ClusterAttributeDescriptor): @@ -32633,7 +32634,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class AbsMinCoolSetpointLimit(ClusterAttributeDescriptor): @@ -32649,7 +32650,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class AbsMaxCoolSetpointLimit(ClusterAttributeDescriptor): @@ -32665,7 +32666,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class PICoolingDemand(ClusterAttributeDescriptor): @@ -32681,7 +32682,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PIHeatingDemand(ClusterAttributeDescriptor): @@ -32697,7 +32698,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class HVACSystemTypeConfiguration(ClusterAttributeDescriptor): @@ -32713,7 +32714,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class LocalTemperatureCalibration(ClusterAttributeDescriptor): @@ -32729,7 +32730,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class OccupiedCoolingSetpoint(ClusterAttributeDescriptor): @@ -32745,7 +32746,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class OccupiedHeatingSetpoint(ClusterAttributeDescriptor): @@ -32761,7 +32762,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class UnoccupiedCoolingSetpoint(ClusterAttributeDescriptor): @@ -32777,7 +32778,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class UnoccupiedHeatingSetpoint(ClusterAttributeDescriptor): @@ -32793,7 +32794,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class MinHeatSetpointLimit(ClusterAttributeDescriptor): @@ -32809,7 +32810,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class MaxHeatSetpointLimit(ClusterAttributeDescriptor): @@ -32825,7 +32826,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class MinCoolSetpointLimit(ClusterAttributeDescriptor): @@ -32841,7 +32842,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class MaxCoolSetpointLimit(ClusterAttributeDescriptor): @@ -32857,7 +32858,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class MinSetpointDeadBand(ClusterAttributeDescriptor): @@ -32873,7 +32874,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class RemoteSensing(ClusterAttributeDescriptor): @@ -32889,7 +32890,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ControlSequenceOfOperation(ClusterAttributeDescriptor): @@ -32905,7 +32906,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=Thermostat.Enums.ControlSequenceOfOperationEnum) - value: 'Thermostat.Enums.ControlSequenceOfOperationEnum' = 0 + value: Thermostat.Enums.ControlSequenceOfOperationEnum = 0 @dataclass class SystemMode(ClusterAttributeDescriptor): @@ -32921,7 +32922,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=Thermostat.Enums.SystemModeEnum) - value: 'Thermostat.Enums.SystemModeEnum' = 0 + value: Thermostat.Enums.SystemModeEnum = 0 @dataclass class ThermostatRunningMode(ClusterAttributeDescriptor): @@ -32937,7 +32938,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Thermostat.Enums.ThermostatRunningModeEnum]) - value: 'typing.Optional[Thermostat.Enums.ThermostatRunningModeEnum]' = None + value: typing.Optional[Thermostat.Enums.ThermostatRunningModeEnum] = None @dataclass class StartOfWeek(ClusterAttributeDescriptor): @@ -32953,7 +32954,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Thermostat.Enums.StartOfWeekEnum]) - value: 'typing.Optional[Thermostat.Enums.StartOfWeekEnum]' = None + value: typing.Optional[Thermostat.Enums.StartOfWeekEnum] = None @dataclass class NumberOfWeeklyTransitions(ClusterAttributeDescriptor): @@ -32969,7 +32970,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfDailyTransitions(ClusterAttributeDescriptor): @@ -32985,7 +32986,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class TemperatureSetpointHold(ClusterAttributeDescriptor): @@ -33001,7 +33002,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Thermostat.Enums.TemperatureSetpointHoldEnum]) - value: 'typing.Optional[Thermostat.Enums.TemperatureSetpointHoldEnum]' = None + value: typing.Optional[Thermostat.Enums.TemperatureSetpointHoldEnum] = None @dataclass class TemperatureSetpointHoldDuration(ClusterAttributeDescriptor): @@ -33017,7 +33018,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class ThermostatProgrammingOperationMode(ClusterAttributeDescriptor): @@ -33033,7 +33034,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ThermostatRunningState(ClusterAttributeDescriptor): @@ -33049,7 +33050,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SetpointChangeSource(ClusterAttributeDescriptor): @@ -33065,7 +33066,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Thermostat.Enums.SetpointChangeSourceEnum]) - value: 'typing.Optional[Thermostat.Enums.SetpointChangeSourceEnum]' = None + value: typing.Optional[Thermostat.Enums.SetpointChangeSourceEnum] = None @dataclass class SetpointChangeAmount(ClusterAttributeDescriptor): @@ -33081,7 +33082,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class SetpointChangeSourceTimestamp(ClusterAttributeDescriptor): @@ -33097,7 +33098,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class OccupiedSetback(ClusterAttributeDescriptor): @@ -33113,7 +33114,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OccupiedSetbackMin(ClusterAttributeDescriptor): @@ -33129,7 +33130,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class OccupiedSetbackMax(ClusterAttributeDescriptor): @@ -33145,7 +33146,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class UnoccupiedSetback(ClusterAttributeDescriptor): @@ -33161,7 +33162,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class UnoccupiedSetbackMin(ClusterAttributeDescriptor): @@ -33177,7 +33178,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class UnoccupiedSetbackMax(ClusterAttributeDescriptor): @@ -33193,7 +33194,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class EmergencyHeatDelta(ClusterAttributeDescriptor): @@ -33209,7 +33210,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ACType(ClusterAttributeDescriptor): @@ -33225,7 +33226,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Thermostat.Enums.ACTypeEnum]) - value: 'typing.Optional[Thermostat.Enums.ACTypeEnum]' = None + value: typing.Optional[Thermostat.Enums.ACTypeEnum] = None @dataclass class ACCapacity(ClusterAttributeDescriptor): @@ -33241,7 +33242,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ACRefrigerantType(ClusterAttributeDescriptor): @@ -33257,7 +33258,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Thermostat.Enums.ACRefrigerantTypeEnum]) - value: 'typing.Optional[Thermostat.Enums.ACRefrigerantTypeEnum]' = None + value: typing.Optional[Thermostat.Enums.ACRefrigerantTypeEnum] = None @dataclass class ACCompressorType(ClusterAttributeDescriptor): @@ -33273,7 +33274,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Thermostat.Enums.ACCompressorTypeEnum]) - value: 'typing.Optional[Thermostat.Enums.ACCompressorTypeEnum]' = None + value: typing.Optional[Thermostat.Enums.ACCompressorTypeEnum] = None @dataclass class ACErrorCode(ClusterAttributeDescriptor): @@ -33289,7 +33290,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ACLouverPosition(ClusterAttributeDescriptor): @@ -33305,7 +33306,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Thermostat.Enums.ACLouverPositionEnum]) - value: 'typing.Optional[Thermostat.Enums.ACLouverPositionEnum]' = None + value: typing.Optional[Thermostat.Enums.ACLouverPositionEnum] = None @dataclass class ACCoilTemperature(ClusterAttributeDescriptor): @@ -33321,7 +33322,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class ACCapacityformat(ClusterAttributeDescriptor): @@ -33337,7 +33338,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Thermostat.Enums.ACCapacityFormatEnum]) - value: 'typing.Optional[Thermostat.Enums.ACCapacityFormatEnum]' = None + value: typing.Optional[Thermostat.Enums.ACCapacityFormatEnum] = None @dataclass class PresetTypes(ClusterAttributeDescriptor): @@ -33353,7 +33354,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[Thermostat.Structs.PresetTypeStruct]]) - value: 'typing.Optional[typing.List[Thermostat.Structs.PresetTypeStruct]]' = None + value: typing.Optional[typing.List[Thermostat.Structs.PresetTypeStruct]] = None @dataclass class ScheduleTypes(ClusterAttributeDescriptor): @@ -33369,7 +33370,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[Thermostat.Structs.ScheduleTypeStruct]]) - value: 'typing.Optional[typing.List[Thermostat.Structs.ScheduleTypeStruct]]' = None + value: typing.Optional[typing.List[Thermostat.Structs.ScheduleTypeStruct]] = None @dataclass class NumberOfPresets(ClusterAttributeDescriptor): @@ -33385,7 +33386,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfSchedules(ClusterAttributeDescriptor): @@ -33401,7 +33402,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfScheduleTransitions(ClusterAttributeDescriptor): @@ -33417,7 +33418,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NumberOfScheduleTransitionPerDay(ClusterAttributeDescriptor): @@ -33433,7 +33434,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class ActivePresetHandle(ClusterAttributeDescriptor): @@ -33449,7 +33450,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, bytes]) - value: 'typing.Union[None, Nullable, bytes]' = None + value: typing.Union[None, Nullable, bytes] = None @dataclass class ActiveScheduleHandle(ClusterAttributeDescriptor): @@ -33465,7 +33466,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, bytes]) - value: 'typing.Union[None, Nullable, bytes]' = None + value: typing.Union[None, Nullable, bytes] = None @dataclass class Presets(ClusterAttributeDescriptor): @@ -33481,7 +33482,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[Thermostat.Structs.PresetStruct]]) - value: 'typing.Optional[typing.List[Thermostat.Structs.PresetStruct]]' = None + value: typing.Optional[typing.List[Thermostat.Structs.PresetStruct]] = None @dataclass class Schedules(ClusterAttributeDescriptor): @@ -33497,7 +33498,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[Thermostat.Structs.ScheduleStruct]]) - value: 'typing.Optional[typing.List[Thermostat.Structs.ScheduleStruct]]' = None + value: typing.Optional[typing.List[Thermostat.Structs.ScheduleStruct]] = None @dataclass class SetpointHoldExpiryTimestamp(ClusterAttributeDescriptor): @@ -33513,7 +33514,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -33529,7 +33530,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -33545,7 +33546,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -33561,7 +33562,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -33577,7 +33578,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -33593,7 +33594,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -33609,7 +33610,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -33640,24 +33641,24 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - fanMode: 'FanControl.Enums.FanModeEnum' = None - fanModeSequence: 'FanControl.Enums.FanModeSequenceEnum' = None - percentSetting: 'typing.Union[Nullable, uint]' = None - percentCurrent: 'uint' = None - speedMax: 'typing.Optional[uint]' = None - speedSetting: 'typing.Union[None, Nullable, uint]' = None - speedCurrent: 'typing.Optional[uint]' = None - rockSupport: 'typing.Optional[uint]' = None - rockSetting: 'typing.Optional[uint]' = None - windSupport: 'typing.Optional[uint]' = None - windSetting: 'typing.Optional[uint]' = None - airflowDirection: 'typing.Optional[FanControl.Enums.AirflowDirectionEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + fanMode: FanControl.Enums.FanModeEnum = 0 + fanModeSequence: FanControl.Enums.FanModeSequenceEnum = 0 + percentSetting: typing.Union[Nullable, uint] = NullValue + percentCurrent: uint = 0 + speedMax: typing.Optional[uint] = None + speedSetting: typing.Union[None, Nullable, uint] = None + speedCurrent: typing.Optional[uint] = None + rockSupport: typing.Optional[uint] = None + rockSetting: typing.Optional[uint] = None + windSupport: typing.Optional[uint] = None + windSetting: typing.Optional[uint] = None + airflowDirection: typing.Optional[FanControl.Enums.AirflowDirectionEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class AirflowDirectionEnum(MatterIntEnum): @@ -33729,7 +33730,7 @@ class Step(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000202 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -33740,9 +33741,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="lowestOff", Tag=2, Type=typing.Optional[bool]), ]) - direction: 'FanControl.Enums.StepDirectionEnum' = 0 - wrap: 'typing.Optional[bool]' = None - lowestOff: 'typing.Optional[bool]' = None + direction: FanControl.Enums.StepDirectionEnum = 0 + wrap: typing.Optional[bool] = None + lowestOff: typing.Optional[bool] = None class Attributes: @dataclass @@ -33759,7 +33760,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=FanControl.Enums.FanModeEnum) - value: 'FanControl.Enums.FanModeEnum' = 0 + value: FanControl.Enums.FanModeEnum = 0 @dataclass class FanModeSequence(ClusterAttributeDescriptor): @@ -33775,7 +33776,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=FanControl.Enums.FanModeSequenceEnum) - value: 'FanControl.Enums.FanModeSequenceEnum' = 0 + value: FanControl.Enums.FanModeSequenceEnum = 0 @dataclass class PercentSetting(ClusterAttributeDescriptor): @@ -33791,7 +33792,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class PercentCurrent(ClusterAttributeDescriptor): @@ -33807,7 +33808,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class SpeedMax(ClusterAttributeDescriptor): @@ -33823,7 +33824,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SpeedSetting(ClusterAttributeDescriptor): @@ -33839,7 +33840,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class SpeedCurrent(ClusterAttributeDescriptor): @@ -33855,7 +33856,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RockSupport(ClusterAttributeDescriptor): @@ -33871,7 +33872,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RockSetting(ClusterAttributeDescriptor): @@ -33887,7 +33888,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class WindSupport(ClusterAttributeDescriptor): @@ -33903,7 +33904,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class WindSetting(ClusterAttributeDescriptor): @@ -33919,7 +33920,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AirflowDirection(ClusterAttributeDescriptor): @@ -33935,7 +33936,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[FanControl.Enums.AirflowDirectionEnum]) - value: 'typing.Optional[FanControl.Enums.AirflowDirectionEnum]' = None + value: typing.Optional[FanControl.Enums.AirflowDirectionEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -33951,7 +33952,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -33967,7 +33968,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -33983,7 +33984,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -33999,7 +34000,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -34015,7 +34016,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -34031,7 +34032,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -34053,15 +34054,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - temperatureDisplayMode: 'ThermostatUserInterfaceConfiguration.Enums.TemperatureDisplayModeEnum' = None - keypadLockout: 'ThermostatUserInterfaceConfiguration.Enums.KeypadLockoutEnum' = None - scheduleProgrammingVisibility: 'typing.Optional[ThermostatUserInterfaceConfiguration.Enums.ScheduleProgrammingVisibilityEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + temperatureDisplayMode: ThermostatUserInterfaceConfiguration.Enums.TemperatureDisplayModeEnum = 0 + keypadLockout: ThermostatUserInterfaceConfiguration.Enums.KeypadLockoutEnum = 0 + scheduleProgrammingVisibility: typing.Optional[ThermostatUserInterfaceConfiguration.Enums.ScheduleProgrammingVisibilityEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class KeypadLockoutEnum(MatterIntEnum): @@ -34110,7 +34111,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=ThermostatUserInterfaceConfiguration.Enums.TemperatureDisplayModeEnum) - value: 'ThermostatUserInterfaceConfiguration.Enums.TemperatureDisplayModeEnum' = 0 + value: ThermostatUserInterfaceConfiguration.Enums.TemperatureDisplayModeEnum = 0 @dataclass class KeypadLockout(ClusterAttributeDescriptor): @@ -34126,7 +34127,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=ThermostatUserInterfaceConfiguration.Enums.KeypadLockoutEnum) - value: 'ThermostatUserInterfaceConfiguration.Enums.KeypadLockoutEnum' = 0 + value: ThermostatUserInterfaceConfiguration.Enums.KeypadLockoutEnum = 0 @dataclass class ScheduleProgrammingVisibility(ClusterAttributeDescriptor): @@ -34142,7 +34143,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[ThermostatUserInterfaceConfiguration.Enums.ScheduleProgrammingVisibilityEnum]) - value: 'typing.Optional[ThermostatUserInterfaceConfiguration.Enums.ScheduleProgrammingVisibilityEnum]' = None + value: typing.Optional[ThermostatUserInterfaceConfiguration.Enums.ScheduleProgrammingVisibilityEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -34158,7 +34159,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -34174,7 +34175,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -34190,7 +34191,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -34206,7 +34207,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -34222,7 +34223,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -34238,7 +34239,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -34309,64 +34310,64 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - currentHue: 'typing.Optional[uint]' = None - currentSaturation: 'typing.Optional[uint]' = None - remainingTime: 'typing.Optional[uint]' = None - currentX: 'typing.Optional[uint]' = None - currentY: 'typing.Optional[uint]' = None - driftCompensation: 'typing.Optional[ColorControl.Enums.DriftCompensationEnum]' = None - compensationText: 'typing.Optional[str]' = None - colorTemperatureMireds: 'typing.Optional[uint]' = None - colorMode: 'ColorControl.Enums.ColorModeEnum' = None - options: 'uint' = None - numberOfPrimaries: 'typing.Union[Nullable, uint]' = None - primary1X: 'typing.Optional[uint]' = None - primary1Y: 'typing.Optional[uint]' = None - primary1Intensity: 'typing.Union[None, Nullable, uint]' = None - primary2X: 'typing.Optional[uint]' = None - primary2Y: 'typing.Optional[uint]' = None - primary2Intensity: 'typing.Union[None, Nullable, uint]' = None - primary3X: 'typing.Optional[uint]' = None - primary3Y: 'typing.Optional[uint]' = None - primary3Intensity: 'typing.Union[None, Nullable, uint]' = None - primary4X: 'typing.Optional[uint]' = None - primary4Y: 'typing.Optional[uint]' = None - primary4Intensity: 'typing.Union[None, Nullable, uint]' = None - primary5X: 'typing.Optional[uint]' = None - primary5Y: 'typing.Optional[uint]' = None - primary5Intensity: 'typing.Union[None, Nullable, uint]' = None - primary6X: 'typing.Optional[uint]' = None - primary6Y: 'typing.Optional[uint]' = None - primary6Intensity: 'typing.Union[None, Nullable, uint]' = None - whitePointX: 'typing.Optional[uint]' = None - whitePointY: 'typing.Optional[uint]' = None - colorPointRX: 'typing.Optional[uint]' = None - colorPointRY: 'typing.Optional[uint]' = None - colorPointRIntensity: 'typing.Union[None, Nullable, uint]' = None - colorPointGX: 'typing.Optional[uint]' = None - colorPointGY: 'typing.Optional[uint]' = None - colorPointGIntensity: 'typing.Union[None, Nullable, uint]' = None - colorPointBX: 'typing.Optional[uint]' = None - colorPointBY: 'typing.Optional[uint]' = None - colorPointBIntensity: 'typing.Union[None, Nullable, uint]' = None - enhancedCurrentHue: 'typing.Optional[uint]' = None - enhancedColorMode: 'ColorControl.Enums.EnhancedColorModeEnum' = None - colorLoopActive: 'typing.Optional[uint]' = None - colorLoopDirection: 'typing.Optional[uint]' = None - colorLoopTime: 'typing.Optional[uint]' = None - colorLoopStartEnhancedHue: 'typing.Optional[uint]' = None - colorLoopStoredEnhancedHue: 'typing.Optional[uint]' = None - colorCapabilities: 'uint' = None - colorTempPhysicalMinMireds: 'typing.Optional[uint]' = None - colorTempPhysicalMaxMireds: 'typing.Optional[uint]' = None - coupleColorTempToLevelMinMireds: 'typing.Optional[uint]' = None - startUpColorTemperatureMireds: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + currentHue: typing.Optional[uint] = None + currentSaturation: typing.Optional[uint] = None + remainingTime: typing.Optional[uint] = None + currentX: typing.Optional[uint] = None + currentY: typing.Optional[uint] = None + driftCompensation: typing.Optional[ColorControl.Enums.DriftCompensationEnum] = None + compensationText: typing.Optional[str] = None + colorTemperatureMireds: typing.Optional[uint] = None + colorMode: ColorControl.Enums.ColorModeEnum = 0 + options: uint = 0 + numberOfPrimaries: typing.Union[Nullable, uint] = NullValue + primary1X: typing.Optional[uint] = None + primary1Y: typing.Optional[uint] = None + primary1Intensity: typing.Union[None, Nullable, uint] = None + primary2X: typing.Optional[uint] = None + primary2Y: typing.Optional[uint] = None + primary2Intensity: typing.Union[None, Nullable, uint] = None + primary3X: typing.Optional[uint] = None + primary3Y: typing.Optional[uint] = None + primary3Intensity: typing.Union[None, Nullable, uint] = None + primary4X: typing.Optional[uint] = None + primary4Y: typing.Optional[uint] = None + primary4Intensity: typing.Union[None, Nullable, uint] = None + primary5X: typing.Optional[uint] = None + primary5Y: typing.Optional[uint] = None + primary5Intensity: typing.Union[None, Nullable, uint] = None + primary6X: typing.Optional[uint] = None + primary6Y: typing.Optional[uint] = None + primary6Intensity: typing.Union[None, Nullable, uint] = None + whitePointX: typing.Optional[uint] = None + whitePointY: typing.Optional[uint] = None + colorPointRX: typing.Optional[uint] = None + colorPointRY: typing.Optional[uint] = None + colorPointRIntensity: typing.Union[None, Nullable, uint] = None + colorPointGX: typing.Optional[uint] = None + colorPointGY: typing.Optional[uint] = None + colorPointGIntensity: typing.Union[None, Nullable, uint] = None + colorPointBX: typing.Optional[uint] = None + colorPointBY: typing.Optional[uint] = None + colorPointBIntensity: typing.Union[None, Nullable, uint] = None + enhancedCurrentHue: typing.Optional[uint] = None + enhancedColorMode: ColorControl.Enums.EnhancedColorModeEnum = 0 + colorLoopActive: typing.Optional[uint] = None + colorLoopDirection: typing.Optional[uint] = None + colorLoopTime: typing.Optional[uint] = None + colorLoopStartEnhancedHue: typing.Optional[uint] = None + colorLoopStoredEnhancedHue: typing.Optional[uint] = None + colorCapabilities: uint = 0 + colorTempPhysicalMinMireds: typing.Optional[uint] = None + colorTempPhysicalMaxMireds: typing.Optional[uint] = None + coupleColorTempToLevelMinMireds: typing.Optional[uint] = None + startUpColorTemperatureMireds: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ColorLoopActionEnum(MatterIntEnum): @@ -34481,7 +34482,7 @@ class MoveToHue(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34494,18 +34495,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - hue: 'uint' = 0 - direction: 'ColorControl.Enums.DirectionEnum' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + hue: uint = 0 + direction: ColorControl.Enums.DirectionEnum = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveHue(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34517,17 +34518,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - moveMode: 'ColorControl.Enums.MoveModeEnum' = 0 - rate: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + moveMode: ColorControl.Enums.MoveModeEnum = 0 + rate: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class StepHue(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34540,18 +34541,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - stepMode: 'ColorControl.Enums.StepModeEnum' = 0 - stepSize: 'uint' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + stepMode: ColorControl.Enums.StepModeEnum = 0 + stepSize: uint = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveToSaturation(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34563,17 +34564,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - saturation: 'uint' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + saturation: uint = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveSaturation(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34585,17 +34586,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - moveMode: 'ColorControl.Enums.MoveModeEnum' = 0 - rate: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + moveMode: ColorControl.Enums.MoveModeEnum = 0 + rate: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class StepSaturation(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34608,18 +34609,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - stepMode: 'ColorControl.Enums.StepModeEnum' = 0 - stepSize: 'uint' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + stepMode: ColorControl.Enums.StepModeEnum = 0 + stepSize: uint = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveToHueAndSaturation(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34632,18 +34633,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - hue: 'uint' = 0 - saturation: 'uint' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + hue: uint = 0 + saturation: uint = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveToColor(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34656,18 +34657,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - colorX: 'uint' = 0 - colorY: 'uint' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + colorX: uint = 0 + colorY: uint = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveColor(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000008 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34679,17 +34680,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - rateX: 'int' = 0 - rateY: 'int' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + rateX: int = 0 + rateY: int = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class StepColor(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000009 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34702,18 +34703,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - stepX: 'int' = 0 - stepY: 'int' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + stepX: int = 0 + stepY: int = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveToColorTemperature(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x0000000A is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34725,17 +34726,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - colorTemperatureMireds: 'uint' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + colorTemperatureMireds: uint = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class EnhancedMoveToHue(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000040 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34748,18 +34749,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - enhancedHue: 'uint' = 0 - direction: 'ColorControl.Enums.DirectionEnum' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + enhancedHue: uint = 0 + direction: ColorControl.Enums.DirectionEnum = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class EnhancedMoveHue(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000041 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34771,17 +34772,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint), ]) - moveMode: 'ColorControl.Enums.MoveModeEnum' = 0 - rate: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + moveMode: ColorControl.Enums.MoveModeEnum = 0 + rate: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class EnhancedStepHue(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000042 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34794,18 +34795,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - stepMode: 'ColorControl.Enums.StepModeEnum' = 0 - stepSize: 'uint' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + stepMode: ColorControl.Enums.StepModeEnum = 0 + stepSize: uint = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class EnhancedMoveToHueAndSaturation(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000043 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34818,18 +34819,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint), ]) - enhancedHue: 'uint' = 0 - saturation: 'uint' = 0 - transitionTime: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + enhancedHue: uint = 0 + saturation: uint = 0 + transitionTime: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class ColorLoopSet(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000044 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34844,20 +34845,20 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=6, Type=uint), ]) - updateFlags: 'uint' = 0 - action: 'ColorControl.Enums.ColorLoopActionEnum' = 0 - direction: 'ColorControl.Enums.ColorLoopDirectionEnum' = 0 - time: 'uint' = 0 - startHue: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + updateFlags: uint = 0 + action: ColorControl.Enums.ColorLoopActionEnum = 0 + direction: ColorControl.Enums.ColorLoopDirectionEnum = 0 + time: uint = 0 + startHue: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class StopMoveStep(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x00000047 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34867,15 +34868,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=1, Type=uint), ]) - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class MoveColorTemperature(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x0000004B is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34889,19 +34890,19 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=5, Type=uint), ]) - moveMode: 'ColorControl.Enums.MoveModeEnum' = 0 - rate: 'uint' = 0 - colorTemperatureMinimumMireds: 'uint' = 0 - colorTemperatureMaximumMireds: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + moveMode: ColorControl.Enums.MoveModeEnum = 0 + rate: uint = 0 + colorTemperatureMinimumMireds: uint = 0 + colorTemperatureMaximumMireds: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 @dataclass class StepColorTemperature(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000300 command_id: typing.ClassVar[int] = 0x0000004C is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -34916,13 +34917,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=6, Type=uint), ]) - stepMode: 'ColorControl.Enums.StepModeEnum' = 0 - stepSize: 'uint' = 0 - transitionTime: 'uint' = 0 - colorTemperatureMinimumMireds: 'uint' = 0 - colorTemperatureMaximumMireds: 'uint' = 0 - optionsMask: 'uint' = 0 - optionsOverride: 'uint' = 0 + stepMode: ColorControl.Enums.StepModeEnum = 0 + stepSize: uint = 0 + transitionTime: uint = 0 + colorTemperatureMinimumMireds: uint = 0 + colorTemperatureMaximumMireds: uint = 0 + optionsMask: uint = 0 + optionsOverride: uint = 0 class Attributes: @dataclass @@ -34939,7 +34940,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CurrentSaturation(ClusterAttributeDescriptor): @@ -34955,7 +34956,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RemainingTime(ClusterAttributeDescriptor): @@ -34971,7 +34972,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CurrentX(ClusterAttributeDescriptor): @@ -34987,7 +34988,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CurrentY(ClusterAttributeDescriptor): @@ -35003,7 +35004,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class DriftCompensation(ClusterAttributeDescriptor): @@ -35019,7 +35020,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[ColorControl.Enums.DriftCompensationEnum]) - value: 'typing.Optional[ColorControl.Enums.DriftCompensationEnum]' = None + value: typing.Optional[ColorControl.Enums.DriftCompensationEnum] = None @dataclass class CompensationText(ClusterAttributeDescriptor): @@ -35035,7 +35036,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class ColorTemperatureMireds(ClusterAttributeDescriptor): @@ -35051,7 +35052,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorMode(ClusterAttributeDescriptor): @@ -35067,7 +35068,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=ColorControl.Enums.ColorModeEnum) - value: 'ColorControl.Enums.ColorModeEnum' = 0 + value: ColorControl.Enums.ColorModeEnum = 0 @dataclass class Options(ClusterAttributeDescriptor): @@ -35083,7 +35084,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class NumberOfPrimaries(ClusterAttributeDescriptor): @@ -35099,7 +35100,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class Primary1X(ClusterAttributeDescriptor): @@ -35115,7 +35116,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary1Y(ClusterAttributeDescriptor): @@ -35131,7 +35132,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary1Intensity(ClusterAttributeDescriptor): @@ -35147,7 +35148,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class Primary2X(ClusterAttributeDescriptor): @@ -35163,7 +35164,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary2Y(ClusterAttributeDescriptor): @@ -35179,7 +35180,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary2Intensity(ClusterAttributeDescriptor): @@ -35195,7 +35196,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class Primary3X(ClusterAttributeDescriptor): @@ -35211,7 +35212,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary3Y(ClusterAttributeDescriptor): @@ -35227,7 +35228,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary3Intensity(ClusterAttributeDescriptor): @@ -35243,7 +35244,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class Primary4X(ClusterAttributeDescriptor): @@ -35259,7 +35260,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary4Y(ClusterAttributeDescriptor): @@ -35275,7 +35276,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary4Intensity(ClusterAttributeDescriptor): @@ -35291,7 +35292,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class Primary5X(ClusterAttributeDescriptor): @@ -35307,7 +35308,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary5Y(ClusterAttributeDescriptor): @@ -35323,7 +35324,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary5Intensity(ClusterAttributeDescriptor): @@ -35339,7 +35340,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class Primary6X(ClusterAttributeDescriptor): @@ -35355,7 +35356,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary6Y(ClusterAttributeDescriptor): @@ -35371,7 +35372,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Primary6Intensity(ClusterAttributeDescriptor): @@ -35387,7 +35388,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class WhitePointX(ClusterAttributeDescriptor): @@ -35403,7 +35404,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class WhitePointY(ClusterAttributeDescriptor): @@ -35419,7 +35420,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorPointRX(ClusterAttributeDescriptor): @@ -35435,7 +35436,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorPointRY(ClusterAttributeDescriptor): @@ -35451,7 +35452,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorPointRIntensity(ClusterAttributeDescriptor): @@ -35467,7 +35468,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class ColorPointGX(ClusterAttributeDescriptor): @@ -35483,7 +35484,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorPointGY(ClusterAttributeDescriptor): @@ -35499,7 +35500,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorPointGIntensity(ClusterAttributeDescriptor): @@ -35515,7 +35516,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class ColorPointBX(ClusterAttributeDescriptor): @@ -35531,7 +35532,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorPointBY(ClusterAttributeDescriptor): @@ -35547,7 +35548,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorPointBIntensity(ClusterAttributeDescriptor): @@ -35563,7 +35564,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class EnhancedCurrentHue(ClusterAttributeDescriptor): @@ -35579,7 +35580,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class EnhancedColorMode(ClusterAttributeDescriptor): @@ -35595,7 +35596,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=ColorControl.Enums.EnhancedColorModeEnum) - value: 'ColorControl.Enums.EnhancedColorModeEnum' = 0 + value: ColorControl.Enums.EnhancedColorModeEnum = 0 @dataclass class ColorLoopActive(ClusterAttributeDescriptor): @@ -35611,7 +35612,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorLoopDirection(ClusterAttributeDescriptor): @@ -35627,7 +35628,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorLoopTime(ClusterAttributeDescriptor): @@ -35643,7 +35644,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorLoopStartEnhancedHue(ClusterAttributeDescriptor): @@ -35659,7 +35660,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorLoopStoredEnhancedHue(ClusterAttributeDescriptor): @@ -35675,7 +35676,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorCapabilities(ClusterAttributeDescriptor): @@ -35691,7 +35692,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ColorTempPhysicalMinMireds(ClusterAttributeDescriptor): @@ -35707,7 +35708,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ColorTempPhysicalMaxMireds(ClusterAttributeDescriptor): @@ -35723,7 +35724,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class CoupleColorTempToLevelMinMireds(ClusterAttributeDescriptor): @@ -35739,7 +35740,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class StartUpColorTemperatureMireds(ClusterAttributeDescriptor): @@ -35755,7 +35756,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -35771,7 +35772,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -35787,7 +35788,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -35803,7 +35804,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -35819,7 +35820,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -35835,7 +35836,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -35851,7 +35852,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -35884,26 +35885,26 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - physicalMinLevel: 'uint' = None - physicalMaxLevel: 'uint' = None - ballastStatus: 'typing.Optional[uint]' = None - minLevel: 'uint' = None - maxLevel: 'uint' = None - intrinsicBallastFactor: 'typing.Union[None, Nullable, uint]' = None - ballastFactorAdjustment: 'typing.Union[None, Nullable, uint]' = None - lampQuantity: 'uint' = None - lampType: 'typing.Optional[str]' = None - lampManufacturer: 'typing.Optional[str]' = None - lampRatedHours: 'typing.Union[None, Nullable, uint]' = None - lampBurnHours: 'typing.Union[None, Nullable, uint]' = None - lampAlarmMode: 'typing.Optional[uint]' = None - lampBurnHoursTripPoint: 'typing.Union[None, Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + physicalMinLevel: uint = 0 + physicalMaxLevel: uint = 0 + ballastStatus: typing.Optional[uint] = None + minLevel: uint = 0 + maxLevel: uint = 0 + intrinsicBallastFactor: typing.Union[None, Nullable, uint] = None + ballastFactorAdjustment: typing.Union[None, Nullable, uint] = None + lampQuantity: uint = 0 + lampType: typing.Optional[str] = None + lampManufacturer: typing.Optional[str] = None + lampRatedHours: typing.Union[None, Nullable, uint] = None + lampBurnHours: typing.Union[None, Nullable, uint] = None + lampAlarmMode: typing.Optional[uint] = None + lampBurnHoursTripPoint: typing.Union[None, Nullable, uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class BallastStatusBitmap(IntFlag): @@ -35928,7 +35929,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class PhysicalMaxLevel(ClusterAttributeDescriptor): @@ -35944,7 +35945,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class BallastStatus(ClusterAttributeDescriptor): @@ -35960,7 +35961,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MinLevel(ClusterAttributeDescriptor): @@ -35976,7 +35977,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class MaxLevel(ClusterAttributeDescriptor): @@ -35992,7 +35993,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class IntrinsicBallastFactor(ClusterAttributeDescriptor): @@ -36008,7 +36009,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class BallastFactorAdjustment(ClusterAttributeDescriptor): @@ -36024,7 +36025,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class LampQuantity(ClusterAttributeDescriptor): @@ -36040,7 +36041,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class LampType(ClusterAttributeDescriptor): @@ -36056,7 +36057,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class LampManufacturer(ClusterAttributeDescriptor): @@ -36072,7 +36073,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class LampRatedHours(ClusterAttributeDescriptor): @@ -36088,7 +36089,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class LampBurnHours(ClusterAttributeDescriptor): @@ -36104,7 +36105,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class LampAlarmMode(ClusterAttributeDescriptor): @@ -36120,7 +36121,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class LampBurnHoursTripPoint(ClusterAttributeDescriptor): @@ -36136,7 +36137,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -36152,7 +36153,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -36168,7 +36169,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -36184,7 +36185,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -36200,7 +36201,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -36216,7 +36217,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -36232,7 +36233,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -36256,17 +36257,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[Nullable, uint]' = None - minMeasuredValue: 'typing.Union[Nullable, uint]' = None - maxMeasuredValue: 'typing.Union[Nullable, uint]' = None - tolerance: 'typing.Optional[uint]' = None - lightSensorType: 'typing.Union[None, Nullable, IlluminanceMeasurement.Enums.LightSensorTypeEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[Nullable, uint] = NullValue + minMeasuredValue: typing.Union[Nullable, uint] = NullValue + maxMeasuredValue: typing.Union[Nullable, uint] = NullValue + tolerance: typing.Optional[uint] = None + lightSensorType: typing.Union[None, Nullable, IlluminanceMeasurement.Enums.LightSensorTypeEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LightSensorTypeEnum(MatterIntEnum): @@ -36293,7 +36294,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -36309,7 +36310,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -36325,7 +36326,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class Tolerance(ClusterAttributeDescriptor): @@ -36341,7 +36342,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class LightSensorType(ClusterAttributeDescriptor): @@ -36357,7 +36358,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, IlluminanceMeasurement.Enums.LightSensorTypeEnum]) - value: 'typing.Union[None, Nullable, IlluminanceMeasurement.Enums.LightSensorTypeEnum]' = None + value: typing.Union[None, Nullable, IlluminanceMeasurement.Enums.LightSensorTypeEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -36373,7 +36374,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -36389,7 +36390,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -36405,7 +36406,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -36421,7 +36422,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -36437,7 +36438,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -36453,7 +36454,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -36476,16 +36477,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[Nullable, int]' = None - minMeasuredValue: 'typing.Union[Nullable, int]' = None - maxMeasuredValue: 'typing.Union[Nullable, int]' = None - tolerance: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[Nullable, int] = NullValue + minMeasuredValue: typing.Union[Nullable, int] = NullValue + maxMeasuredValue: typing.Union[Nullable, int] = NullValue + tolerance: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -36502,7 +36503,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -36518,7 +36519,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -36534,7 +36535,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class Tolerance(ClusterAttributeDescriptor): @@ -36550,7 +36551,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -36566,7 +36567,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -36582,7 +36583,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -36598,7 +36599,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -36614,7 +36615,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -36630,7 +36631,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -36646,7 +36647,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -36674,21 +36675,21 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[Nullable, int]' = None - minMeasuredValue: 'typing.Union[Nullable, int]' = None - maxMeasuredValue: 'typing.Union[Nullable, int]' = None - tolerance: 'typing.Optional[uint]' = None - scaledValue: 'typing.Union[None, Nullable, int]' = None - minScaledValue: 'typing.Union[None, Nullable, int]' = None - maxScaledValue: 'typing.Union[None, Nullable, int]' = None - scaledTolerance: 'typing.Optional[uint]' = None - scale: 'typing.Optional[int]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[Nullable, int] = NullValue + minMeasuredValue: typing.Union[Nullable, int] = NullValue + maxMeasuredValue: typing.Union[Nullable, int] = NullValue + tolerance: typing.Optional[uint] = None + scaledValue: typing.Union[None, Nullable, int] = None + minScaledValue: typing.Union[None, Nullable, int] = None + maxScaledValue: typing.Union[None, Nullable, int] = None + scaledTolerance: typing.Optional[uint] = None + scale: typing.Optional[int] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -36709,7 +36710,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -36725,7 +36726,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -36741,7 +36742,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class Tolerance(ClusterAttributeDescriptor): @@ -36757,7 +36758,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ScaledValue(ClusterAttributeDescriptor): @@ -36773,7 +36774,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class MinScaledValue(ClusterAttributeDescriptor): @@ -36789,7 +36790,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class MaxScaledValue(ClusterAttributeDescriptor): @@ -36805,7 +36806,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Union[None, Nullable, int]' = None + value: typing.Union[None, Nullable, int] = None @dataclass class ScaledTolerance(ClusterAttributeDescriptor): @@ -36821,7 +36822,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Scale(ClusterAttributeDescriptor): @@ -36837,7 +36838,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) - value: 'typing.Optional[int]' = None + value: typing.Optional[int] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -36853,7 +36854,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -36869,7 +36870,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -36885,7 +36886,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -36901,7 +36902,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -36917,7 +36918,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -36933,7 +36934,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -36956,16 +36957,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[Nullable, uint]' = None - minMeasuredValue: 'typing.Union[Nullable, uint]' = None - maxMeasuredValue: 'typing.Union[Nullable, uint]' = None - tolerance: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[Nullable, uint] = NullValue + minMeasuredValue: typing.Union[Nullable, uint] = NullValue + maxMeasuredValue: typing.Union[Nullable, uint] = NullValue + tolerance: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -36982,7 +36983,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -36998,7 +36999,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -37014,7 +37015,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class Tolerance(ClusterAttributeDescriptor): @@ -37030,7 +37031,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -37046,7 +37047,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -37062,7 +37063,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -37078,7 +37079,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -37094,7 +37095,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -37110,7 +37111,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -37126,7 +37127,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -37149,16 +37150,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[Nullable, uint]' = None - minMeasuredValue: 'typing.Union[Nullable, uint]' = None - maxMeasuredValue: 'typing.Union[Nullable, uint]' = None - tolerance: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[Nullable, uint] = NullValue + minMeasuredValue: typing.Union[Nullable, uint] = NullValue + maxMeasuredValue: typing.Union[Nullable, uint] = NullValue + tolerance: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -37175,7 +37176,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -37191,7 +37192,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -37207,7 +37208,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class Tolerance(ClusterAttributeDescriptor): @@ -37223,7 +37224,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -37239,7 +37240,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -37255,7 +37256,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -37271,7 +37272,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -37287,7 +37288,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -37303,7 +37304,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -37319,7 +37320,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -37352,26 +37353,26 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - occupancy: 'uint' = None - occupancySensorType: 'OccupancySensing.Enums.OccupancySensorTypeEnum' = None - occupancySensorTypeBitmap: 'uint' = None - holdTime: 'typing.Optional[uint]' = None - holdTimeLimits: 'typing.Optional[OccupancySensing.Structs.HoldTimeLimitsStruct]' = None - PIROccupiedToUnoccupiedDelay: 'typing.Optional[uint]' = None - PIRUnoccupiedToOccupiedDelay: 'typing.Optional[uint]' = None - PIRUnoccupiedToOccupiedThreshold: 'typing.Optional[uint]' = None - ultrasonicOccupiedToUnoccupiedDelay: 'typing.Optional[uint]' = None - ultrasonicUnoccupiedToOccupiedDelay: 'typing.Optional[uint]' = None - ultrasonicUnoccupiedToOccupiedThreshold: 'typing.Optional[uint]' = None - physicalContactOccupiedToUnoccupiedDelay: 'typing.Optional[uint]' = None - physicalContactUnoccupiedToOccupiedDelay: 'typing.Optional[uint]' = None - physicalContactUnoccupiedToOccupiedThreshold: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + occupancy: uint = 0 + occupancySensorType: OccupancySensing.Enums.OccupancySensorTypeEnum = 0 + occupancySensorTypeBitmap: uint = 0 + holdTime: typing.Optional[uint] = None + holdTimeLimits: typing.Optional[OccupancySensing.Structs.HoldTimeLimitsStruct] = None + PIROccupiedToUnoccupiedDelay: typing.Optional[uint] = None + PIRUnoccupiedToOccupiedDelay: typing.Optional[uint] = None + PIRUnoccupiedToOccupiedThreshold: typing.Optional[uint] = None + ultrasonicOccupiedToUnoccupiedDelay: typing.Optional[uint] = None + ultrasonicUnoccupiedToOccupiedDelay: typing.Optional[uint] = None + ultrasonicUnoccupiedToOccupiedThreshold: typing.Optional[uint] = None + physicalContactOccupiedToUnoccupiedDelay: typing.Optional[uint] = None + physicalContactUnoccupiedToOccupiedDelay: typing.Optional[uint] = None + physicalContactUnoccupiedToOccupiedThreshold: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class OccupancySensorTypeEnum(MatterIntEnum): @@ -37435,7 +37436,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class OccupancySensorType(ClusterAttributeDescriptor): @@ -37451,7 +37452,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=OccupancySensing.Enums.OccupancySensorTypeEnum) - value: 'OccupancySensing.Enums.OccupancySensorTypeEnum' = 0 + value: OccupancySensing.Enums.OccupancySensorTypeEnum = 0 @dataclass class OccupancySensorTypeBitmap(ClusterAttributeDescriptor): @@ -37467,7 +37468,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class HoldTime(ClusterAttributeDescriptor): @@ -37483,7 +37484,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class HoldTimeLimits(ClusterAttributeDescriptor): @@ -37499,7 +37500,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[OccupancySensing.Structs.HoldTimeLimitsStruct]) - value: 'typing.Optional[OccupancySensing.Structs.HoldTimeLimitsStruct]' = None + value: typing.Optional[OccupancySensing.Structs.HoldTimeLimitsStruct] = None @dataclass class PIROccupiedToUnoccupiedDelay(ClusterAttributeDescriptor): @@ -37515,7 +37516,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PIRUnoccupiedToOccupiedDelay(ClusterAttributeDescriptor): @@ -37531,7 +37532,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PIRUnoccupiedToOccupiedThreshold(ClusterAttributeDescriptor): @@ -37547,7 +37548,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class UltrasonicOccupiedToUnoccupiedDelay(ClusterAttributeDescriptor): @@ -37563,7 +37564,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class UltrasonicUnoccupiedToOccupiedDelay(ClusterAttributeDescriptor): @@ -37579,7 +37580,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class UltrasonicUnoccupiedToOccupiedThreshold(ClusterAttributeDescriptor): @@ -37595,7 +37596,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PhysicalContactOccupiedToUnoccupiedDelay(ClusterAttributeDescriptor): @@ -37611,7 +37612,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PhysicalContactUnoccupiedToOccupiedDelay(ClusterAttributeDescriptor): @@ -37627,7 +37628,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class PhysicalContactUnoccupiedToOccupiedThreshold(ClusterAttributeDescriptor): @@ -37643,7 +37644,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -37659,7 +37660,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -37675,7 +37676,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -37691,7 +37692,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -37707,7 +37708,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -37723,7 +37724,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -37739,7 +37740,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -37759,7 +37760,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="occupancy", Tag=0, Type=uint), ]) - occupancy: 'uint' = 0 + occupancy: uint = 0 @dataclass @@ -37789,23 +37790,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -37869,7 +37870,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -37885,7 +37886,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -37901,7 +37902,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -37917,7 +37918,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -37933,7 +37934,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -37949,7 +37950,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -37965,7 +37966,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -37981,7 +37982,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -37997,7 +37998,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -38013,7 +38014,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -38029,7 +38030,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[CarbonMonoxideConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -38045,7 +38046,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -38061,7 +38062,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -38077,7 +38078,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -38093,7 +38094,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -38109,7 +38110,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -38125,7 +38126,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -38155,23 +38156,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -38235,7 +38236,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -38251,7 +38252,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -38267,7 +38268,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -38283,7 +38284,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -38299,7 +38300,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -38315,7 +38316,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -38331,7 +38332,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -38347,7 +38348,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -38363,7 +38364,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -38379,7 +38380,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -38395,7 +38396,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[CarbonDioxideConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -38411,7 +38412,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -38427,7 +38428,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -38443,7 +38444,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -38459,7 +38460,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -38475,7 +38476,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -38491,7 +38492,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -38521,23 +38522,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -38601,7 +38602,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -38617,7 +38618,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -38633,7 +38634,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -38649,7 +38650,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -38665,7 +38666,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -38681,7 +38682,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -38697,7 +38698,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -38713,7 +38714,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -38729,7 +38730,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -38745,7 +38746,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -38761,7 +38762,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[NitrogenDioxideConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -38777,7 +38778,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -38793,7 +38794,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -38809,7 +38810,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -38825,7 +38826,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -38841,7 +38842,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -38857,7 +38858,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -38887,23 +38888,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[OzoneConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[OzoneConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -38967,7 +38968,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -38983,7 +38984,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -38999,7 +39000,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -39015,7 +39016,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -39031,7 +39032,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -39047,7 +39048,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -39063,7 +39064,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -39079,7 +39080,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -39095,7 +39096,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -39111,7 +39112,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[OzoneConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -39127,7 +39128,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[OzoneConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[OzoneConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[OzoneConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -39143,7 +39144,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -39159,7 +39160,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -39175,7 +39176,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -39191,7 +39192,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -39207,7 +39208,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -39223,7 +39224,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -39253,23 +39254,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[Pm25ConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[Pm25ConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -39333,7 +39334,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -39349,7 +39350,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -39365,7 +39366,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -39381,7 +39382,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -39397,7 +39398,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -39413,7 +39414,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -39429,7 +39430,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -39445,7 +39446,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -39461,7 +39462,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -39477,7 +39478,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[Pm25ConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -39493,7 +39494,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Pm25ConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[Pm25ConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[Pm25ConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -39509,7 +39510,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -39525,7 +39526,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -39541,7 +39542,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -39557,7 +39558,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -39573,7 +39574,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -39589,7 +39590,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -39619,23 +39620,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[FormaldehydeConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[FormaldehydeConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -39699,7 +39700,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -39715,7 +39716,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -39731,7 +39732,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -39747,7 +39748,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -39763,7 +39764,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -39779,7 +39780,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -39795,7 +39796,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -39811,7 +39812,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -39827,7 +39828,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -39843,7 +39844,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[FormaldehydeConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -39859,7 +39860,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[FormaldehydeConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[FormaldehydeConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[FormaldehydeConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -39875,7 +39876,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -39891,7 +39892,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -39907,7 +39908,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -39923,7 +39924,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -39939,7 +39940,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -39955,7 +39956,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -39985,23 +39986,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[Pm1ConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[Pm1ConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -40065,7 +40066,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -40081,7 +40082,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -40097,7 +40098,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -40113,7 +40114,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -40129,7 +40130,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -40145,7 +40146,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -40161,7 +40162,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -40177,7 +40178,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -40193,7 +40194,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -40209,7 +40210,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[Pm1ConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -40225,7 +40226,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Pm1ConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[Pm1ConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[Pm1ConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -40241,7 +40242,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -40257,7 +40258,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -40273,7 +40274,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -40289,7 +40290,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -40305,7 +40306,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -40321,7 +40322,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -40351,23 +40352,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[Pm10ConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[Pm10ConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -40431,7 +40432,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -40447,7 +40448,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -40463,7 +40464,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -40479,7 +40480,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -40495,7 +40496,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -40511,7 +40512,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -40527,7 +40528,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -40543,7 +40544,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -40559,7 +40560,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -40575,7 +40576,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[Pm10ConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -40591,7 +40592,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Pm10ConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[Pm10ConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[Pm10ConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -40607,7 +40608,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -40623,7 +40624,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -40639,7 +40640,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -40655,7 +40656,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -40671,7 +40672,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -40687,7 +40688,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -40717,23 +40718,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -40797,7 +40798,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -40813,7 +40814,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -40829,7 +40830,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -40845,7 +40846,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -40861,7 +40862,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -40877,7 +40878,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -40893,7 +40894,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -40909,7 +40910,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -40925,7 +40926,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -40941,7 +40942,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -40957,7 +40958,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[TotalVolatileOrganicCompoundsConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -40973,7 +40974,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -40989,7 +40990,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -41005,7 +41006,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -41021,7 +41022,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -41037,7 +41038,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -41053,7 +41054,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -41083,23 +41084,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - measuredValue: 'typing.Union[None, Nullable, float32]' = None - minMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - maxMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - peakMeasuredValueWindow: 'typing.Optional[uint]' = None - averageMeasuredValue: 'typing.Union[None, Nullable, float32]' = None - averageMeasuredValueWindow: 'typing.Optional[uint]' = None - uncertainty: 'typing.Optional[float32]' = None - measurementUnit: 'typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None - measurementMedium: 'typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None - levelValue: 'typing.Optional[RadonConcentrationMeasurement.Enums.LevelValueEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + measuredValue: typing.Union[None, Nullable, float32] = None + minMeasuredValue: typing.Union[None, Nullable, float32] = None + maxMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValue: typing.Union[None, Nullable, float32] = None + peakMeasuredValueWindow: typing.Optional[uint] = None + averageMeasuredValue: typing.Union[None, Nullable, float32] = None + averageMeasuredValueWindow: typing.Optional[uint] = None + uncertainty: typing.Optional[float32] = None + measurementUnit: typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementUnitEnum] = None + measurementMedium: typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementMediumEnum] = None + levelValue: typing.Optional[RadonConcentrationMeasurement.Enums.LevelValueEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class LevelValueEnum(MatterIntEnum): @@ -41163,7 +41164,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MinMeasuredValue(ClusterAttributeDescriptor): @@ -41179,7 +41180,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class MaxMeasuredValue(ClusterAttributeDescriptor): @@ -41195,7 +41196,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValue(ClusterAttributeDescriptor): @@ -41211,7 +41212,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class PeakMeasuredValueWindow(ClusterAttributeDescriptor): @@ -41227,7 +41228,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class AverageMeasuredValue(ClusterAttributeDescriptor): @@ -41243,7 +41244,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, float32]) - value: 'typing.Union[None, Nullable, float32]' = None + value: typing.Union[None, Nullable, float32] = None @dataclass class AverageMeasuredValueWindow(ClusterAttributeDescriptor): @@ -41259,7 +41260,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Uncertainty(ClusterAttributeDescriptor): @@ -41275,7 +41276,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class MeasurementUnit(ClusterAttributeDescriptor): @@ -41291,7 +41292,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementUnitEnum]) - value: 'typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementUnitEnum]' = None + value: typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementUnitEnum] = None @dataclass class MeasurementMedium(ClusterAttributeDescriptor): @@ -41307,7 +41308,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementMediumEnum]) - value: 'typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementMediumEnum]' = None + value: typing.Optional[RadonConcentrationMeasurement.Enums.MeasurementMediumEnum] = None @dataclass class LevelValue(ClusterAttributeDescriptor): @@ -41323,7 +41324,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[RadonConcentrationMeasurement.Enums.LevelValueEnum]) - value: 'typing.Optional[RadonConcentrationMeasurement.Enums.LevelValueEnum]' = None + value: typing.Optional[RadonConcentrationMeasurement.Enums.LevelValueEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -41339,7 +41340,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -41355,7 +41356,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -41371,7 +41372,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -41387,7 +41388,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -41403,7 +41404,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -41419,7 +41420,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -41440,14 +41441,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - ssid: 'typing.Union[Nullable, bytes]' = None - passphraseSurrogate: 'typing.Union[Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + ssid: typing.Union[Nullable, bytes] = NullValue + passphraseSurrogate: typing.Union[Nullable, uint] = NullValue + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Commands: @dataclass @@ -41468,7 +41469,7 @@ class NetworkPassphraseResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000451 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -41477,7 +41478,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="passphrase", Tag=0, Type=bytes), ]) - passphrase: 'bytes' = b"" + passphrase: bytes = b"" class Attributes: @dataclass @@ -41494,7 +41495,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, bytes]) - value: 'typing.Union[Nullable, bytes]' = NullValue + value: typing.Union[Nullable, bytes] = NullValue @dataclass class PassphraseSurrogate(ClusterAttributeDescriptor): @@ -41510,7 +41511,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -41526,7 +41527,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -41542,7 +41543,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -41558,7 +41559,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -41574,7 +41575,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -41590,7 +41591,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -41606,7 +41607,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -41631,18 +41632,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - borderRouterName: 'str' = None - borderAgentID: 'bytes' = None - threadVersion: 'uint' = None - interfaceEnabled: 'bool' = None - activeDatasetTimestamp: 'typing.Union[Nullable, uint]' = None - pendingDatasetTimestamp: 'typing.Union[Nullable, uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + borderRouterName: str = "" + borderAgentID: bytes = b"" + threadVersion: uint = 0 + interfaceEnabled: bool = False + activeDatasetTimestamp: typing.Union[Nullable, uint] = NullValue + pendingDatasetTimestamp: typing.Union[Nullable, uint] = NullValue + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -41680,7 +41681,7 @@ class DatasetResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000452 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -41689,14 +41690,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="dataset", Tag=0, Type=bytes), ]) - dataset: 'bytes' = b"" + dataset: bytes = b"" @dataclass class SetActiveDatasetRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000452 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -41706,15 +41707,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="breadcrumb", Tag=1, Type=typing.Optional[uint]), ]) - activeDataset: 'bytes' = b"" - breadcrumb: 'typing.Optional[uint]' = None + activeDataset: bytes = b"" + breadcrumb: typing.Optional[uint] = None @dataclass class SetPendingDatasetRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000452 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -41723,7 +41724,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="pendingDataset", Tag=0, Type=bytes), ]) - pendingDataset: 'bytes' = b"" + pendingDataset: bytes = b"" class Attributes: @dataclass @@ -41740,7 +41741,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class BorderAgentID(ClusterAttributeDescriptor): @@ -41756,7 +41757,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bytes) - value: 'bytes' = b"" + value: bytes = b"" @dataclass class ThreadVersion(ClusterAttributeDescriptor): @@ -41772,7 +41773,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class InterfaceEnabled(ClusterAttributeDescriptor): @@ -41788,7 +41789,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class ActiveDatasetTimestamp(ClusterAttributeDescriptor): @@ -41804,7 +41805,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class PendingDatasetTimestamp(ClusterAttributeDescriptor): @@ -41820,7 +41821,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -41836,7 +41837,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -41852,7 +41853,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -41868,7 +41869,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -41884,7 +41885,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -41900,7 +41901,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -41916,7 +41917,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -41938,15 +41939,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - preferredExtendedPanID: 'typing.Union[Nullable, bytes]' = None - threadNetworks: 'typing.List[ThreadNetworkDirectory.Structs.ThreadNetworkStruct]' = None - threadNetworkTableSize: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + preferredExtendedPanID: typing.Union[Nullable, bytes] = NullValue + threadNetworks: typing.List[ThreadNetworkDirectory.Structs.ThreadNetworkStruct] = field(default_factory=lambda: []) + threadNetworkTableSize: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Structs: @dataclass @@ -41972,7 +41973,7 @@ class AddNetwork(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000453 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -41985,14 +41986,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - operationalDataset: 'bytes' = b"" + operationalDataset: bytes = b"" @dataclass class RemoveNetwork(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000453 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -42005,7 +42006,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - extendedPanID: 'bytes' = b"" + extendedPanID: bytes = b"" @dataclass class GetOperationalDataset(ClusterCommand): @@ -42021,14 +42022,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="extendedPanID", Tag=0, Type=bytes), ]) - extendedPanID: 'bytes' = b"" + extendedPanID: bytes = b"" @dataclass class OperationalDatasetResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000453 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -42037,7 +42038,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="operationalDataset", Tag=0, Type=bytes), ]) - operationalDataset: 'bytes' = b"" + operationalDataset: bytes = b"" class Attributes: @dataclass @@ -42054,7 +42055,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, bytes]) - value: 'typing.Union[Nullable, bytes]' = NullValue + value: typing.Union[Nullable, bytes] = NullValue @dataclass class ThreadNetworks(ClusterAttributeDescriptor): @@ -42070,7 +42071,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ThreadNetworkDirectory.Structs.ThreadNetworkStruct]) - value: 'typing.List[ThreadNetworkDirectory.Structs.ThreadNetworkStruct]' = field(default_factory=lambda: []) + value: typing.List[ThreadNetworkDirectory.Structs.ThreadNetworkStruct] = field(default_factory=lambda: []) @dataclass class ThreadNetworkTableSize(ClusterAttributeDescriptor): @@ -42086,7 +42087,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -42102,7 +42103,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -42118,7 +42119,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -42134,7 +42135,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -42150,7 +42151,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -42166,7 +42167,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -42182,7 +42183,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -42203,14 +42204,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - MACAddress: 'typing.Optional[str]' = None - linkLocalAddress: 'typing.Optional[bytes]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + MACAddress: typing.Optional[str] = None + linkLocalAddress: typing.Optional[bytes] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Attributes: @dataclass @@ -42227,7 +42228,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class LinkLocalAddress(ClusterAttributeDescriptor): @@ -42243,7 +42244,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bytes]) - value: 'typing.Optional[bytes]' = None + value: typing.Optional[bytes] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -42259,7 +42260,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -42275,7 +42276,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -42291,7 +42292,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -42307,7 +42308,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -42323,7 +42324,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -42339,7 +42340,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -42361,15 +42362,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - channelList: 'typing.Optional[typing.List[Channel.Structs.ChannelInfoStruct]]' = None - lineup: 'typing.Union[None, Nullable, Channel.Structs.LineupInfoStruct]' = None - currentChannel: 'typing.Union[None, Nullable, Channel.Structs.ChannelInfoStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + channelList: typing.Optional[typing.List[Channel.Structs.ChannelInfoStruct]] = None + lineup: typing.Union[None, Nullable, Channel.Structs.LineupInfoStruct] = None + currentChannel: typing.Union[None, Nullable, Channel.Structs.ChannelInfoStruct] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ChannelTypeEnum(MatterIntEnum): @@ -42596,14 +42597,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="match", Tag=0, Type=str), ]) - match: 'str' = "" + match: str = "" @dataclass class ChangeChannelResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000504 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -42613,15 +42614,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=1, Type=typing.Optional[str]), ]) - status: 'Channel.Enums.StatusEnum' = 0 - data: 'typing.Optional[str]' = None + status: Channel.Enums.StatusEnum = 0 + data: typing.Optional[str] = None @dataclass class ChangeChannelByNumber(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000504 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -42631,15 +42632,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="minorNumber", Tag=1, Type=uint), ]) - majorNumber: 'uint' = 0 - minorNumber: 'uint' = 0 + majorNumber: uint = 0 + minorNumber: uint = 0 @dataclass class SkipChannel(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000504 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -42648,7 +42649,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="count", Tag=0, Type=int), ]) - count: 'int' = 0 + count: int = 0 @dataclass class GetProgramGuide(ClusterCommand): @@ -42670,20 +42671,20 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=6, Type=typing.Optional[bytes]), ]) - startTime: 'typing.Optional[uint]' = None - endTime: 'typing.Optional[uint]' = None - channelList: 'typing.Optional[typing.List[Channel.Structs.ChannelInfoStruct]]' = None - pageToken: 'typing.Optional[Channel.Structs.PageTokenStruct]' = None - recordingFlag: 'typing.Optional[uint]' = None - externalIDList: 'typing.Optional[typing.List[Channel.Structs.AdditionalInfoStruct]]' = None - data: 'typing.Optional[bytes]' = None + startTime: typing.Optional[uint] = None + endTime: typing.Optional[uint] = None + channelList: typing.Optional[typing.List[Channel.Structs.ChannelInfoStruct]] = None + pageToken: typing.Optional[Channel.Structs.PageTokenStruct] = None + recordingFlag: typing.Optional[uint] = None + externalIDList: typing.Optional[typing.List[Channel.Structs.AdditionalInfoStruct]] = None + data: typing.Optional[bytes] = None @dataclass class ProgramGuideResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000504 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -42693,15 +42694,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="programList", Tag=1, Type=typing.List[Channel.Structs.ProgramStruct]), ]) - paging: 'Channel.Structs.ChannelPagingStruct' = field(default_factory=lambda: Channel.Structs.ChannelPagingStruct()) - programList: 'typing.List[Channel.Structs.ProgramStruct]' = field(default_factory=lambda: []) + paging: Channel.Structs.ChannelPagingStruct = field(default_factory=lambda: Channel.Structs.ChannelPagingStruct()) + programList: typing.List[Channel.Structs.ProgramStruct] = field(default_factory=lambda: []) @dataclass class RecordProgram(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000504 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -42713,17 +42714,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=3, Type=bytes), ]) - programIdentifier: 'str' = "" - shouldRecordSeries: 'bool' = False - externalIDList: 'typing.List[Channel.Structs.AdditionalInfoStruct]' = field(default_factory=lambda: []) - data: 'bytes' = b"" + programIdentifier: str = "" + shouldRecordSeries: bool = False + externalIDList: typing.List[Channel.Structs.AdditionalInfoStruct] = field(default_factory=lambda: []) + data: bytes = b"" @dataclass class CancelRecordProgram(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000504 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -42735,10 +42736,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=3, Type=bytes), ]) - programIdentifier: 'str' = "" - shouldRecordSeries: 'bool' = False - externalIDList: 'typing.List[Channel.Structs.AdditionalInfoStruct]' = field(default_factory=lambda: []) - data: 'bytes' = b"" + programIdentifier: str = "" + shouldRecordSeries: bool = False + externalIDList: typing.List[Channel.Structs.AdditionalInfoStruct] = field(default_factory=lambda: []) + data: bytes = b"" class Attributes: @dataclass @@ -42755,7 +42756,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[Channel.Structs.ChannelInfoStruct]]) - value: 'typing.Optional[typing.List[Channel.Structs.ChannelInfoStruct]]' = None + value: typing.Optional[typing.List[Channel.Structs.ChannelInfoStruct]] = None @dataclass class Lineup(ClusterAttributeDescriptor): @@ -42771,7 +42772,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, Channel.Structs.LineupInfoStruct]) - value: 'typing.Union[None, Nullable, Channel.Structs.LineupInfoStruct]' = None + value: typing.Union[None, Nullable, Channel.Structs.LineupInfoStruct] = None @dataclass class CurrentChannel(ClusterAttributeDescriptor): @@ -42787,7 +42788,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, Channel.Structs.ChannelInfoStruct]) - value: 'typing.Union[None, Nullable, Channel.Structs.ChannelInfoStruct]' = None + value: typing.Union[None, Nullable, Channel.Structs.ChannelInfoStruct] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -42803,7 +42804,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -42819,7 +42820,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -42835,7 +42836,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -42851,7 +42852,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -42867,7 +42868,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -42883,7 +42884,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -42904,14 +42905,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - targetList: 'typing.List[TargetNavigator.Structs.TargetInfoStruct]' = None - currentTarget: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + targetList: typing.List[TargetNavigator.Structs.TargetInfoStruct] = field(default_factory=lambda: []) + currentTarget: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class StatusEnum(MatterIntEnum): @@ -42954,15 +42955,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=1, Type=typing.Optional[str]), ]) - target: 'uint' = 0 - data: 'typing.Optional[str]' = None + target: uint = 0 + data: typing.Optional[str] = None @dataclass class NavigateTargetResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000505 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -42972,8 +42973,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=1, Type=typing.Optional[str]), ]) - status: 'TargetNavigator.Enums.StatusEnum' = 0 - data: 'typing.Optional[str]' = None + status: TargetNavigator.Enums.StatusEnum = 0 + data: typing.Optional[str] = None class Attributes: @dataclass @@ -42990,7 +42991,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[TargetNavigator.Structs.TargetInfoStruct]) - value: 'typing.List[TargetNavigator.Structs.TargetInfoStruct]' = field(default_factory=lambda: []) + value: typing.List[TargetNavigator.Structs.TargetInfoStruct] = field(default_factory=lambda: []) @dataclass class CurrentTarget(ClusterAttributeDescriptor): @@ -43006,7 +43007,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -43022,7 +43023,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -43038,7 +43039,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -43054,7 +43055,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -43070,7 +43071,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -43086,7 +43087,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -43102,7 +43103,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -43124,9 +43125,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=2, Type=bytes), ]) - targetList: 'typing.List[TargetNavigator.Structs.TargetInfoStruct]' = field(default_factory=lambda: []) - currentTarget: 'uint' = 0 - data: 'bytes' = b"" + targetList: typing.List[TargetNavigator.Structs.TargetInfoStruct] = field(default_factory=lambda: []) + currentTarget: uint = 0 + data: bytes = b"" @dataclass @@ -43156,23 +43157,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - currentState: 'MediaPlayback.Enums.PlaybackStateEnum' = None - startTime: 'typing.Union[None, Nullable, uint]' = None - duration: 'typing.Union[None, Nullable, uint]' = None - sampledPosition: 'typing.Union[None, Nullable, MediaPlayback.Structs.PlaybackPositionStruct]' = None - playbackSpeed: 'typing.Optional[float32]' = None - seekRangeEnd: 'typing.Union[None, Nullable, uint]' = None - seekRangeStart: 'typing.Union[None, Nullable, uint]' = None - activeAudioTrack: 'typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct]' = None - availableAudioTracks: 'typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]]' = None - activeTextTrack: 'typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct]' = None - availableTextTracks: 'typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + currentState: MediaPlayback.Enums.PlaybackStateEnum = 0 + startTime: typing.Union[None, Nullable, uint] = None + duration: typing.Union[None, Nullable, uint] = None + sampledPosition: typing.Union[None, Nullable, MediaPlayback.Structs.PlaybackPositionStruct] = None + playbackSpeed: typing.Optional[float32] = None + seekRangeEnd: typing.Union[None, Nullable, uint] = None + seekRangeStart: typing.Union[None, Nullable, uint] = None + activeAudioTrack: typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct] = None + availableAudioTracks: typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]] = None + activeTextTrack: typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct] = None + availableTextTracks: typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class CharacteristicEnum(MatterIntEnum): @@ -43365,7 +43366,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="audioAdvanceUnmuted", Tag=0, Type=typing.Optional[bool]), ]) - audioAdvanceUnmuted: 'typing.Optional[bool]' = None + audioAdvanceUnmuted: typing.Optional[bool] = None @dataclass class FastForward(ClusterCommand): @@ -43381,7 +43382,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="audioAdvanceUnmuted", Tag=0, Type=typing.Optional[bool]), ]) - audioAdvanceUnmuted: 'typing.Optional[bool]' = None + audioAdvanceUnmuted: typing.Optional[bool] = None @dataclass class SkipForward(ClusterCommand): @@ -43397,7 +43398,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="deltaPositionMilliseconds", Tag=0, Type=uint), ]) - deltaPositionMilliseconds: 'uint' = 0 + deltaPositionMilliseconds: uint = 0 @dataclass class SkipBackward(ClusterCommand): @@ -43413,14 +43414,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="deltaPositionMilliseconds", Tag=0, Type=uint), ]) - deltaPositionMilliseconds: 'uint' = 0 + deltaPositionMilliseconds: uint = 0 @dataclass class PlaybackResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000506 command_id: typing.ClassVar[int] = 0x0000000A is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -43430,8 +43431,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=1, Type=typing.Optional[str]), ]) - status: 'MediaPlayback.Enums.StatusEnum' = 0 - data: 'typing.Optional[str]' = None + status: MediaPlayback.Enums.StatusEnum = 0 + data: typing.Optional[str] = None @dataclass class Seek(ClusterCommand): @@ -43447,14 +43448,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="position", Tag=0, Type=uint), ]) - position: 'uint' = 0 + position: uint = 0 @dataclass class ActivateAudioTrack(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000506 command_id: typing.ClassVar[int] = 0x0000000C is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -43464,15 +43465,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="audioOutputIndex", Tag=1, Type=uint), ]) - trackID: 'str' = "" - audioOutputIndex: 'uint' = 0 + trackID: str = "" + audioOutputIndex: uint = 0 @dataclass class ActivateTextTrack(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000506 command_id: typing.ClassVar[int] = 0x0000000D is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -43481,14 +43482,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="trackID", Tag=0, Type=str), ]) - trackID: 'str' = "" + trackID: str = "" @dataclass class DeactivateTextTrack(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000506 command_id: typing.ClassVar[int] = 0x0000000E is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -43511,7 +43512,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=MediaPlayback.Enums.PlaybackStateEnum) - value: 'MediaPlayback.Enums.PlaybackStateEnum' = 0 + value: MediaPlayback.Enums.PlaybackStateEnum = 0 @dataclass class StartTime(ClusterAttributeDescriptor): @@ -43527,7 +43528,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class Duration(ClusterAttributeDescriptor): @@ -43543,7 +43544,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class SampledPosition(ClusterAttributeDescriptor): @@ -43559,7 +43560,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, MediaPlayback.Structs.PlaybackPositionStruct]) - value: 'typing.Union[None, Nullable, MediaPlayback.Structs.PlaybackPositionStruct]' = None + value: typing.Union[None, Nullable, MediaPlayback.Structs.PlaybackPositionStruct] = None @dataclass class PlaybackSpeed(ClusterAttributeDescriptor): @@ -43575,7 +43576,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[float32]) - value: 'typing.Optional[float32]' = None + value: typing.Optional[float32] = None @dataclass class SeekRangeEnd(ClusterAttributeDescriptor): @@ -43591,7 +43592,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class SeekRangeStart(ClusterAttributeDescriptor): @@ -43607,7 +43608,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Union[None, Nullable, uint]' = None + value: typing.Union[None, Nullable, uint] = None @dataclass class ActiveAudioTrack(ClusterAttributeDescriptor): @@ -43623,7 +43624,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct]) - value: 'typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct]' = None + value: typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct] = None @dataclass class AvailableAudioTracks(ClusterAttributeDescriptor): @@ -43639,7 +43640,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]]) - value: 'typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]]' = None + value: typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]] = None @dataclass class ActiveTextTrack(ClusterAttributeDescriptor): @@ -43655,7 +43656,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct]) - value: 'typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct]' = None + value: typing.Union[None, Nullable, MediaPlayback.Structs.TrackStruct] = None @dataclass class AvailableTextTracks(ClusterAttributeDescriptor): @@ -43671,7 +43672,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]]) - value: 'typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]]' = None + value: typing.Union[None, Nullable, typing.List[MediaPlayback.Structs.TrackStruct]] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -43687,7 +43688,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -43703,7 +43704,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -43719,7 +43720,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -43735,7 +43736,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -43751,7 +43752,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -43767,7 +43768,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -43795,15 +43796,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="audioAdvanceUnmuted", Tag=8, Type=bool), ]) - currentState: 'MediaPlayback.Enums.PlaybackStateEnum' = 0 - startTime: 'uint' = 0 - duration: 'uint' = 0 - sampledPosition: 'MediaPlayback.Structs.PlaybackPositionStruct' = field(default_factory=lambda: MediaPlayback.Structs.PlaybackPositionStruct()) - playbackSpeed: 'float32' = 0.0 - seekRangeEnd: 'uint' = 0 - seekRangeStart: 'uint' = 0 - data: 'typing.Optional[bytes]' = None - audioAdvanceUnmuted: 'bool' = False + currentState: MediaPlayback.Enums.PlaybackStateEnum = 0 + startTime: uint = 0 + duration: uint = 0 + sampledPosition: MediaPlayback.Structs.PlaybackPositionStruct = field(default_factory=lambda: MediaPlayback.Structs.PlaybackPositionStruct()) + playbackSpeed: float32 = 0.0 + seekRangeEnd: uint = 0 + seekRangeStart: uint = 0 + data: typing.Optional[bytes] = None + audioAdvanceUnmuted: bool = False @dataclass @@ -43824,14 +43825,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - inputList: 'typing.List[MediaInput.Structs.InputInfoStruct]' = None - currentInput: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + inputList: typing.List[MediaInput.Structs.InputInfoStruct] = field(default_factory=lambda: []) + currentInput: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class InputTypeEnum(MatterIntEnum): @@ -43881,7 +43882,7 @@ class SelectInput(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000507 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -43890,14 +43891,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="index", Tag=0, Type=uint), ]) - index: 'uint' = 0 + index: uint = 0 @dataclass class ShowInputStatus(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000507 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -43910,7 +43911,7 @@ class HideInputStatus(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000507 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -43923,7 +43924,7 @@ class RenameInput(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000507 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -43933,8 +43934,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="name", Tag=1, Type=str), ]) - index: 'uint' = 0 - name: 'str' = "" + index: uint = 0 + name: str = "" class Attributes: @dataclass @@ -43951,7 +43952,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[MediaInput.Structs.InputInfoStruct]) - value: 'typing.List[MediaInput.Structs.InputInfoStruct]' = field(default_factory=lambda: []) + value: typing.List[MediaInput.Structs.InputInfoStruct] = field(default_factory=lambda: []) @dataclass class CurrentInput(ClusterAttributeDescriptor): @@ -43967,7 +43968,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -43983,7 +43984,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -43999,7 +44000,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -44015,7 +44016,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -44031,7 +44032,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -44047,7 +44048,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -44063,7 +44064,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -44082,12 +44083,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Commands: @dataclass @@ -44095,7 +44096,7 @@ class Sleep(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000508 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -44118,7 +44119,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -44134,7 +44135,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -44150,7 +44151,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -44166,7 +44167,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -44182,7 +44183,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -44198,7 +44199,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -44217,12 +44218,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class CECKeyCodeEnum(MatterIntEnum): @@ -44349,14 +44350,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="keyCode", Tag=0, Type=KeypadInput.Enums.CECKeyCodeEnum), ]) - keyCode: 'KeypadInput.Enums.CECKeyCodeEnum' = 0 + keyCode: KeypadInput.Enums.CECKeyCodeEnum = 0 @dataclass class SendKeyResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000509 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -44365,7 +44366,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="status", Tag=0, Type=KeypadInput.Enums.StatusEnum), ]) - status: 'KeypadInput.Enums.StatusEnum' = 0 + status: KeypadInput.Enums.StatusEnum = 0 class Attributes: @dataclass @@ -44382,7 +44383,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -44398,7 +44399,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -44414,7 +44415,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -44430,7 +44431,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -44446,7 +44447,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -44462,7 +44463,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -44483,14 +44484,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - acceptHeader: 'typing.Optional[typing.List[str]]' = None - supportedStreamingProtocols: 'typing.Optional[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + acceptHeader: typing.Optional[typing.List[str]] = None + supportedStreamingProtocols: typing.Optional[uint] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class CharacteristicEnum(MatterIntEnum): @@ -44715,11 +44716,11 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="useCurrentContext", Tag=4, Type=typing.Optional[bool]), ]) - search: 'ContentLauncher.Structs.ContentSearchStruct' = field(default_factory=lambda: ContentLauncher.Structs.ContentSearchStruct()) - autoPlay: 'bool' = False - data: 'typing.Optional[str]' = None - playbackPreferences: 'typing.Optional[ContentLauncher.Structs.PlaybackPreferencesStruct]' = None - useCurrentContext: 'typing.Optional[bool]' = None + search: ContentLauncher.Structs.ContentSearchStruct = field(default_factory=lambda: ContentLauncher.Structs.ContentSearchStruct()) + autoPlay: bool = False + data: typing.Optional[str] = None + playbackPreferences: typing.Optional[ContentLauncher.Structs.PlaybackPreferencesStruct] = None + useCurrentContext: typing.Optional[bool] = None @dataclass class LaunchURL(ClusterCommand): @@ -44737,16 +44738,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="brandingInformation", Tag=2, Type=typing.Optional[ContentLauncher.Structs.BrandingInformationStruct]), ]) - contentURL: 'str' = "" - displayString: 'typing.Optional[str]' = None - brandingInformation: 'typing.Optional[ContentLauncher.Structs.BrandingInformationStruct]' = None + contentURL: str = "" + displayString: typing.Optional[str] = None + brandingInformation: typing.Optional[ContentLauncher.Structs.BrandingInformationStruct] = None @dataclass class LauncherResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050A command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -44756,8 +44757,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=1, Type=typing.Optional[str]), ]) - status: 'ContentLauncher.Enums.StatusEnum' = 0 - data: 'typing.Optional[str]' = None + status: ContentLauncher.Enums.StatusEnum = 0 + data: typing.Optional[str] = None class Attributes: @dataclass @@ -44774,7 +44775,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[str]]) - value: 'typing.Optional[typing.List[str]]' = None + value: typing.Optional[typing.List[str]] = None @dataclass class SupportedStreamingProtocols(ClusterAttributeDescriptor): @@ -44790,7 +44791,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -44806,7 +44807,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -44822,7 +44823,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -44838,7 +44839,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -44854,7 +44855,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -44870,7 +44871,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -44886,7 +44887,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -44907,14 +44908,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - outputList: 'typing.List[AudioOutput.Structs.OutputInfoStruct]' = None - currentOutput: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + outputList: typing.List[AudioOutput.Structs.OutputInfoStruct] = field(default_factory=lambda: []) + currentOutput: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class OutputTypeEnum(MatterIntEnum): @@ -44956,7 +44957,7 @@ class SelectOutput(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050B command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -44965,14 +44966,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="index", Tag=0, Type=uint), ]) - index: 'uint' = 0 + index: uint = 0 @dataclass class RenameOutput(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050B command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -44982,8 +44983,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="name", Tag=1, Type=str), ]) - index: 'uint' = 0 - name: 'str' = "" + index: uint = 0 + name: str = "" class Attributes: @dataclass @@ -45000,7 +45001,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[AudioOutput.Structs.OutputInfoStruct]) - value: 'typing.List[AudioOutput.Structs.OutputInfoStruct]' = field(default_factory=lambda: []) + value: typing.List[AudioOutput.Structs.OutputInfoStruct] = field(default_factory=lambda: []) @dataclass class CurrentOutput(ClusterAttributeDescriptor): @@ -45016,7 +45017,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -45032,7 +45033,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -45048,7 +45049,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -45064,7 +45065,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -45080,7 +45081,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -45096,7 +45097,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -45112,7 +45113,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -45133,14 +45134,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - catalogList: 'typing.Optional[typing.List[uint]]' = None - currentApp: 'typing.Union[None, Nullable, ApplicationLauncher.Structs.ApplicationEPStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + catalogList: typing.Optional[typing.List[uint]] = None + currentApp: typing.Union[None, Nullable, ApplicationLauncher.Structs.ApplicationEPStruct] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class StatusEnum(MatterIntEnum): @@ -45203,8 +45204,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=1, Type=typing.Optional[bytes]), ]) - application: 'typing.Optional[ApplicationLauncher.Structs.ApplicationStruct]' = None - data: 'typing.Optional[bytes]' = None + application: typing.Optional[ApplicationLauncher.Structs.ApplicationStruct] = None + data: typing.Optional[bytes] = None @dataclass class StopApp(ClusterCommand): @@ -45220,7 +45221,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="application", Tag=0, Type=typing.Optional[ApplicationLauncher.Structs.ApplicationStruct]), ]) - application: 'typing.Optional[ApplicationLauncher.Structs.ApplicationStruct]' = None + application: typing.Optional[ApplicationLauncher.Structs.ApplicationStruct] = None @dataclass class HideApp(ClusterCommand): @@ -45236,14 +45237,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="application", Tag=0, Type=typing.Optional[ApplicationLauncher.Structs.ApplicationStruct]), ]) - application: 'typing.Optional[ApplicationLauncher.Structs.ApplicationStruct]' = None + application: typing.Optional[ApplicationLauncher.Structs.ApplicationStruct] = None @dataclass class LauncherResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050C command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -45253,8 +45254,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="data", Tag=1, Type=typing.Optional[bytes]), ]) - status: 'ApplicationLauncher.Enums.StatusEnum' = 0 - data: 'typing.Optional[bytes]' = None + status: ApplicationLauncher.Enums.StatusEnum = 0 + data: typing.Optional[bytes] = None class Attributes: @dataclass @@ -45271,7 +45272,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[uint]]) - value: 'typing.Optional[typing.List[uint]]' = None + value: typing.Optional[typing.List[uint]] = None @dataclass class CurrentApp(ClusterAttributeDescriptor): @@ -45287,7 +45288,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, ApplicationLauncher.Structs.ApplicationEPStruct]) - value: 'typing.Union[None, Nullable, ApplicationLauncher.Structs.ApplicationEPStruct]' = None + value: typing.Union[None, Nullable, ApplicationLauncher.Structs.ApplicationEPStruct] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -45303,7 +45304,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -45319,7 +45320,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -45335,7 +45336,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -45351,7 +45352,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -45367,7 +45368,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -45383,7 +45384,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -45410,20 +45411,20 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - vendorName: 'typing.Optional[str]' = None - vendorID: 'typing.Optional[uint]' = None - applicationName: 'str' = None - productID: 'typing.Optional[uint]' = None - application: 'ApplicationBasic.Structs.ApplicationStruct' = None - status: 'ApplicationBasic.Enums.ApplicationStatusEnum' = None - applicationVersion: 'str' = None - allowedVendorList: 'typing.List[uint]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + vendorName: typing.Optional[str] = None + vendorID: typing.Optional[uint] = None + applicationName: str = "" + productID: typing.Optional[uint] = None + application: ApplicationBasic.Structs.ApplicationStruct = field(default_factory=lambda: ApplicationBasic.Structs.ApplicationStruct()) + status: ApplicationBasic.Enums.ApplicationStatusEnum = 0 + applicationVersion: str = "" + allowedVendorList: typing.List[uint] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class ApplicationStatusEnum(MatterIntEnum): @@ -45466,7 +45467,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class VendorID(ClusterAttributeDescriptor): @@ -45482,7 +45483,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ApplicationName(ClusterAttributeDescriptor): @@ -45498,7 +45499,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class ProductID(ClusterAttributeDescriptor): @@ -45514,7 +45515,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class Application(ClusterAttributeDescriptor): @@ -45530,7 +45531,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=ApplicationBasic.Structs.ApplicationStruct) - value: 'ApplicationBasic.Structs.ApplicationStruct' = field(default_factory=lambda: ApplicationBasic.Structs.ApplicationStruct()) + value: ApplicationBasic.Structs.ApplicationStruct = field(default_factory=lambda: ApplicationBasic.Structs.ApplicationStruct()) @dataclass class Status(ClusterAttributeDescriptor): @@ -45546,7 +45547,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=ApplicationBasic.Enums.ApplicationStatusEnum) - value: 'ApplicationBasic.Enums.ApplicationStatusEnum' = 0 + value: ApplicationBasic.Enums.ApplicationStatusEnum = 0 @dataclass class ApplicationVersion(ClusterAttributeDescriptor): @@ -45562,7 +45563,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class AllowedVendorList(ClusterAttributeDescriptor): @@ -45578,7 +45579,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -45594,7 +45595,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -45610,7 +45611,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -45626,7 +45627,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -45642,7 +45643,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -45658,7 +45659,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -45674,7 +45675,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -45693,12 +45694,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Commands: @dataclass @@ -45719,14 +45720,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - tempAccountIdentifier: 'str' = "" + tempAccountIdentifier: str = "" @dataclass class GetSetupPINResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050E command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -45735,14 +45736,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="setupPIN", Tag=0, Type=str), ]) - setupPIN: 'str' = "" + setupPIN: str = "" @dataclass class Login(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050E command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -45757,16 +45758,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - tempAccountIdentifier: 'str' = "" - setupPIN: 'str' = "" - node: 'typing.Optional[uint]' = None + tempAccountIdentifier: str = "" + setupPIN: str = "" + node: typing.Optional[uint] = None @dataclass class Logout(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050E command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -45779,7 +45780,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: def must_use_timed_invoke(cls) -> bool: return True - node: 'typing.Optional[uint]' = None + node: typing.Optional[uint] = None class Attributes: @dataclass @@ -45796,7 +45797,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -45812,7 +45813,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -45828,7 +45829,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -45844,7 +45845,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -45860,7 +45861,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -45876,7 +45877,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -45896,7 +45897,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="node", Tag=0, Type=typing.Optional[uint]), ]) - node: 'typing.Optional[uint]' = None + node: typing.Optional[uint] = None @dataclass @@ -45923,20 +45924,20 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - enabled: 'bool' = None - onDemandRatings: 'typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]]' = None - onDemandRatingThreshold: 'typing.Optional[str]' = None - scheduledContentRatings: 'typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]]' = None - scheduledContentRatingThreshold: 'typing.Optional[str]' = None - screenDailyTime: 'typing.Optional[uint]' = None - remainingScreenTime: 'typing.Optional[uint]' = None - blockUnrated: 'bool' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + enabled: bool = False + onDemandRatings: typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]] = None + onDemandRatingThreshold: typing.Optional[str] = None + scheduledContentRatings: typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]] = None + scheduledContentRatingThreshold: typing.Optional[str] = None + screenDailyTime: typing.Optional[uint] = None + remainingScreenTime: typing.Optional[uint] = None + blockUnrated: bool = False + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class Feature(IntFlag): @@ -45966,7 +45967,7 @@ class UpdatePIN(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -45976,8 +45977,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="newPIN", Tag=1, Type=str), ]) - oldPIN: 'typing.Optional[str]' = None - newPIN: 'str' = "" + oldPIN: typing.Optional[str] = None + newPIN: str = "" @dataclass class ResetPIN(ClusterCommand): @@ -45997,7 +45998,7 @@ class ResetPINResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46006,14 +46007,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="PINCode", Tag=0, Type=str), ]) - PINCode: 'str' = "" + PINCode: str = "" @dataclass class Enable(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46026,7 +46027,7 @@ class Disable(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46039,7 +46040,7 @@ class AddBonusTime(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46049,15 +46050,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="bonusTime", Tag=1, Type=typing.Optional[uint]), ]) - PINCode: 'typing.Optional[str]' = None - bonusTime: 'typing.Optional[uint]' = None + PINCode: typing.Optional[str] = None + bonusTime: typing.Optional[uint] = None @dataclass class SetScreenDailyTime(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46066,14 +46067,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="screenTime", Tag=0, Type=uint), ]) - screenTime: 'uint' = 0 + screenTime: uint = 0 @dataclass class BlockUnratedContent(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46086,7 +46087,7 @@ class UnblockUnratedContent(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x00000008 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46099,7 +46100,7 @@ class SetOnDemandRatingThreshold(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x00000009 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46108,14 +46109,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="rating", Tag=0, Type=str), ]) - rating: 'str' = "" + rating: str = "" @dataclass class SetScheduledContentRatingThreshold(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x0000050F command_id: typing.ClassVar[int] = 0x0000000A is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46124,7 +46125,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="rating", Tag=0, Type=str), ]) - rating: 'str' = "" + rating: str = "" class Attributes: @dataclass @@ -46141,7 +46142,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class OnDemandRatings(ClusterAttributeDescriptor): @@ -46157,7 +46158,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]]) - value: 'typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]]' = None + value: typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]] = None @dataclass class OnDemandRatingThreshold(ClusterAttributeDescriptor): @@ -46173,7 +46174,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class ScheduledContentRatings(ClusterAttributeDescriptor): @@ -46189,7 +46190,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]]) - value: 'typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]]' = None + value: typing.Optional[typing.List[ContentControl.Structs.RatingNameStruct]] = None @dataclass class ScheduledContentRatingThreshold(ClusterAttributeDescriptor): @@ -46205,7 +46206,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[str]) - value: 'typing.Optional[str]' = None + value: typing.Optional[str] = None @dataclass class ScreenDailyTime(ClusterAttributeDescriptor): @@ -46221,7 +46222,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class RemainingScreenTime(ClusterAttributeDescriptor): @@ -46237,7 +46238,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class BlockUnrated(ClusterAttributeDescriptor): @@ -46253,7 +46254,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -46269,7 +46270,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -46285,7 +46286,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -46301,7 +46302,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -46317,7 +46318,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -46333,7 +46334,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -46349,7 +46350,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -46385,12 +46386,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class StatusEnum(MatterIntEnum): @@ -46418,15 +46419,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="encodingHint", Tag=1, Type=str), ]) - data: 'typing.Optional[str]' = None - encodingHint: 'str' = "" + data: typing.Optional[str] = None + encodingHint: str = "" @dataclass class ContentAppMessageResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000510 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46437,9 +46438,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="encodingHint", Tag=2, Type=typing.Optional[str]), ]) - status: 'ContentAppObserver.Enums.StatusEnum' = 0 - data: 'typing.Optional[str]' = None - encodingHint: 'typing.Optional[str]' = None + status: ContentAppObserver.Enums.StatusEnum = 0 + data: typing.Optional[str] = None + encodingHint: typing.Optional[str] = None class Attributes: @dataclass @@ -46456,7 +46457,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -46472,7 +46473,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -46488,7 +46489,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -46504,7 +46505,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -46520,7 +46521,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -46536,7 +46537,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -46559,16 +46560,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedZoneSources: 'typing.List[ZoneManagement.Enums.ZoneSourceEnum]' = None - zones: 'typing.Optional[typing.List[ZoneManagement.Structs.ZoneInformationStruct]]' = None - timeControl: 'typing.List[ZoneManagement.Structs.ZoneTriggeringTimeControlStruct]' = None - sensitivity: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedZoneSources: typing.List[ZoneManagement.Enums.ZoneSourceEnum] = field(default_factory=lambda: []) + zones: typing.Optional[typing.List[ZoneManagement.Structs.ZoneInformationStruct]] = None + timeControl: typing.List[ZoneManagement.Structs.ZoneTriggeringTimeControlStruct] = field(default_factory=lambda: []) + sensitivity: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class StatusCodeEnum(MatterIntEnum): @@ -46706,14 +46707,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="zone", Tag=0, Type=ZoneManagement.Structs.TwoDCartesianZoneStruct), ]) - zone: 'ZoneManagement.Structs.TwoDCartesianZoneStruct' = field(default_factory=lambda: ZoneManagement.Structs.TwoDCartesianZoneStruct()) + zone: ZoneManagement.Structs.TwoDCartesianZoneStruct = field(default_factory=lambda: ZoneManagement.Structs.TwoDCartesianZoneStruct()) @dataclass class CreateTwoDCartesianZoneResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000550 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46722,14 +46723,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="zoneID", Tag=0, Type=uint), ]) - zoneID: 'uint' = 0 + zoneID: uint = 0 @dataclass class UpdateTwoDCartesianZone(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000550 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46739,8 +46740,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="zone", Tag=1, Type=ZoneManagement.Structs.TwoDCartesianZoneStruct), ]) - zoneID: 'uint' = 0 - zone: 'ZoneManagement.Structs.TwoDCartesianZoneStruct' = field(default_factory=lambda: ZoneManagement.Structs.TwoDCartesianZoneStruct()) + zoneID: uint = 0 + zone: ZoneManagement.Structs.TwoDCartesianZoneStruct = field(default_factory=lambda: ZoneManagement.Structs.TwoDCartesianZoneStruct()) @dataclass class GetTwoDCartesianZone(ClusterCommand): @@ -46756,14 +46757,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="zoneID", Tag=0, Type=typing.Union[None, Nullable, uint]), ]) - zoneID: 'typing.Union[None, Nullable, uint]' = None + zoneID: typing.Union[None, Nullable, uint] = None @dataclass class GetTwoDCartesianZoneResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000550 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46772,14 +46773,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="zones", Tag=0, Type=typing.List[ZoneManagement.Structs.TwoDCartesianZoneStruct]), ]) - zones: 'typing.List[ZoneManagement.Structs.TwoDCartesianZoneStruct]' = field(default_factory=lambda: []) + zones: typing.List[ZoneManagement.Structs.TwoDCartesianZoneStruct] = field(default_factory=lambda: []) @dataclass class RemoveZone(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000550 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -46788,7 +46789,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="zoneID", Tag=0, Type=uint), ]) - zoneID: 'uint' = 0 + zoneID: uint = 0 class Attributes: @dataclass @@ -46805,7 +46806,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ZoneManagement.Enums.ZoneSourceEnum]) - value: 'typing.List[ZoneManagement.Enums.ZoneSourceEnum]' = field(default_factory=lambda: []) + value: typing.List[ZoneManagement.Enums.ZoneSourceEnum] = field(default_factory=lambda: []) @dataclass class Zones(ClusterAttributeDescriptor): @@ -46821,7 +46822,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[ZoneManagement.Structs.ZoneInformationStruct]]) - value: 'typing.Optional[typing.List[ZoneManagement.Structs.ZoneInformationStruct]]' = None + value: typing.Optional[typing.List[ZoneManagement.Structs.ZoneInformationStruct]] = None @dataclass class TimeControl(ClusterAttributeDescriptor): @@ -46837,7 +46838,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[ZoneManagement.Structs.ZoneTriggeringTimeControlStruct]) - value: 'typing.List[ZoneManagement.Structs.ZoneTriggeringTimeControlStruct]' = field(default_factory=lambda: []) + value: typing.List[ZoneManagement.Structs.ZoneTriggeringTimeControlStruct] = field(default_factory=lambda: []) @dataclass class Sensitivity(ClusterAttributeDescriptor): @@ -46853,7 +46854,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -46869,7 +46870,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -46885,7 +46886,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -46901,7 +46902,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -46917,7 +46918,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -46933,7 +46934,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -46949,7 +46950,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -46970,8 +46971,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="reason", Tag=1, Type=ZoneManagement.Enums.ZoneEventTriggeredReasonEnum), ]) - zones: 'typing.List[uint]' = field(default_factory=lambda: []) - reason: 'ZoneManagement.Enums.ZoneEventTriggeredReasonEnum' = 0 + zones: typing.List[uint] = field(default_factory=lambda: []) + reason: ZoneManagement.Enums.ZoneEventTriggeredReasonEnum = 0 @dataclass class ZoneStopped(ClusterEvent): @@ -46991,8 +46992,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="reason", Tag=1, Type=ZoneManagement.Enums.ZoneEventStoppedReasonEnum), ]) - zones: 'typing.List[uint]' = field(default_factory=lambda: []) - reason: 'ZoneManagement.Enums.ZoneEventStoppedReasonEnum' = 0 + zones: typing.List[uint] = field(default_factory=lambda: []) + reason: ZoneManagement.Enums.ZoneEventStoppedReasonEnum = 0 @dataclass @@ -47058,59 +47059,59 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - maxConcurrentVideoEncoders: 'typing.Optional[uint]' = None - maxEncodedPixelRate: 'typing.Optional[uint]' = None - videoSensorParams: 'typing.Optional[CameraAvStreamManagement.Structs.VideoSensorParamsStruct]' = None - nightVisionCapable: 'typing.Optional[bool]' = None - minViewport: 'typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct]' = None - rateDistortionTradeOffPoints: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.RateDistortionTradeOffPointsStruct]]' = None - maxPreRollBufferSize: 'typing.Optional[uint]' = None - microphoneCapabilities: 'typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct]' = None - speakerCapabilities: 'typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct]' = None - twoWayTalkSupport: 'typing.Optional[CameraAvStreamManagement.Enums.TwoWayTalkSupportTypeEnum]' = None - supportedSnapshotParams: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotParamsStruct]]' = None - maxNetworkBandwidth: 'uint' = None - currentFrameRate: 'typing.Optional[uint]' = None - HDRModeEnabled: 'typing.Optional[bool]' = None - currentVideoCodecs: 'typing.Optional[typing.List[CameraAvStreamManagement.Enums.VideoCodecEnum]]' = None - currentSnapshotConfig: 'typing.Optional[CameraAvStreamManagement.Structs.SnapshotParamsStruct]' = None - fabricsUsingCamera: 'typing.List[uint]' = None - allocatedVideoStreams: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.VideoStreamStruct]]' = None - allocatedAudioStreams: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.AudioStreamStruct]]' = None - allocatedSnapshotStreams: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotStreamStruct]]' = None - rankedVideoStreamPrioritiesList: 'typing.Optional[typing.List[CameraAvStreamManagement.Enums.StreamTypeEnum]]' = None - softRecordingPrivacyModeEnabled: 'typing.Optional[bool]' = None - softLivestreamPrivacyModeEnabled: 'typing.Optional[bool]' = None - hardPrivacyModeOn: 'typing.Optional[bool]' = None - nightVision: 'typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum]' = None - nightVisionIllum: 'typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum]' = None - AWBEnabled: 'typing.Optional[bool]' = None - autoShutterSpeedEnabled: 'typing.Optional[bool]' = None - autoISOEnabled: 'typing.Optional[bool]' = None - viewport: 'typing.Optional[CameraAvStreamManagement.Structs.ViewportStruct]' = None - speakerMuted: 'typing.Optional[bool]' = None - speakerVolumeLevel: 'typing.Optional[uint]' = None - speakerMaxLevel: 'typing.Optional[uint]' = None - speakerMinLevel: 'typing.Optional[uint]' = None - microphoneMuted: 'typing.Optional[bool]' = None - microphoneVolumeLevel: 'typing.Optional[uint]' = None - microphoneMaxLevel: 'typing.Optional[uint]' = None - microphoneMinLevel: 'typing.Optional[uint]' = None - microphoneAGCEnabled: 'typing.Optional[bool]' = None - imageRotation: 'typing.Optional[uint]' = None - imageFlipHorizontal: 'typing.Optional[bool]' = None - imageFlipVertical: 'typing.Optional[bool]' = None - localVideoRecordingEnabled: 'typing.Optional[bool]' = None - localSnapshotRecordingEnabled: 'typing.Optional[bool]' = None - statusLightEnabled: 'typing.Optional[bool]' = None - statusLightBrightness: 'typing.Optional[Globals.Enums.ThreeLevelAutoEnum]' = None - depthSensorStatus: 'typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + maxConcurrentVideoEncoders: typing.Optional[uint] = None + maxEncodedPixelRate: typing.Optional[uint] = None + videoSensorParams: typing.Optional[CameraAvStreamManagement.Structs.VideoSensorParamsStruct] = None + nightVisionCapable: typing.Optional[bool] = None + minViewport: typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct] = None + rateDistortionTradeOffPoints: typing.Optional[typing.List[CameraAvStreamManagement.Structs.RateDistortionTradeOffPointsStruct]] = None + maxPreRollBufferSize: typing.Optional[uint] = None + microphoneCapabilities: typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct] = None + speakerCapabilities: typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct] = None + twoWayTalkSupport: typing.Optional[CameraAvStreamManagement.Enums.TwoWayTalkSupportTypeEnum] = None + supportedSnapshotParams: typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotParamsStruct]] = None + maxNetworkBandwidth: uint = 0 + currentFrameRate: typing.Optional[uint] = None + HDRModeEnabled: typing.Optional[bool] = None + currentVideoCodecs: typing.Optional[typing.List[CameraAvStreamManagement.Enums.VideoCodecEnum]] = None + currentSnapshotConfig: typing.Optional[CameraAvStreamManagement.Structs.SnapshotParamsStruct] = None + fabricsUsingCamera: typing.List[uint] = field(default_factory=lambda: []) + allocatedVideoStreams: typing.Optional[typing.List[CameraAvStreamManagement.Structs.VideoStreamStruct]] = None + allocatedAudioStreams: typing.Optional[typing.List[CameraAvStreamManagement.Structs.AudioStreamStruct]] = None + allocatedSnapshotStreams: typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotStreamStruct]] = None + rankedVideoStreamPrioritiesList: typing.Optional[typing.List[CameraAvStreamManagement.Enums.StreamTypeEnum]] = None + softRecordingPrivacyModeEnabled: typing.Optional[bool] = None + softLivestreamPrivacyModeEnabled: typing.Optional[bool] = None + hardPrivacyModeOn: typing.Optional[bool] = None + nightVision: typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum] = None + nightVisionIllum: typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum] = None + AWBEnabled: typing.Optional[bool] = None + autoShutterSpeedEnabled: typing.Optional[bool] = None + autoISOEnabled: typing.Optional[bool] = None + viewport: typing.Optional[CameraAvStreamManagement.Structs.ViewportStruct] = None + speakerMuted: typing.Optional[bool] = None + speakerVolumeLevel: typing.Optional[uint] = None + speakerMaxLevel: typing.Optional[uint] = None + speakerMinLevel: typing.Optional[uint] = None + microphoneMuted: typing.Optional[bool] = None + microphoneVolumeLevel: typing.Optional[uint] = None + microphoneMaxLevel: typing.Optional[uint] = None + microphoneMinLevel: typing.Optional[uint] = None + microphoneAGCEnabled: typing.Optional[bool] = None + imageRotation: typing.Optional[uint] = None + imageFlipHorizontal: typing.Optional[bool] = None + imageFlipVertical: typing.Optional[bool] = None + localVideoRecordingEnabled: typing.Optional[bool] = None + localSnapshotRecordingEnabled: typing.Optional[bool] = None + statusLightEnabled: typing.Optional[bool] = None + statusLightBrightness: typing.Optional[Globals.Enums.ThreeLevelAutoEnum] = None + depthSensorStatus: typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum] = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class AudioCodecEnum(MatterIntEnum): @@ -47388,19 +47389,19 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="bitDepth", Tag=5, Type=uint), ]) - streamType: 'CameraAvStreamManagement.Enums.StreamTypeEnum' = 0 - audioCodec: 'CameraAvStreamManagement.Enums.AudioCodecEnum' = 0 - channelCount: 'uint' = 0 - sampleRate: 'uint' = 0 - bitRate: 'uint' = 0 - bitDepth: 'uint' = 0 + streamType: CameraAvStreamManagement.Enums.StreamTypeEnum = 0 + audioCodec: CameraAvStreamManagement.Enums.AudioCodecEnum = 0 + channelCount: uint = 0 + sampleRate: uint = 0 + bitRate: uint = 0 + bitDepth: uint = 0 @dataclass class AudioStreamAllocateResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47409,14 +47410,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="audioStreamID", Tag=0, Type=uint), ]) - audioStreamID: 'uint' = 0 + audioStreamID: uint = 0 @dataclass class AudioStreamDeallocate(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47425,7 +47426,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="audioStreamID", Tag=0, Type=uint), ]) - audioStreamID: 'uint' = 0 + audioStreamID: uint = 0 @dataclass class VideoStreamAllocate(ClusterCommand): @@ -47452,25 +47453,25 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="OSDEnabled", Tag=11, Type=typing.Optional[bool]), ]) - streamType: 'CameraAvStreamManagement.Enums.StreamTypeEnum' = 0 - videoCodec: 'CameraAvStreamManagement.Enums.VideoCodecEnum' = 0 - minFrameRate: 'uint' = 0 - maxFrameRate: 'uint' = 0 - minResolution: 'CameraAvStreamManagement.Structs.VideoResolutionStruct' = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) - maxResolution: 'CameraAvStreamManagement.Structs.VideoResolutionStruct' = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) - minBitRate: 'uint' = 0 - maxBitRate: 'uint' = 0 - minFragmentLen: 'uint' = 0 - maxFragmentLen: 'uint' = 0 - watermarkEnabled: 'typing.Optional[bool]' = None - OSDEnabled: 'typing.Optional[bool]' = None + streamType: CameraAvStreamManagement.Enums.StreamTypeEnum = 0 + videoCodec: CameraAvStreamManagement.Enums.VideoCodecEnum = 0 + minFrameRate: uint = 0 + maxFrameRate: uint = 0 + minResolution: CameraAvStreamManagement.Structs.VideoResolutionStruct = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) + maxResolution: CameraAvStreamManagement.Structs.VideoResolutionStruct = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) + minBitRate: uint = 0 + maxBitRate: uint = 0 + minFragmentLen: uint = 0 + maxFragmentLen: uint = 0 + watermarkEnabled: typing.Optional[bool] = None + OSDEnabled: typing.Optional[bool] = None @dataclass class VideoStreamAllocateResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47479,14 +47480,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="videoStreamID", Tag=0, Type=uint), ]) - videoStreamID: 'uint' = 0 + videoStreamID: uint = 0 @dataclass class VideoStreamModify(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47498,17 +47499,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="OSDEnabled", Tag=3, Type=typing.Optional[bool]), ]) - videoStreamID: 'uint' = 0 - resolution: 'typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct]' = None - watermarkEnabled: 'typing.Optional[bool]' = None - OSDEnabled: 'typing.Optional[bool]' = None + videoStreamID: uint = 0 + resolution: typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct] = None + watermarkEnabled: typing.Optional[bool] = None + OSDEnabled: typing.Optional[bool] = None @dataclass class VideoStreamDeallocate(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47517,7 +47518,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="videoStreamID", Tag=0, Type=uint), ]) - videoStreamID: 'uint' = 0 + videoStreamID: uint = 0 @dataclass class SnapshotStreamAllocate(ClusterCommand): @@ -47538,19 +47539,19 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="quality", Tag=5, Type=uint), ]) - imageCodec: 'CameraAvStreamManagement.Enums.ImageCodecEnum' = 0 - frameRate: 'uint' = 0 - bitRate: 'uint' = 0 - minResolution: 'CameraAvStreamManagement.Structs.VideoResolutionStruct' = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) - maxResolution: 'CameraAvStreamManagement.Structs.VideoResolutionStruct' = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) - quality: 'uint' = 0 + imageCodec: CameraAvStreamManagement.Enums.ImageCodecEnum = 0 + frameRate: uint = 0 + bitRate: uint = 0 + minResolution: CameraAvStreamManagement.Structs.VideoResolutionStruct = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) + maxResolution: CameraAvStreamManagement.Structs.VideoResolutionStruct = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) + quality: uint = 0 @dataclass class SnapshotStreamAllocateResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x00000008 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47559,14 +47560,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="snapshotStreamID", Tag=0, Type=uint), ]) - snapshotStreamID: 'uint' = 0 + snapshotStreamID: uint = 0 @dataclass class SnapshotStreamDeallocate(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x00000009 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47575,14 +47576,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="snapshotStreamID", Tag=0, Type=uint), ]) - snapshotStreamID: 'uint' = 0 + snapshotStreamID: uint = 0 @dataclass class SetStreamPriorities(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x0000000A is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47591,14 +47592,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="streamPriorities", Tag=0, Type=typing.List[CameraAvStreamManagement.Enums.StreamTypeEnum]), ]) - streamPriorities: 'typing.List[CameraAvStreamManagement.Enums.StreamTypeEnum]' = field(default_factory=lambda: []) + streamPriorities: typing.List[CameraAvStreamManagement.Enums.StreamTypeEnum] = field(default_factory=lambda: []) @dataclass class CaptureSnapshot(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x0000000B is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47608,15 +47609,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="requestedResolution", Tag=1, Type=CameraAvStreamManagement.Structs.VideoResolutionStruct), ]) - snapshotStreamID: 'uint' = 0 - requestedResolution: 'CameraAvStreamManagement.Structs.VideoResolutionStruct' = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) + snapshotStreamID: uint = 0 + requestedResolution: CameraAvStreamManagement.Structs.VideoResolutionStruct = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) @dataclass class CaptureSnapshotResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x0000000C is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47627,16 +47628,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="resolution", Tag=2, Type=CameraAvStreamManagement.Structs.VideoResolutionStruct), ]) - data: 'bytes' = b"" - imageCodec: 'CameraAvStreamManagement.Enums.ImageCodecEnum' = 0 - resolution: 'CameraAvStreamManagement.Structs.VideoResolutionStruct' = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) + data: bytes = b"" + imageCodec: CameraAvStreamManagement.Enums.ImageCodecEnum = 0 + resolution: CameraAvStreamManagement.Structs.VideoResolutionStruct = field(default_factory=lambda: CameraAvStreamManagement.Structs.VideoResolutionStruct()) @dataclass class SetViewport(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x0000000D is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47645,14 +47646,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="viewport", Tag=0, Type=CameraAvStreamManagement.Structs.ViewportStruct), ]) - viewport: 'CameraAvStreamManagement.Structs.ViewportStruct' = field(default_factory=lambda: CameraAvStreamManagement.Structs.ViewportStruct()) + viewport: CameraAvStreamManagement.Structs.ViewportStruct = field(default_factory=lambda: CameraAvStreamManagement.Structs.ViewportStruct()) @dataclass class SetImageRotation(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x0000000E is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47661,14 +47662,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="angle", Tag=0, Type=uint), ]) - angle: 'uint' = 0 + angle: uint = 0 @dataclass class SetImageFlipHorizontal(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x0000000F is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47677,14 +47678,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="enabled", Tag=0, Type=bool), ]) - enabled: 'bool' = False + enabled: bool = False @dataclass class SetImageFlipVertical(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000551 command_id: typing.ClassVar[int] = 0x00000010 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -47693,7 +47694,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="enabled", Tag=0, Type=bool), ]) - enabled: 'bool' = False + enabled: bool = False class Attributes: @dataclass @@ -47710,7 +47711,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MaxEncodedPixelRate(ClusterAttributeDescriptor): @@ -47726,7 +47727,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class VideoSensorParams(ClusterAttributeDescriptor): @@ -47742,7 +47743,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Structs.VideoSensorParamsStruct]) - value: 'typing.Optional[CameraAvStreamManagement.Structs.VideoSensorParamsStruct]' = None + value: typing.Optional[CameraAvStreamManagement.Structs.VideoSensorParamsStruct] = None @dataclass class NightVisionCapable(ClusterAttributeDescriptor): @@ -47758,7 +47759,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class MinViewport(ClusterAttributeDescriptor): @@ -47774,7 +47775,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct]) - value: 'typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct]' = None + value: typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct] = None @dataclass class RateDistortionTradeOffPoints(ClusterAttributeDescriptor): @@ -47790,7 +47791,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[CameraAvStreamManagement.Structs.RateDistortionTradeOffPointsStruct]]) - value: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.RateDistortionTradeOffPointsStruct]]' = None + value: typing.Optional[typing.List[CameraAvStreamManagement.Structs.RateDistortionTradeOffPointsStruct]] = None @dataclass class MaxPreRollBufferSize(ClusterAttributeDescriptor): @@ -47806,7 +47807,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MicrophoneCapabilities(ClusterAttributeDescriptor): @@ -47822,7 +47823,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct]) - value: 'typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct]' = None + value: typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct] = None @dataclass class SpeakerCapabilities(ClusterAttributeDescriptor): @@ -47838,7 +47839,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct]) - value: 'typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct]' = None + value: typing.Optional[CameraAvStreamManagement.Structs.AudioCapabilitiesStruct] = None @dataclass class TwoWayTalkSupport(ClusterAttributeDescriptor): @@ -47854,7 +47855,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Enums.TwoWayTalkSupportTypeEnum]) - value: 'typing.Optional[CameraAvStreamManagement.Enums.TwoWayTalkSupportTypeEnum]' = None + value: typing.Optional[CameraAvStreamManagement.Enums.TwoWayTalkSupportTypeEnum] = None @dataclass class SupportedSnapshotParams(ClusterAttributeDescriptor): @@ -47870,7 +47871,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotParamsStruct]]) - value: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotParamsStruct]]' = None + value: typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotParamsStruct]] = None @dataclass class MaxNetworkBandwidth(ClusterAttributeDescriptor): @@ -47886,7 +47887,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class CurrentFrameRate(ClusterAttributeDescriptor): @@ -47902,7 +47903,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class HDRModeEnabled(ClusterAttributeDescriptor): @@ -47918,7 +47919,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class CurrentVideoCodecs(ClusterAttributeDescriptor): @@ -47934,7 +47935,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[CameraAvStreamManagement.Enums.VideoCodecEnum]]) - value: 'typing.Optional[typing.List[CameraAvStreamManagement.Enums.VideoCodecEnum]]' = None + value: typing.Optional[typing.List[CameraAvStreamManagement.Enums.VideoCodecEnum]] = None @dataclass class CurrentSnapshotConfig(ClusterAttributeDescriptor): @@ -47950,7 +47951,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Structs.SnapshotParamsStruct]) - value: 'typing.Optional[CameraAvStreamManagement.Structs.SnapshotParamsStruct]' = None + value: typing.Optional[CameraAvStreamManagement.Structs.SnapshotParamsStruct] = None @dataclass class FabricsUsingCamera(ClusterAttributeDescriptor): @@ -47966,7 +47967,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AllocatedVideoStreams(ClusterAttributeDescriptor): @@ -47982,7 +47983,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[CameraAvStreamManagement.Structs.VideoStreamStruct]]) - value: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.VideoStreamStruct]]' = None + value: typing.Optional[typing.List[CameraAvStreamManagement.Structs.VideoStreamStruct]] = None @dataclass class AllocatedAudioStreams(ClusterAttributeDescriptor): @@ -47998,7 +47999,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[CameraAvStreamManagement.Structs.AudioStreamStruct]]) - value: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.AudioStreamStruct]]' = None + value: typing.Optional[typing.List[CameraAvStreamManagement.Structs.AudioStreamStruct]] = None @dataclass class AllocatedSnapshotStreams(ClusterAttributeDescriptor): @@ -48014,7 +48015,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotStreamStruct]]) - value: 'typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotStreamStruct]]' = None + value: typing.Optional[typing.List[CameraAvStreamManagement.Structs.SnapshotStreamStruct]] = None @dataclass class RankedVideoStreamPrioritiesList(ClusterAttributeDescriptor): @@ -48030,7 +48031,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[CameraAvStreamManagement.Enums.StreamTypeEnum]]) - value: 'typing.Optional[typing.List[CameraAvStreamManagement.Enums.StreamTypeEnum]]' = None + value: typing.Optional[typing.List[CameraAvStreamManagement.Enums.StreamTypeEnum]] = None @dataclass class SoftRecordingPrivacyModeEnabled(ClusterAttributeDescriptor): @@ -48046,7 +48047,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class SoftLivestreamPrivacyModeEnabled(ClusterAttributeDescriptor): @@ -48062,7 +48063,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class HardPrivacyModeOn(ClusterAttributeDescriptor): @@ -48078,7 +48079,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class NightVision(ClusterAttributeDescriptor): @@ -48094,7 +48095,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum]) - value: 'typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum]' = None + value: typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum] = None @dataclass class NightVisionIllum(ClusterAttributeDescriptor): @@ -48110,7 +48111,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum]) - value: 'typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum]' = None + value: typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum] = None @dataclass class AWBEnabled(ClusterAttributeDescriptor): @@ -48126,7 +48127,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class AutoShutterSpeedEnabled(ClusterAttributeDescriptor): @@ -48142,7 +48143,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class AutoISOEnabled(ClusterAttributeDescriptor): @@ -48158,7 +48159,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class Viewport(ClusterAttributeDescriptor): @@ -48174,7 +48175,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Structs.ViewportStruct]) - value: 'typing.Optional[CameraAvStreamManagement.Structs.ViewportStruct]' = None + value: typing.Optional[CameraAvStreamManagement.Structs.ViewportStruct] = None @dataclass class SpeakerMuted(ClusterAttributeDescriptor): @@ -48190,7 +48191,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class SpeakerVolumeLevel(ClusterAttributeDescriptor): @@ -48206,7 +48207,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SpeakerMaxLevel(ClusterAttributeDescriptor): @@ -48222,7 +48223,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class SpeakerMinLevel(ClusterAttributeDescriptor): @@ -48238,7 +48239,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MicrophoneMuted(ClusterAttributeDescriptor): @@ -48254,7 +48255,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class MicrophoneVolumeLevel(ClusterAttributeDescriptor): @@ -48270,7 +48271,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MicrophoneMaxLevel(ClusterAttributeDescriptor): @@ -48286,7 +48287,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MicrophoneMinLevel(ClusterAttributeDescriptor): @@ -48302,7 +48303,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class MicrophoneAGCEnabled(ClusterAttributeDescriptor): @@ -48318,7 +48319,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class ImageRotation(ClusterAttributeDescriptor): @@ -48334,7 +48335,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class ImageFlipHorizontal(ClusterAttributeDescriptor): @@ -48350,7 +48351,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class ImageFlipVertical(ClusterAttributeDescriptor): @@ -48366,7 +48367,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class LocalVideoRecordingEnabled(ClusterAttributeDescriptor): @@ -48382,7 +48383,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class LocalSnapshotRecordingEnabled(ClusterAttributeDescriptor): @@ -48398,7 +48399,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class StatusLightEnabled(ClusterAttributeDescriptor): @@ -48414,7 +48415,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class StatusLightBrightness(ClusterAttributeDescriptor): @@ -48430,7 +48431,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[Globals.Enums.ThreeLevelAutoEnum]) - value: 'typing.Optional[Globals.Enums.ThreeLevelAutoEnum]' = None + value: typing.Optional[Globals.Enums.ThreeLevelAutoEnum] = None @dataclass class DepthSensorStatus(ClusterAttributeDescriptor): @@ -48446,7 +48447,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum]) - value: 'typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum]' = None + value: typing.Optional[CameraAvStreamManagement.Enums.TriStateAutoEnum] = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -48462,7 +48463,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -48478,7 +48479,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -48494,7 +48495,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -48510,7 +48511,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -48526,7 +48527,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -48542,7 +48543,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -48572,17 +48573,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="maxFragmentLen", Tag=10, Type=typing.Optional[uint]), ]) - videoStreamID: 'uint' = 0 - streamType: 'typing.Optional[CameraAvStreamManagement.Enums.StreamTypeEnum]' = None - videoCodec: 'typing.Optional[CameraAvStreamManagement.Enums.VideoCodecEnum]' = None - minFrameRate: 'typing.Optional[uint]' = None - maxFrameRate: 'typing.Optional[uint]' = None - minResolution: 'typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct]' = None - maxResolution: 'typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct]' = None - minBitRate: 'typing.Optional[uint]' = None - maxBitRate: 'typing.Optional[uint]' = None - minFragmentLen: 'typing.Optional[uint]' = None - maxFragmentLen: 'typing.Optional[uint]' = None + videoStreamID: uint = 0 + streamType: typing.Optional[CameraAvStreamManagement.Enums.StreamTypeEnum] = None + videoCodec: typing.Optional[CameraAvStreamManagement.Enums.VideoCodecEnum] = None + minFrameRate: typing.Optional[uint] = None + maxFrameRate: typing.Optional[uint] = None + minResolution: typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct] = None + maxResolution: typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct] = None + minBitRate: typing.Optional[uint] = None + maxBitRate: typing.Optional[uint] = None + minFragmentLen: typing.Optional[uint] = None + maxFragmentLen: typing.Optional[uint] = None @dataclass class AudioStreamChanged(ClusterEvent): @@ -48607,13 +48608,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="bitDepth", Tag=6, Type=typing.Optional[uint]), ]) - audioStreamID: 'uint' = 0 - streamType: 'typing.Optional[CameraAvStreamManagement.Enums.StreamTypeEnum]' = None - audioCodec: 'typing.Optional[CameraAvStreamManagement.Enums.AudioCodecEnum]' = None - channelCount: 'typing.Optional[uint]' = None - sampleRate: 'typing.Optional[uint]' = None - bitRate: 'typing.Optional[uint]' = None - bitDepth: 'typing.Optional[uint]' = None + audioStreamID: uint = 0 + streamType: typing.Optional[CameraAvStreamManagement.Enums.StreamTypeEnum] = None + audioCodec: typing.Optional[CameraAvStreamManagement.Enums.AudioCodecEnum] = None + channelCount: typing.Optional[uint] = None + sampleRate: typing.Optional[uint] = None + bitRate: typing.Optional[uint] = None + bitDepth: typing.Optional[uint] = None @dataclass class SnapshotStreamChanged(ClusterEvent): @@ -48638,13 +48639,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="quality", Tag=6, Type=typing.Optional[uint]), ]) - snapshotStreamID: 'uint' = 0 - imageCodec: 'typing.Optional[CameraAvStreamManagement.Enums.ImageCodecEnum]' = None - frameRate: 'typing.Optional[uint]' = None - bitRate: 'typing.Optional[uint]' = None - minResolution: 'typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct]' = None - maxResolution: 'typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct]' = None - quality: 'typing.Optional[uint]' = None + snapshotStreamID: uint = 0 + imageCodec: typing.Optional[CameraAvStreamManagement.Enums.ImageCodecEnum] = None + frameRate: typing.Optional[uint] = None + bitRate: typing.Optional[uint] = None + minResolution: typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct] = None + maxResolution: typing.Optional[CameraAvStreamManagement.Structs.VideoResolutionStruct] = None + quality: typing.Optional[uint] = None @dataclass @@ -48664,13 +48665,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - currentSessions: 'typing.List[WebRTCTransportProvider.Structs.WebRTCSessionStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + currentSessions: typing.List[WebRTCTransportProvider.Structs.WebRTCSessionStruct] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class StreamTypeEnum(MatterIntEnum): @@ -48768,19 +48769,19 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="metadataOptions", Tag=5, Type=typing.Optional[uint]), ]) - streamType: 'WebRTCTransportProvider.Enums.StreamTypeEnum' = 0 - videoStreamID: 'typing.Union[None, Nullable, uint]' = None - audioStreamID: 'typing.Union[None, Nullable, uint]' = None - ICEServers: 'typing.Optional[typing.List[WebRTCTransportProvider.Structs.ICEServerStruct]]' = None - ICETransportPolicy: 'typing.Optional[str]' = None - metadataOptions: 'typing.Optional[uint]' = None + streamType: WebRTCTransportProvider.Enums.StreamTypeEnum = 0 + videoStreamID: typing.Union[None, Nullable, uint] = None + audioStreamID: typing.Union[None, Nullable, uint] = None + ICEServers: typing.Optional[typing.List[WebRTCTransportProvider.Structs.ICEServerStruct]] = None + ICETransportPolicy: typing.Optional[str] = None + metadataOptions: typing.Optional[uint] = None @dataclass class SolicitOfferResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000553 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -48792,10 +48793,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="audioStreamID", Tag=3, Type=typing.Union[None, Nullable, uint]), ]) - webRTCSessionID: 'uint' = 0 - deferredOffer: 'bool' = False - videoStreamID: 'typing.Union[None, Nullable, uint]' = None - audioStreamID: 'typing.Union[None, Nullable, uint]' = None + webRTCSessionID: uint = 0 + deferredOffer: bool = False + videoStreamID: typing.Union[None, Nullable, uint] = None + audioStreamID: typing.Union[None, Nullable, uint] = None @dataclass class ProvideOffer(ClusterCommand): @@ -48818,21 +48819,21 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="metadataOptions", Tag=7, Type=typing.Optional[uint]), ]) - webRTCSessionID: 'typing.Union[Nullable, uint]' = NullValue - sdp: 'str' = "" - streamType: 'WebRTCTransportProvider.Enums.StreamTypeEnum' = 0 - videoStreamID: 'typing.Union[None, Nullable, uint]' = None - audioStreamID: 'typing.Union[None, Nullable, uint]' = None - ICEServers: 'typing.Optional[typing.List[WebRTCTransportProvider.Structs.ICEServerStruct]]' = None - ICETransportPolicy: 'typing.Optional[str]' = None - metadataOptions: 'typing.Optional[uint]' = None + webRTCSessionID: typing.Union[Nullable, uint] = NullValue + sdp: str = "" + streamType: WebRTCTransportProvider.Enums.StreamTypeEnum = 0 + videoStreamID: typing.Union[None, Nullable, uint] = None + audioStreamID: typing.Union[None, Nullable, uint] = None + ICEServers: typing.Optional[typing.List[WebRTCTransportProvider.Structs.ICEServerStruct]] = None + ICETransportPolicy: typing.Optional[str] = None + metadataOptions: typing.Optional[uint] = None @dataclass class ProvideOfferResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000553 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -48843,16 +48844,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="audioStreamID", Tag=2, Type=uint), ]) - webRTCSessionID: 'uint' = 0 - videoStreamID: 'uint' = 0 - audioStreamID: 'uint' = 0 + webRTCSessionID: uint = 0 + videoStreamID: uint = 0 + audioStreamID: uint = 0 @dataclass class ProvideAnswer(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000553 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -48862,15 +48863,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sdp", Tag=1, Type=str), ]) - webRTCSessionID: 'uint' = 0 - sdp: 'str' = "" + webRTCSessionID: uint = 0 + sdp: str = "" @dataclass class ProvideICECandidate(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000553 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -48880,15 +48881,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="ICECandidate", Tag=1, Type=str), ]) - webRTCSessionID: 'uint' = 0 - ICECandidate: 'str' = "" + webRTCSessionID: uint = 0 + ICECandidate: str = "" @dataclass class EndSession(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000553 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -48898,8 +48899,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="reason", Tag=1, Type=WebRTCTransportProvider.Enums.WebRTCEndReasonEnum), ]) - webRTCSessionID: 'uint' = 0 - reason: 'WebRTCTransportProvider.Enums.WebRTCEndReasonEnum' = 0 + webRTCSessionID: uint = 0 + reason: WebRTCTransportProvider.Enums.WebRTCEndReasonEnum = 0 class Attributes: @dataclass @@ -48916,7 +48917,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[WebRTCTransportProvider.Structs.WebRTCSessionStruct]) - value: 'typing.List[WebRTCTransportProvider.Structs.WebRTCSessionStruct]' = field(default_factory=lambda: []) + value: typing.List[WebRTCTransportProvider.Structs.WebRTCSessionStruct] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -48932,7 +48933,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -48948,7 +48949,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -48964,7 +48965,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -48980,7 +48981,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -48996,7 +48997,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -49012,7 +49013,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -49032,13 +49033,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - currentSessions: 'typing.List[WebRTCTransportRequestor.Structs.WebRTCSessionStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + currentSessions: typing.List[WebRTCTransportRequestor.Structs.WebRTCSessionStruct] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class StreamTypeEnum(MatterIntEnum): @@ -49122,7 +49123,7 @@ class Offer(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000554 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -49134,17 +49135,17 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="ICETransportPolicy", Tag=3, Type=typing.Optional[str]), ]) - webRTCSessionID: 'uint' = 0 - sdp: 'str' = "" - ICEServers: 'typing.Optional[typing.List[WebRTCTransportRequestor.Structs.ICEServerStruct]]' = None - ICETransportPolicy: 'typing.Optional[str]' = None + webRTCSessionID: uint = 0 + sdp: str = "" + ICEServers: typing.Optional[typing.List[WebRTCTransportRequestor.Structs.ICEServerStruct]] = None + ICETransportPolicy: typing.Optional[str] = None @dataclass class Answer(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000554 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -49154,15 +49155,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="sdp", Tag=1, Type=str), ]) - webRTCSessionID: 'uint' = 0 - sdp: 'str' = "" + webRTCSessionID: uint = 0 + sdp: str = "" @dataclass class ICECandidate(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000554 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -49172,15 +49173,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="ICECandidate", Tag=1, Type=str), ]) - webRTCSessionID: 'uint' = 0 - ICECandidate: 'str' = "" + webRTCSessionID: uint = 0 + ICECandidate: str = "" @dataclass class End(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000554 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -49190,8 +49191,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="reason", Tag=1, Type=WebRTCTransportRequestor.Enums.WebRTCEndReasonEnum), ]) - webRTCSessionID: 'uint' = 0 - reason: 'WebRTCTransportRequestor.Enums.WebRTCEndReasonEnum' = 0 + webRTCSessionID: uint = 0 + reason: WebRTCTransportRequestor.Enums.WebRTCEndReasonEnum = 0 class Attributes: @dataclass @@ -49208,7 +49209,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[WebRTCTransportRequestor.Structs.WebRTCSessionStruct]) - value: 'typing.List[WebRTCTransportRequestor.Structs.WebRTCSessionStruct]' = field(default_factory=lambda: []) + value: typing.List[WebRTCTransportRequestor.Structs.WebRTCSessionStruct] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -49224,7 +49225,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -49240,7 +49241,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -49256,7 +49257,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -49272,7 +49273,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -49288,7 +49289,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -49304,7 +49305,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -49326,15 +49327,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - installedChimeSounds: 'typing.List[Chime.Structs.ChimeSoundStruct]' = None - activeChimeID: 'uint' = None - enabled: 'bool' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + installedChimeSounds: typing.List[Chime.Structs.ChimeSoundStruct] = field(default_factory=lambda: []) + activeChimeID: uint = 0 + enabled: bool = False + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Structs: @dataclass @@ -49356,7 +49357,7 @@ class PlayChimeSound(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000556 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -49379,7 +49380,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[Chime.Structs.ChimeSoundStruct]) - value: 'typing.List[Chime.Structs.ChimeSoundStruct]' = field(default_factory=lambda: []) + value: typing.List[Chime.Structs.ChimeSoundStruct] = field(default_factory=lambda: []) @dataclass class ActiveChimeID(ClusterAttributeDescriptor): @@ -49395,7 +49396,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Enabled(ClusterAttributeDescriptor): @@ -49411,7 +49412,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -49427,7 +49428,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -49443,7 +49444,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -49459,7 +49460,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -49475,7 +49476,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -49491,7 +49492,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -49507,7 +49508,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -49528,14 +49529,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - deviceDirectory: 'typing.List[EcosystemInformation.Structs.EcosystemDeviceStruct]' = None - locationDirectory: 'typing.List[EcosystemInformation.Structs.EcosystemLocationStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + deviceDirectory: typing.List[EcosystemInformation.Structs.EcosystemDeviceStruct] = field(default_factory=lambda: []) + locationDirectory: typing.List[EcosystemInformation.Structs.EcosystemLocationStruct] = field(default_factory=lambda: []) + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Structs: @dataclass @@ -49608,7 +49609,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[EcosystemInformation.Structs.EcosystemDeviceStruct]) - value: 'typing.List[EcosystemInformation.Structs.EcosystemDeviceStruct]' = field(default_factory=lambda: []) + value: typing.List[EcosystemInformation.Structs.EcosystemDeviceStruct] = field(default_factory=lambda: []) @dataclass class LocationDirectory(ClusterAttributeDescriptor): @@ -49624,7 +49625,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[EcosystemInformation.Structs.EcosystemLocationStruct]) - value: 'typing.List[EcosystemInformation.Structs.EcosystemLocationStruct]' = field(default_factory=lambda: []) + value: typing.List[EcosystemInformation.Structs.EcosystemLocationStruct] = field(default_factory=lambda: []) @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -49640,7 +49641,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -49656,7 +49657,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -49672,7 +49673,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -49688,7 +49689,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -49704,7 +49705,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -49720,7 +49721,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -49740,13 +49741,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - supportedDeviceCategories: 'uint' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + supportedDeviceCategories: uint = 0 + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Bitmaps: class SupportedDeviceCategoryBitmap(IntFlag): @@ -49758,7 +49759,7 @@ class RequestCommissioningApproval(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000751 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -49770,10 +49771,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="label", Tag=3, Type=typing.Optional[str]), ]) - requestID: 'uint' = 0 - vendorID: 'uint' = 0 - productID: 'uint' = 0 - label: 'typing.Optional[str]' = None + requestID: uint = 0 + vendorID: uint = 0 + productID: uint = 0 + label: typing.Optional[str] = None @dataclass class CommissionNode(ClusterCommand): @@ -49790,15 +49791,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="responseTimeoutSeconds", Tag=1, Type=uint), ]) - requestID: 'uint' = 0 - responseTimeoutSeconds: 'uint' = 0 + requestID: uint = 0 + responseTimeoutSeconds: uint = 0 @dataclass class ReverseOpenCommissioningWindow(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000751 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -49811,11 +49812,11 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="salt", Tag=4, Type=bytes), ]) - commissioningTimeout: 'uint' = 0 - PAKEPasscodeVerifier: 'bytes' = b"" - discriminator: 'uint' = 0 - iterations: 'uint' = 0 - salt: 'bytes' = b"" + commissioningTimeout: uint = 0 + PAKEPasscodeVerifier: bytes = b"" + discriminator: uint = 0 + iterations: uint = 0 + salt: bytes = b"" class Attributes: @dataclass @@ -49832,7 +49833,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -49848,7 +49849,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -49864,7 +49865,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -49880,7 +49881,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -49896,7 +49897,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -49912,7 +49913,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -49928,7 +49929,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -49951,10 +49952,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=254, Type=uint), ]) - requestID: 'uint' = 0 - clientNodeID: 'uint' = 0 - statusCode: 'uint' = 0 - fabricIndex: 'uint' = 0 + requestID: uint = 0 + clientNodeID: uint = 0 + statusCode: uint = 0 + fabricIndex: uint = 0 @dataclass @@ -50062,101 +50063,101 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="meiInt8u", Tag=0xFFF24F01, Type=uint), ]) - boolean: 'bool' = None - bitmap8: 'uint' = None - bitmap16: 'uint' = None - bitmap32: 'uint' = None - bitmap64: 'uint' = None - int8u: 'uint' = None - int16u: 'uint' = None - int24u: 'uint' = None - int32u: 'uint' = None - int40u: 'uint' = None - int48u: 'uint' = None - int56u: 'uint' = None - int64u: 'uint' = None - int8s: 'int' = None - int16s: 'int' = None - int24s: 'int' = None - int32s: 'int' = None - int40s: 'int' = None - int48s: 'int' = None - int56s: 'int' = None - int64s: 'int' = None - enum8: 'uint' = None - enum16: 'uint' = None - floatSingle: 'float32' = None - floatDouble: 'float' = None - octetString: 'bytes' = None - listInt8u: 'typing.List[uint]' = None - listOctetString: 'typing.List[bytes]' = None - listStructOctetString: 'typing.List[UnitTesting.Structs.TestListStructOctet]' = None - longOctetString: 'bytes' = None - charString: 'str' = None - longCharString: 'str' = None - epochUs: 'uint' = None - epochS: 'uint' = None - vendorId: 'uint' = None - listNullablesAndOptionalsStruct: 'typing.List[UnitTesting.Structs.NullablesAndOptionalsStruct]' = None - enumAttr: 'UnitTesting.Enums.SimpleEnum' = None - structAttr: 'UnitTesting.Structs.SimpleStruct' = None - rangeRestrictedInt8u: 'uint' = None - rangeRestrictedInt8s: 'int' = None - rangeRestrictedInt16u: 'uint' = None - rangeRestrictedInt16s: 'int' = None - listLongOctetString: 'typing.List[bytes]' = None - listFabricScoped: 'typing.List[UnitTesting.Structs.TestFabricScoped]' = None - timedWriteBoolean: 'bool' = None - generalErrorBoolean: 'bool' = None - clusterErrorBoolean: 'bool' = None - globalEnum: 'Globals.Enums.TestGlobalEnum' = None - globalStruct: 'Globals.Structs.TestGlobalStruct' = None - unsupported: 'typing.Optional[bool]' = None - readFailureCode: 'typing.Optional[uint]' = None - failureInt32U: 'typing.Optional[uint]' = None - nullableBoolean: 'typing.Union[Nullable, bool]' = None - nullableBitmap8: 'typing.Union[Nullable, uint]' = None - nullableBitmap16: 'typing.Union[Nullable, uint]' = None - nullableBitmap32: 'typing.Union[Nullable, uint]' = None - nullableBitmap64: 'typing.Union[Nullable, uint]' = None - nullableInt8u: 'typing.Union[Nullable, uint]' = None - nullableInt16u: 'typing.Union[Nullable, uint]' = None - nullableInt24u: 'typing.Union[Nullable, uint]' = None - nullableInt32u: 'typing.Union[Nullable, uint]' = None - nullableInt40u: 'typing.Union[Nullable, uint]' = None - nullableInt48u: 'typing.Union[Nullable, uint]' = None - nullableInt56u: 'typing.Union[Nullable, uint]' = None - nullableInt64u: 'typing.Union[Nullable, uint]' = None - nullableInt8s: 'typing.Union[Nullable, int]' = None - nullableInt16s: 'typing.Union[Nullable, int]' = None - nullableInt24s: 'typing.Union[Nullable, int]' = None - nullableInt32s: 'typing.Union[Nullable, int]' = None - nullableInt40s: 'typing.Union[Nullable, int]' = None - nullableInt48s: 'typing.Union[Nullable, int]' = None - nullableInt56s: 'typing.Union[Nullable, int]' = None - nullableInt64s: 'typing.Union[Nullable, int]' = None - nullableEnum8: 'typing.Union[Nullable, uint]' = None - nullableEnum16: 'typing.Union[Nullable, uint]' = None - nullableFloatSingle: 'typing.Union[Nullable, float32]' = None - nullableFloatDouble: 'typing.Union[Nullable, float]' = None - nullableOctetString: 'typing.Union[Nullable, bytes]' = None - nullableCharString: 'typing.Union[Nullable, str]' = None - nullableEnumAttr: 'typing.Union[Nullable, UnitTesting.Enums.SimpleEnum]' = None - nullableStruct: 'typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]' = None - nullableRangeRestrictedInt8u: 'typing.Union[Nullable, uint]' = None - nullableRangeRestrictedInt8s: 'typing.Union[Nullable, int]' = None - nullableRangeRestrictedInt16u: 'typing.Union[Nullable, uint]' = None - nullableRangeRestrictedInt16s: 'typing.Union[Nullable, int]' = None - writeOnlyInt8u: 'typing.Optional[uint]' = None - nullableGlobalEnum: 'typing.Union[Nullable, Globals.Enums.TestGlobalEnum]' = None - nullableGlobalStruct: 'typing.Union[Nullable, Globals.Structs.TestGlobalStruct]' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None - meiInt8u: 'uint' = None + boolean: bool = False + bitmap8: uint = 0 + bitmap16: uint = 0 + bitmap32: uint = 0 + bitmap64: uint = 0 + int8u: uint = 0 + int16u: uint = 0 + int24u: uint = 0 + int32u: uint = 0 + int40u: uint = 0 + int48u: uint = 0 + int56u: uint = 0 + int64u: uint = 0 + int8s: int = 0 + int16s: int = 0 + int24s: int = 0 + int32s: int = 0 + int40s: int = 0 + int48s: int = 0 + int56s: int = 0 + int64s: int = 0 + enum8: uint = 0 + enum16: uint = 0 + floatSingle: float32 = 0.0 + floatDouble: float = 0.0 + octetString: bytes = b"" + listInt8u: typing.List[uint] = field(default_factory=lambda: []) + listOctetString: typing.List[bytes] = field(default_factory=lambda: []) + listStructOctetString: typing.List[UnitTesting.Structs.TestListStructOctet] = field(default_factory=lambda: []) + longOctetString: bytes = b"" + charString: str = "" + longCharString: str = "" + epochUs: uint = 0 + epochS: uint = 0 + vendorId: uint = 0 + listNullablesAndOptionalsStruct: typing.List[UnitTesting.Structs.NullablesAndOptionalsStruct] = field(default_factory=lambda: []) + enumAttr: UnitTesting.Enums.SimpleEnum = 0 + structAttr: UnitTesting.Structs.SimpleStruct = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) + rangeRestrictedInt8u: uint = 0 + rangeRestrictedInt8s: int = 0 + rangeRestrictedInt16u: uint = 0 + rangeRestrictedInt16s: int = 0 + listLongOctetString: typing.List[bytes] = field(default_factory=lambda: []) + listFabricScoped: typing.List[UnitTesting.Structs.TestFabricScoped] = field(default_factory=lambda: []) + timedWriteBoolean: bool = False + generalErrorBoolean: bool = False + clusterErrorBoolean: bool = False + globalEnum: Globals.Enums.TestGlobalEnum = 0 + globalStruct: Globals.Structs.TestGlobalStruct = field(default_factory=lambda: Globals.Structs.TestGlobalStruct()) + unsupported: typing.Optional[bool] = None + readFailureCode: typing.Optional[uint] = None + failureInt32U: typing.Optional[uint] = None + nullableBoolean: typing.Union[Nullable, bool] = NullValue + nullableBitmap8: typing.Union[Nullable, uint] = NullValue + nullableBitmap16: typing.Union[Nullable, uint] = NullValue + nullableBitmap32: typing.Union[Nullable, uint] = NullValue + nullableBitmap64: typing.Union[Nullable, uint] = NullValue + nullableInt8u: typing.Union[Nullable, uint] = NullValue + nullableInt16u: typing.Union[Nullable, uint] = NullValue + nullableInt24u: typing.Union[Nullable, uint] = NullValue + nullableInt32u: typing.Union[Nullable, uint] = NullValue + nullableInt40u: typing.Union[Nullable, uint] = NullValue + nullableInt48u: typing.Union[Nullable, uint] = NullValue + nullableInt56u: typing.Union[Nullable, uint] = NullValue + nullableInt64u: typing.Union[Nullable, uint] = NullValue + nullableInt8s: typing.Union[Nullable, int] = NullValue + nullableInt16s: typing.Union[Nullable, int] = NullValue + nullableInt24s: typing.Union[Nullable, int] = NullValue + nullableInt32s: typing.Union[Nullable, int] = NullValue + nullableInt40s: typing.Union[Nullable, int] = NullValue + nullableInt48s: typing.Union[Nullable, int] = NullValue + nullableInt56s: typing.Union[Nullable, int] = NullValue + nullableInt64s: typing.Union[Nullable, int] = NullValue + nullableEnum8: typing.Union[Nullable, uint] = NullValue + nullableEnum16: typing.Union[Nullable, uint] = NullValue + nullableFloatSingle: typing.Union[Nullable, float32] = NullValue + nullableFloatDouble: typing.Union[Nullable, float] = NullValue + nullableOctetString: typing.Union[Nullable, bytes] = NullValue + nullableCharString: typing.Union[Nullable, str] = NullValue + nullableEnumAttr: typing.Union[Nullable, UnitTesting.Enums.SimpleEnum] = NullValue + nullableStruct: typing.Union[Nullable, UnitTesting.Structs.SimpleStruct] = NullValue + nullableRangeRestrictedInt8u: typing.Union[Nullable, uint] = NullValue + nullableRangeRestrictedInt8s: typing.Union[Nullable, int] = NullValue + nullableRangeRestrictedInt16u: typing.Union[Nullable, uint] = NullValue + nullableRangeRestrictedInt16s: typing.Union[Nullable, int] = NullValue + writeOnlyInt8u: typing.Optional[uint] = None + nullableGlobalEnum: typing.Union[Nullable, Globals.Enums.TestGlobalEnum] = NullValue + nullableGlobalStruct: typing.Union[Nullable, Globals.Structs.TestGlobalStruct] = NullValue + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 + meiInt8u: uint = 0 class Enums: class SimpleEnum(MatterIntEnum): @@ -50356,7 +50357,7 @@ class Test(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50369,7 +50370,7 @@ class TestSpecificResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50378,14 +50379,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="returnValue", Tag=0, Type=uint), ]) - returnValue: 'uint' = 0 + returnValue: uint = 0 @dataclass class TestNotHandled(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50398,7 +50399,7 @@ class TestAddArgumentsResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50407,7 +50408,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="returnValue", Tag=0, Type=uint), ]) - returnValue: 'uint' = 0 + returnValue: uint = 0 @dataclass class TestSpecific(ClusterCommand): @@ -50427,7 +50428,7 @@ class TestSimpleArgumentResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000002 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50436,14 +50437,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="returnValue", Tag=0, Type=bool), ]) - returnValue: 'bool' = False + returnValue: bool = False @dataclass class TestUnknownCommand(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50456,7 +50457,7 @@ class TestStructArrayArgumentResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000003 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50470,12 +50471,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg6", Tag=5, Type=bool), ]) - arg1: 'typing.List[UnitTesting.Structs.NestedStructList]' = field(default_factory=lambda: []) - arg2: 'typing.List[UnitTesting.Structs.SimpleStruct]' = field(default_factory=lambda: []) - arg3: 'typing.List[UnitTesting.Enums.SimpleEnum]' = field(default_factory=lambda: []) - arg4: 'typing.List[bool]' = field(default_factory=lambda: []) - arg5: 'UnitTesting.Enums.SimpleEnum' = 0 - arg6: 'bool' = False + arg1: typing.List[UnitTesting.Structs.NestedStructList] = field(default_factory=lambda: []) + arg2: typing.List[UnitTesting.Structs.SimpleStruct] = field(default_factory=lambda: []) + arg3: typing.List[UnitTesting.Enums.SimpleEnum] = field(default_factory=lambda: []) + arg4: typing.List[bool] = field(default_factory=lambda: []) + arg5: UnitTesting.Enums.SimpleEnum = 0 + arg6: bool = False @dataclass class TestAddArguments(ClusterCommand): @@ -50492,15 +50493,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=uint), ]) - arg1: 'uint' = 0 - arg2: 'uint' = 0 + arg1: uint = 0 + arg2: uint = 0 @dataclass class TestListInt8UReverseResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000004 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50509,7 +50510,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[uint]), ]) - arg1: 'typing.List[uint]' = field(default_factory=lambda: []) + arg1: typing.List[uint] = field(default_factory=lambda: []) @dataclass class TestSimpleArgumentRequest(ClusterCommand): @@ -50525,14 +50526,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=bool), ]) - arg1: 'bool' = False + arg1: bool = False @dataclass class TestEnumsResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000005 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50542,8 +50543,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=UnitTesting.Enums.SimpleEnum), ]) - arg1: 'uint' = 0 - arg2: 'UnitTesting.Enums.SimpleEnum' = 0 + arg1: uint = 0 + arg2: UnitTesting.Enums.SimpleEnum = 0 @dataclass class TestStructArrayArgumentRequest(ClusterCommand): @@ -50564,19 +50565,19 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg6", Tag=5, Type=bool), ]) - arg1: 'typing.List[UnitTesting.Structs.NestedStructList]' = field(default_factory=lambda: []) - arg2: 'typing.List[UnitTesting.Structs.SimpleStruct]' = field(default_factory=lambda: []) - arg3: 'typing.List[UnitTesting.Enums.SimpleEnum]' = field(default_factory=lambda: []) - arg4: 'typing.List[bool]' = field(default_factory=lambda: []) - arg5: 'UnitTesting.Enums.SimpleEnum' = 0 - arg6: 'bool' = False + arg1: typing.List[UnitTesting.Structs.NestedStructList] = field(default_factory=lambda: []) + arg2: typing.List[UnitTesting.Structs.SimpleStruct] = field(default_factory=lambda: []) + arg3: typing.List[UnitTesting.Enums.SimpleEnum] = field(default_factory=lambda: []) + arg4: typing.List[bool] = field(default_factory=lambda: []) + arg5: UnitTesting.Enums.SimpleEnum = 0 + arg6: bool = False @dataclass class TestNullableOptionalResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000006 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50588,10 +50589,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="originalValue", Tag=3, Type=typing.Union[None, Nullable, uint]), ]) - wasPresent: 'bool' = False - wasNull: 'typing.Optional[bool]' = None - value: 'typing.Optional[uint]' = None - originalValue: 'typing.Union[None, Nullable, uint]' = None + wasPresent: bool = False + wasNull: typing.Optional[bool] = None + value: typing.Optional[uint] = None + originalValue: typing.Union[None, Nullable, uint] = None @dataclass class TestStructArgumentRequest(ClusterCommand): @@ -50607,14 +50608,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.SimpleStruct), ]) - arg1: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) + arg1: UnitTesting.Structs.SimpleStruct = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) @dataclass class TestComplexNullableOptionalResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000007 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50650,34 +50651,34 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="nullableOptionalListValue", Tag=27, Type=typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]), ]) - nullableIntWasNull: 'bool' = False - nullableIntValue: 'typing.Optional[uint]' = None - optionalIntWasPresent: 'bool' = False - optionalIntValue: 'typing.Optional[uint]' = None - nullableOptionalIntWasPresent: 'bool' = False - nullableOptionalIntWasNull: 'typing.Optional[bool]' = None - nullableOptionalIntValue: 'typing.Optional[uint]' = None - nullableStringWasNull: 'bool' = False - nullableStringValue: 'typing.Optional[str]' = None - optionalStringWasPresent: 'bool' = False - optionalStringValue: 'typing.Optional[str]' = None - nullableOptionalStringWasPresent: 'bool' = False - nullableOptionalStringWasNull: 'typing.Optional[bool]' = None - nullableOptionalStringValue: 'typing.Optional[str]' = None - nullableStructWasNull: 'bool' = False - nullableStructValue: 'typing.Optional[UnitTesting.Structs.SimpleStruct]' = None - optionalStructWasPresent: 'bool' = False - optionalStructValue: 'typing.Optional[UnitTesting.Structs.SimpleStruct]' = None - nullableOptionalStructWasPresent: 'bool' = False - nullableOptionalStructWasNull: 'typing.Optional[bool]' = None - nullableOptionalStructValue: 'typing.Optional[UnitTesting.Structs.SimpleStruct]' = None - nullableListWasNull: 'bool' = False - nullableListValue: 'typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]' = None - optionalListWasPresent: 'bool' = False - optionalListValue: 'typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]' = None - nullableOptionalListWasPresent: 'bool' = False - nullableOptionalListWasNull: 'typing.Optional[bool]' = None - nullableOptionalListValue: 'typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]' = None + nullableIntWasNull: bool = False + nullableIntValue: typing.Optional[uint] = None + optionalIntWasPresent: bool = False + optionalIntValue: typing.Optional[uint] = None + nullableOptionalIntWasPresent: bool = False + nullableOptionalIntWasNull: typing.Optional[bool] = None + nullableOptionalIntValue: typing.Optional[uint] = None + nullableStringWasNull: bool = False + nullableStringValue: typing.Optional[str] = None + optionalStringWasPresent: bool = False + optionalStringValue: typing.Optional[str] = None + nullableOptionalStringWasPresent: bool = False + nullableOptionalStringWasNull: typing.Optional[bool] = None + nullableOptionalStringValue: typing.Optional[str] = None + nullableStructWasNull: bool = False + nullableStructValue: typing.Optional[UnitTesting.Structs.SimpleStruct] = None + optionalStructWasPresent: bool = False + optionalStructValue: typing.Optional[UnitTesting.Structs.SimpleStruct] = None + nullableOptionalStructWasPresent: bool = False + nullableOptionalStructWasNull: typing.Optional[bool] = None + nullableOptionalStructValue: typing.Optional[UnitTesting.Structs.SimpleStruct] = None + nullableListWasNull: bool = False + nullableListValue: typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]] = None + optionalListWasPresent: bool = False + optionalListValue: typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]] = None + nullableOptionalListWasPresent: bool = False + nullableOptionalListWasNull: typing.Optional[bool] = None + nullableOptionalListValue: typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]] = None @dataclass class TestNestedStructArgumentRequest(ClusterCommand): @@ -50693,14 +50694,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.NestedStruct), ]) - arg1: 'UnitTesting.Structs.NestedStruct' = field(default_factory=lambda: UnitTesting.Structs.NestedStruct()) + arg1: UnitTesting.Structs.NestedStruct = field(default_factory=lambda: UnitTesting.Structs.NestedStruct()) @dataclass class BooleanResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000008 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50709,7 +50710,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="value", Tag=0, Type=bool), ]) - value: 'bool' = False + value: bool = False @dataclass class TestListStructArgumentRequest(ClusterCommand): @@ -50725,14 +50726,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[UnitTesting.Structs.SimpleStruct]), ]) - arg1: 'typing.List[UnitTesting.Structs.SimpleStruct]' = field(default_factory=lambda: []) + arg1: typing.List[UnitTesting.Structs.SimpleStruct] = field(default_factory=lambda: []) @dataclass class SimpleStructResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000009 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50741,7 +50742,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.SimpleStruct), ]) - arg1: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) + arg1: UnitTesting.Structs.SimpleStruct = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) @dataclass class TestListInt8UArgumentRequest(ClusterCommand): @@ -50757,14 +50758,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[uint]), ]) - arg1: 'typing.List[uint]' = field(default_factory=lambda: []) + arg1: typing.List[uint] = field(default_factory=lambda: []) @dataclass class TestEmitTestEventResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x0000000A is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50773,7 +50774,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="value", Tag=0, Type=uint), ]) - value: 'uint' = 0 + value: uint = 0 @dataclass class TestNestedStructListArgumentRequest(ClusterCommand): @@ -50789,14 +50790,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.NestedStructList), ]) - arg1: 'UnitTesting.Structs.NestedStructList' = field(default_factory=lambda: UnitTesting.Structs.NestedStructList()) + arg1: UnitTesting.Structs.NestedStructList = field(default_factory=lambda: UnitTesting.Structs.NestedStructList()) @dataclass class TestEmitTestFabricScopedEventResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x0000000B is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50805,7 +50806,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="value", Tag=0, Type=uint), ]) - value: 'uint' = 0 + value: uint = 0 @dataclass class TestListNestedStructListArgumentRequest(ClusterCommand): @@ -50821,14 +50822,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[UnitTesting.Structs.NestedStructList]), ]) - arg1: 'typing.List[UnitTesting.Structs.NestedStructList]' = field(default_factory=lambda: []) + arg1: typing.List[UnitTesting.Structs.NestedStructList] = field(default_factory=lambda: []) @dataclass class TestBatchHelperResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x0000000C is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50837,7 +50838,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="buffer", Tag=0, Type=bytes), ]) - buffer: 'bytes' = b"" + buffer: bytes = b"" @dataclass class TestListInt8UReverseRequest(ClusterCommand): @@ -50853,14 +50854,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[uint]), ]) - arg1: 'typing.List[uint]' = field(default_factory=lambda: []) + arg1: typing.List[uint] = field(default_factory=lambda: []) @dataclass class StringEchoResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x0000000D is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50869,7 +50870,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="payload", Tag=0, Type=bytes), ]) - payload: 'bytes' = b"" + payload: bytes = b"" @dataclass class TestEnumsRequest(ClusterCommand): @@ -50886,15 +50887,15 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=UnitTesting.Enums.SimpleEnum), ]) - arg1: 'uint' = 0 - arg2: 'UnitTesting.Enums.SimpleEnum' = 0 + arg1: uint = 0 + arg2: UnitTesting.Enums.SimpleEnum = 0 @dataclass class GlobalEchoResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x0000000E is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50904,8 +50905,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="field2", Tag=1, Type=Globals.Enums.TestGlobalEnum), ]) - field1: 'Globals.Structs.TestGlobalStruct' = field(default_factory=lambda: Globals.Structs.TestGlobalStruct()) - field2: 'Globals.Enums.TestGlobalEnum' = 0 + field1: Globals.Structs.TestGlobalStruct = field(default_factory=lambda: Globals.Structs.TestGlobalStruct()) + field2: Globals.Enums.TestGlobalEnum = 0 @dataclass class TestNullableOptionalRequest(ClusterCommand): @@ -50921,7 +50922,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.Union[None, Nullable, uint]), ]) - arg1: 'typing.Union[None, Nullable, uint]' = None + arg1: typing.Union[None, Nullable, uint] = None @dataclass class TestComplexNullableOptionalRequest(ClusterCommand): @@ -50948,18 +50949,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="nullableOptionalList", Tag=11, Type=typing.Union[None, Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]), ]) - nullableInt: 'typing.Union[Nullable, uint]' = NullValue - optionalInt: 'typing.Optional[uint]' = None - nullableOptionalInt: 'typing.Union[None, Nullable, uint]' = None - nullableString: 'typing.Union[Nullable, str]' = NullValue - optionalString: 'typing.Optional[str]' = None - nullableOptionalString: 'typing.Union[None, Nullable, str]' = None - nullableStruct: 'typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]' = NullValue - optionalStruct: 'typing.Optional[UnitTesting.Structs.SimpleStruct]' = None - nullableOptionalStruct: 'typing.Union[None, Nullable, UnitTesting.Structs.SimpleStruct]' = None - nullableList: 'typing.Union[Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]' = NullValue - optionalList: 'typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]' = None - nullableOptionalList: 'typing.Union[None, Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]' = None + nullableInt: typing.Union[Nullable, uint] = NullValue + optionalInt: typing.Optional[uint] = None + nullableOptionalInt: typing.Union[None, Nullable, uint] = None + nullableString: typing.Union[Nullable, str] = NullValue + optionalString: typing.Optional[str] = None + nullableOptionalString: typing.Union[None, Nullable, str] = None + nullableStruct: typing.Union[Nullable, UnitTesting.Structs.SimpleStruct] = NullValue + optionalStruct: typing.Optional[UnitTesting.Structs.SimpleStruct] = None + nullableOptionalStruct: typing.Union[None, Nullable, UnitTesting.Structs.SimpleStruct] = None + nullableList: typing.Union[Nullable, typing.List[UnitTesting.Enums.SimpleEnum]] = NullValue + optionalList: typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]] = None + nullableOptionalList: typing.Union[None, Nullable, typing.List[UnitTesting.Enums.SimpleEnum]] = None @dataclass class SimpleStructEchoRequest(ClusterCommand): @@ -50975,14 +50976,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.SimpleStruct), ]) - arg1: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) + arg1: UnitTesting.Structs.SimpleStruct = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) @dataclass class TimedInvokeRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000012 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -50999,7 +51000,7 @@ class TestSimpleOptionalArgumentRequest(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0x00000013 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -51008,7 +51009,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.Optional[bool]), ]) - arg1: 'typing.Optional[bool]' = None + arg1: typing.Optional[bool] = None @dataclass class TestEmitTestEventRequest(ClusterCommand): @@ -51026,9 +51027,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg3", Tag=2, Type=bool), ]) - arg1: 'uint' = 0 - arg2: 'UnitTesting.Enums.SimpleEnum' = 0 - arg3: 'bool' = False + arg1: uint = 0 + arg2: UnitTesting.Enums.SimpleEnum = 0 + arg3: bool = False @dataclass class TestEmitTestFabricScopedEventRequest(ClusterCommand): @@ -51044,7 +51045,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=uint), ]) - arg1: 'uint' = 0 + arg1: uint = 0 @dataclass class TestBatchHelperRequest(ClusterCommand): @@ -51062,9 +51063,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fillCharacter", Tag=2, Type=uint), ]) - sleepBeforeResponseTimeMs: 'uint' = 0 - sizeOfResponseBuffer: 'uint' = 0 - fillCharacter: 'uint' = 0 + sleepBeforeResponseTimeMs: uint = 0 + sizeOfResponseBuffer: uint = 0 + fillCharacter: uint = 0 @dataclass class TestSecondBatchHelperRequest(ClusterCommand): @@ -51082,9 +51083,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fillCharacter", Tag=2, Type=uint), ]) - sleepBeforeResponseTimeMs: 'uint' = 0 - sizeOfResponseBuffer: 'uint' = 0 - fillCharacter: 'uint' = 0 + sleepBeforeResponseTimeMs: uint = 0 + sizeOfResponseBuffer: uint = 0 + fillCharacter: uint = 0 @dataclass class StringEchoRequest(ClusterCommand): @@ -51100,7 +51101,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="payload", Tag=0, Type=bytes), ]) - payload: 'bytes' = b"" + payload: bytes = b"" @dataclass class GlobalEchoRequest(ClusterCommand): @@ -51117,8 +51118,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="field2", Tag=1, Type=Globals.Enums.TestGlobalEnum), ]) - field1: 'Globals.Structs.TestGlobalStruct' = field(default_factory=lambda: Globals.Structs.TestGlobalStruct()) - field2: 'Globals.Enums.TestGlobalEnum' = 0 + field1: Globals.Structs.TestGlobalStruct = field(default_factory=lambda: Globals.Structs.TestGlobalStruct()) + field2: Globals.Enums.TestGlobalEnum = 0 @dataclass class TestDifferentVendorMeiRequest(ClusterCommand): @@ -51134,14 +51135,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=uint), ]) - arg1: 'uint' = 0 + arg1: uint = 0 @dataclass class TestDifferentVendorMeiResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC05 command_id: typing.ClassVar[int] = 0xFFF200BB is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -51151,8 +51152,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="eventNumber", Tag=1, Type=uint), ]) - arg1: 'uint' = 0 - eventNumber: 'uint' = 0 + arg1: uint = 0 + eventNumber: uint = 0 class Attributes: @dataclass @@ -51169,7 +51170,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class Bitmap8(ClusterAttributeDescriptor): @@ -51185,7 +51186,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Bitmap16(ClusterAttributeDescriptor): @@ -51201,7 +51202,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Bitmap32(ClusterAttributeDescriptor): @@ -51217,7 +51218,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Bitmap64(ClusterAttributeDescriptor): @@ -51233,7 +51234,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Int8u(ClusterAttributeDescriptor): @@ -51249,7 +51250,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Int16u(ClusterAttributeDescriptor): @@ -51265,7 +51266,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Int24u(ClusterAttributeDescriptor): @@ -51281,7 +51282,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Int32u(ClusterAttributeDescriptor): @@ -51297,7 +51298,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Int40u(ClusterAttributeDescriptor): @@ -51313,7 +51314,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Int48u(ClusterAttributeDescriptor): @@ -51329,7 +51330,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Int56u(ClusterAttributeDescriptor): @@ -51345,7 +51346,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Int64u(ClusterAttributeDescriptor): @@ -51361,7 +51362,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Int8s(ClusterAttributeDescriptor): @@ -51377,7 +51378,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class Int16s(ClusterAttributeDescriptor): @@ -51393,7 +51394,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class Int24s(ClusterAttributeDescriptor): @@ -51409,7 +51410,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class Int32s(ClusterAttributeDescriptor): @@ -51425,7 +51426,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class Int40s(ClusterAttributeDescriptor): @@ -51441,7 +51442,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class Int48s(ClusterAttributeDescriptor): @@ -51457,7 +51458,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class Int56s(ClusterAttributeDescriptor): @@ -51473,7 +51474,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class Int64s(ClusterAttributeDescriptor): @@ -51489,7 +51490,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class Enum8(ClusterAttributeDescriptor): @@ -51505,7 +51506,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class Enum16(ClusterAttributeDescriptor): @@ -51521,7 +51522,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class FloatSingle(ClusterAttributeDescriptor): @@ -51537,7 +51538,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=float32) - value: 'float32' = 0.0 + value: float32 = 0.0 @dataclass class FloatDouble(ClusterAttributeDescriptor): @@ -51553,7 +51554,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=float) - value: 'float' = 0.0 + value: float = 0.0 @dataclass class OctetString(ClusterAttributeDescriptor): @@ -51569,7 +51570,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bytes) - value: 'bytes' = b"" + value: bytes = b"" @dataclass class ListInt8u(ClusterAttributeDescriptor): @@ -51585,7 +51586,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class ListOctetString(ClusterAttributeDescriptor): @@ -51601,7 +51602,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[bytes]) - value: 'typing.List[bytes]' = field(default_factory=lambda: []) + value: typing.List[bytes] = field(default_factory=lambda: []) @dataclass class ListStructOctetString(ClusterAttributeDescriptor): @@ -51617,7 +51618,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[UnitTesting.Structs.TestListStructOctet]) - value: 'typing.List[UnitTesting.Structs.TestListStructOctet]' = field(default_factory=lambda: []) + value: typing.List[UnitTesting.Structs.TestListStructOctet] = field(default_factory=lambda: []) @dataclass class LongOctetString(ClusterAttributeDescriptor): @@ -51633,7 +51634,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bytes) - value: 'bytes' = b"" + value: bytes = b"" @dataclass class CharString(ClusterAttributeDescriptor): @@ -51649,7 +51650,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class LongCharString(ClusterAttributeDescriptor): @@ -51665,7 +51666,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=str) - value: 'str' = "" + value: str = "" @dataclass class EpochUs(ClusterAttributeDescriptor): @@ -51681,7 +51682,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class EpochS(ClusterAttributeDescriptor): @@ -51697,7 +51698,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class VendorId(ClusterAttributeDescriptor): @@ -51713,7 +51714,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ListNullablesAndOptionalsStruct(ClusterAttributeDescriptor): @@ -51729,7 +51730,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[UnitTesting.Structs.NullablesAndOptionalsStruct]) - value: 'typing.List[UnitTesting.Structs.NullablesAndOptionalsStruct]' = field(default_factory=lambda: []) + value: typing.List[UnitTesting.Structs.NullablesAndOptionalsStruct] = field(default_factory=lambda: []) @dataclass class EnumAttr(ClusterAttributeDescriptor): @@ -51745,7 +51746,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=UnitTesting.Enums.SimpleEnum) - value: 'UnitTesting.Enums.SimpleEnum' = 0 + value: UnitTesting.Enums.SimpleEnum = 0 @dataclass class StructAttr(ClusterAttributeDescriptor): @@ -51761,7 +51762,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=UnitTesting.Structs.SimpleStruct) - value: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) + value: UnitTesting.Structs.SimpleStruct = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) @dataclass class RangeRestrictedInt8u(ClusterAttributeDescriptor): @@ -51777,7 +51778,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class RangeRestrictedInt8s(ClusterAttributeDescriptor): @@ -51793,7 +51794,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class RangeRestrictedInt16u(ClusterAttributeDescriptor): @@ -51809,7 +51810,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class RangeRestrictedInt16s(ClusterAttributeDescriptor): @@ -51825,7 +51826,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=int) - value: 'int' = 0 + value: int = 0 @dataclass class ListLongOctetString(ClusterAttributeDescriptor): @@ -51841,7 +51842,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[bytes]) - value: 'typing.List[bytes]' = field(default_factory=lambda: []) + value: typing.List[bytes] = field(default_factory=lambda: []) @dataclass class ListFabricScoped(ClusterAttributeDescriptor): @@ -51857,7 +51858,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[UnitTesting.Structs.TestFabricScoped]) - value: 'typing.List[UnitTesting.Structs.TestFabricScoped]' = field(default_factory=lambda: []) + value: typing.List[UnitTesting.Structs.TestFabricScoped] = field(default_factory=lambda: []) @dataclass class TimedWriteBoolean(ClusterAttributeDescriptor): @@ -51877,7 +51878,7 @@ def must_use_timed_write(cls) -> bool: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class GeneralErrorBoolean(ClusterAttributeDescriptor): @@ -51893,7 +51894,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class ClusterErrorBoolean(ClusterAttributeDescriptor): @@ -51909,7 +51910,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class GlobalEnum(ClusterAttributeDescriptor): @@ -51925,7 +51926,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=Globals.Enums.TestGlobalEnum) - value: 'Globals.Enums.TestGlobalEnum' = 0 + value: Globals.Enums.TestGlobalEnum = 0 @dataclass class GlobalStruct(ClusterAttributeDescriptor): @@ -51941,7 +51942,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=Globals.Structs.TestGlobalStruct) - value: 'Globals.Structs.TestGlobalStruct' = field(default_factory=lambda: Globals.Structs.TestGlobalStruct()) + value: Globals.Structs.TestGlobalStruct = field(default_factory=lambda: Globals.Structs.TestGlobalStruct()) @dataclass class Unsupported(ClusterAttributeDescriptor): @@ -51957,7 +51958,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[bool]) - value: 'typing.Optional[bool]' = None + value: typing.Optional[bool] = None @dataclass class ReadFailureCode(ClusterAttributeDescriptor): @@ -51973,7 +51974,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class FailureInt32U(ClusterAttributeDescriptor): @@ -51989,7 +51990,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NullableBoolean(ClusterAttributeDescriptor): @@ -52005,7 +52006,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, bool]) - value: 'typing.Union[Nullable, bool]' = NullValue + value: typing.Union[Nullable, bool] = NullValue @dataclass class NullableBitmap8(ClusterAttributeDescriptor): @@ -52021,7 +52022,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableBitmap16(ClusterAttributeDescriptor): @@ -52037,7 +52038,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableBitmap32(ClusterAttributeDescriptor): @@ -52053,7 +52054,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableBitmap64(ClusterAttributeDescriptor): @@ -52069,7 +52070,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableInt8u(ClusterAttributeDescriptor): @@ -52085,7 +52086,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableInt16u(ClusterAttributeDescriptor): @@ -52101,7 +52102,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableInt24u(ClusterAttributeDescriptor): @@ -52117,7 +52118,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableInt32u(ClusterAttributeDescriptor): @@ -52133,7 +52134,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableInt40u(ClusterAttributeDescriptor): @@ -52149,7 +52150,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableInt48u(ClusterAttributeDescriptor): @@ -52165,7 +52166,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableInt56u(ClusterAttributeDescriptor): @@ -52181,7 +52182,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableInt64u(ClusterAttributeDescriptor): @@ -52197,7 +52198,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableInt8s(ClusterAttributeDescriptor): @@ -52213,7 +52214,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class NullableInt16s(ClusterAttributeDescriptor): @@ -52229,7 +52230,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class NullableInt24s(ClusterAttributeDescriptor): @@ -52245,7 +52246,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class NullableInt32s(ClusterAttributeDescriptor): @@ -52261,7 +52262,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class NullableInt40s(ClusterAttributeDescriptor): @@ -52277,7 +52278,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class NullableInt48s(ClusterAttributeDescriptor): @@ -52293,7 +52294,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class NullableInt56s(ClusterAttributeDescriptor): @@ -52309,7 +52310,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class NullableInt64s(ClusterAttributeDescriptor): @@ -52325,7 +52326,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class NullableEnum8(ClusterAttributeDescriptor): @@ -52341,7 +52342,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableEnum16(ClusterAttributeDescriptor): @@ -52357,7 +52358,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableFloatSingle(ClusterAttributeDescriptor): @@ -52373,7 +52374,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, float32]) - value: 'typing.Union[Nullable, float32]' = NullValue + value: typing.Union[Nullable, float32] = NullValue @dataclass class NullableFloatDouble(ClusterAttributeDescriptor): @@ -52389,7 +52390,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, float]) - value: 'typing.Union[Nullable, float]' = NullValue + value: typing.Union[Nullable, float] = NullValue @dataclass class NullableOctetString(ClusterAttributeDescriptor): @@ -52405,7 +52406,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, bytes]) - value: 'typing.Union[Nullable, bytes]' = NullValue + value: typing.Union[Nullable, bytes] = NullValue @dataclass class NullableCharString(ClusterAttributeDescriptor): @@ -52421,7 +52422,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, str]) - value: 'typing.Union[Nullable, str]' = NullValue + value: typing.Union[Nullable, str] = NullValue @dataclass class NullableEnumAttr(ClusterAttributeDescriptor): @@ -52437,7 +52438,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, UnitTesting.Enums.SimpleEnum]) - value: 'typing.Union[Nullable, UnitTesting.Enums.SimpleEnum]' = NullValue + value: typing.Union[Nullable, UnitTesting.Enums.SimpleEnum] = NullValue @dataclass class NullableStruct(ClusterAttributeDescriptor): @@ -52453,7 +52454,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]) - value: 'typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]' = NullValue + value: typing.Union[Nullable, UnitTesting.Structs.SimpleStruct] = NullValue @dataclass class NullableRangeRestrictedInt8u(ClusterAttributeDescriptor): @@ -52469,7 +52470,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableRangeRestrictedInt8s(ClusterAttributeDescriptor): @@ -52485,7 +52486,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class NullableRangeRestrictedInt16u(ClusterAttributeDescriptor): @@ -52501,7 +52502,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'typing.Union[Nullable, uint]' = NullValue + value: typing.Union[Nullable, uint] = NullValue @dataclass class NullableRangeRestrictedInt16s(ClusterAttributeDescriptor): @@ -52517,7 +52518,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'typing.Union[Nullable, int]' = NullValue + value: typing.Union[Nullable, int] = NullValue @dataclass class WriteOnlyInt8u(ClusterAttributeDescriptor): @@ -52533,7 +52534,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) - value: 'typing.Optional[uint]' = None + value: typing.Optional[uint] = None @dataclass class NullableGlobalEnum(ClusterAttributeDescriptor): @@ -52549,7 +52550,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, Globals.Enums.TestGlobalEnum]) - value: 'typing.Union[Nullable, Globals.Enums.TestGlobalEnum]' = NullValue + value: typing.Union[Nullable, Globals.Enums.TestGlobalEnum] = NullValue @dataclass class NullableGlobalStruct(ClusterAttributeDescriptor): @@ -52565,7 +52566,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, Globals.Structs.TestGlobalStruct]) - value: 'typing.Union[Nullable, Globals.Structs.TestGlobalStruct]' = NullValue + value: typing.Union[Nullable, Globals.Structs.TestGlobalStruct] = NullValue @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -52581,7 +52582,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -52597,7 +52598,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -52613,7 +52614,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -52629,7 +52630,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -52645,7 +52646,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -52661,7 +52662,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class MeiInt8u(ClusterAttributeDescriptor): @@ -52677,7 +52678,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -52702,12 +52703,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg6", Tag=6, Type=typing.List[UnitTesting.Enums.SimpleEnum]), ]) - arg1: 'uint' = 0 - arg2: 'UnitTesting.Enums.SimpleEnum' = 0 - arg3: 'bool' = False - arg4: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) - arg5: 'typing.List[UnitTesting.Structs.SimpleStruct]' = field(default_factory=lambda: []) - arg6: 'typing.List[UnitTesting.Enums.SimpleEnum]' = field(default_factory=lambda: []) + arg1: uint = 0 + arg2: UnitTesting.Enums.SimpleEnum = 0 + arg3: bool = False + arg4: UnitTesting.Structs.SimpleStruct = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct()) + arg5: typing.List[UnitTesting.Structs.SimpleStruct] = field(default_factory=lambda: []) + arg6: typing.List[UnitTesting.Enums.SimpleEnum] = field(default_factory=lambda: []) @dataclass class TestFabricScopedEvent(ClusterEvent): @@ -52726,7 +52727,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=254, Type=uint), ]) - fabricIndex: 'uint' = 0 + fabricIndex: uint = 0 @dataclass class TestDifferentVendorMeiEvent(ClusterEvent): @@ -52745,7 +52746,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg1", Tag=1, Type=uint), ]) - arg1: 'uint' = 0 + arg1: uint = 0 @dataclass @@ -52764,12 +52765,12 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Enums: class FaultType(MatterIntEnum): @@ -52790,7 +52791,7 @@ class FailAtFault(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC06 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -52803,18 +52804,18 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="takeMutex", Tag=4, Type=bool), ]) - type: 'FaultInjection.Enums.FaultType' = 0 - id: 'uint' = 0 - numCallsToSkip: 'uint' = 0 - numCallsToFail: 'uint' = 0 - takeMutex: 'bool' = False + type: FaultInjection.Enums.FaultType = 0 + id: uint = 0 + numCallsToSkip: uint = 0 + numCallsToFail: uint = 0 + takeMutex: bool = False @dataclass class FailRandomlyAtFault(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC06 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -52825,9 +52826,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="percentage", Tag=2, Type=uint), ]) - type: 'FaultInjection.Enums.FaultType' = 0 - id: 'uint' = 0 - percentage: 'uint' = 0 + type: FaultInjection.Enums.FaultType = 0 + id: uint = 0 + percentage: uint = 0 class Attributes: @dataclass @@ -52844,7 +52845,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -52860,7 +52861,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -52876,7 +52877,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -52892,7 +52893,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -52908,7 +52909,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -52924,7 +52925,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass @@ -52944,13 +52945,13 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - flipFlop: 'bool' = None - generatedCommandList: 'typing.List[uint]' = None - acceptedCommandList: 'typing.List[uint]' = None - eventList: 'typing.List[uint]' = None - attributeList: 'typing.List[uint]' = None - featureMap: 'uint' = None - clusterRevision: 'uint' = None + flipFlop: bool = False + generatedCommandList: typing.List[uint] = field(default_factory=lambda: []) + acceptedCommandList: typing.List[uint] = field(default_factory=lambda: []) + eventList: typing.List[uint] = field(default_factory=lambda: []) + attributeList: typing.List[uint] = field(default_factory=lambda: []) + featureMap: uint = 0 + clusterRevision: uint = 0 class Commands: @dataclass @@ -52958,7 +52959,7 @@ class Ping(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC20 command_id: typing.ClassVar[int] = 0x00000000 is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -52971,7 +52972,7 @@ class AddArgumentsResponse(ClusterCommand): cluster_id: typing.ClassVar[int] = 0xFFF1FC20 command_id: typing.ClassVar[int] = 0x00000001 is_client: typing.ClassVar[bool] = False - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: @@ -52980,7 +52981,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="returnValue", Tag=0, Type=uint), ]) - returnValue: 'uint' = 0 + returnValue: uint = 0 @dataclass class AddArguments(ClusterCommand): @@ -52997,8 +52998,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=uint), ]) - arg1: 'uint' = 0 - arg2: 'uint' = 0 + arg1: uint = 0 + arg2: uint = 0 class Attributes: @dataclass @@ -53015,7 +53016,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=bool) - value: 'bool' = False + value: bool = False @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -53031,7 +53032,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AcceptedCommandList(ClusterAttributeDescriptor): @@ -53047,7 +53048,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class EventList(ClusterAttributeDescriptor): @@ -53063,7 +53064,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class AttributeList(ClusterAttributeDescriptor): @@ -53079,7 +53080,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=typing.List[uint]) - value: 'typing.List[uint]' = field(default_factory=lambda: []) + value: typing.List[uint] = field(default_factory=lambda: []) @dataclass class FeatureMap(ClusterAttributeDescriptor): @@ -53095,7 +53096,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 @dataclass class ClusterRevision(ClusterAttributeDescriptor): @@ -53111,7 +53112,7 @@ def attribute_id(cls) -> int: def attribute_type(cls) -> ClusterObjectFieldDescriptor: return ClusterObjectFieldDescriptor(Type=uint) - value: 'uint' = 0 + value: uint = 0 class Events: @dataclass @@ -53132,6 +53133,6 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=254, Type=uint), ]) - count: 'uint' = 0 - fabricIndex: 'uint' = 0 + count: uint = 0 + fabricIndex: uint = 0 diff --git a/src/controller/python/templates/python-cluster-Objects-py.zapt b/src/controller/python/templates/python-cluster-Objects-py.zapt index 3cb973d86dd356..381d266668082a 100644 --- a/src/controller/python/templates/python-cluster-Objects-py.zapt +++ b/src/controller/python/templates/python-cluster-Objects-py.zapt @@ -6,6 +6,7 @@ # Users are not expected to import this file, instead, users can use import chip.clusters, # which will import all symbols from this file and can get a readable, pretty naming like # clusters.OnOff.commands.OnCommand +from __future__ import annotations import typing from dataclasses import dataclass, field @@ -76,9 +77,9 @@ class {{asUpperCamelCase name}}(Cluster): {{#zcl_attributes_server}} {{#if entryType}} - {{ asLowerCamelCase label }}: '{{zapTypeToPythonClusterObjectType entryType ns=(asUpperCamelCase parent.name)}}' = None + {{ asLowerCamelCase label }}: {{zapTypeToPythonClusterObjectType entryType ns=(asUpperCamelCase parent.name)}} = {{getPythonFieldDefault entryType ns=(asUpperCamelCase parent.name)}} {{else}} - {{ asLowerCamelCase label }}: '{{zapTypeToPythonClusterObjectType type ns=(asUpperCamelCase parent.name)}}' = None + {{ asLowerCamelCase label }}: {{zapTypeToPythonClusterObjectType type ns=(asUpperCamelCase parent.name)}} = {{getPythonFieldDefault type ns=(asUpperCamelCase parent.name)}} {{/if}} {{/zcl_attributes_server}} @@ -121,7 +122,7 @@ class {{asUpperCamelCase name}}(Cluster): {{~#if responseName}} response_type: typing.ClassVar[str] = '{{asUpperCamelCase responseName}}' {{else}} - response_type: typing.ClassVar[str] = None + response_type: typing.ClassVar[typing.Optional[str]] = None {{/if}} @ChipUtility.classproperty @@ -142,7 +143,7 @@ class {{asUpperCamelCase name}}(Cluster): {{#first}} {{/first}} - {{ asLowerCamelCase label }}: '{{zapTypeToPythonClusterObjectType type ns=(asUpperCamelCase parent.parent.name)}}' = {{getPythonFieldDefault type ns=(asUpperCamelCase parent.parent.name)}} + {{ asLowerCamelCase label }}: {{zapTypeToPythonClusterObjectType type ns=(asUpperCamelCase parent.parent.name)}} = {{getPythonFieldDefault type ns=(asUpperCamelCase parent.parent.name)}} {{/zcl_command_arguments}} {{/zcl_commands}} @@ -175,9 +176,9 @@ class {{asUpperCamelCase name}}(Cluster): {{/if}} {{#if entryType}} - value: '{{zapTypeToPythonClusterObjectType entryType ns=(asUpperCamelCase parent.name)}}' = {{getPythonFieldDefault entryType ns=(asUpperCamelCase parent.name)}} + value: {{zapTypeToPythonClusterObjectType entryType ns=(asUpperCamelCase parent.name)}} = {{getPythonFieldDefault entryType ns=(asUpperCamelCase parent.name)}} {{else}} - value: '{{zapTypeToPythonClusterObjectType type ns=(asUpperCamelCase parent.name)}}' = {{getPythonFieldDefault type ns=(asUpperCamelCase parent.name)}} + value: {{zapTypeToPythonClusterObjectType type ns=(asUpperCamelCase parent.name)}} = {{getPythonFieldDefault type ns=(asUpperCamelCase parent.name)}} {{/if}} {{/zcl_attributes_server}} @@ -207,7 +208,7 @@ class {{asUpperCamelCase name}}(Cluster): {{#first}} {{/first}} - {{ asLowerCamelCase name }}: '{{zapTypeToPythonClusterObjectType type ns=(asUpperCamelCase parent.parent.name)}}' = {{getPythonFieldDefault type ns=(asUpperCamelCase parent.parent.name)}} + {{ asLowerCamelCase name }}: {{zapTypeToPythonClusterObjectType type ns=(asUpperCamelCase parent.parent.name)}} = {{getPythonFieldDefault type ns=(asUpperCamelCase parent.parent.name)}} {{/zcl_event_fields}} {{/zcl_events}} diff --git a/src/controller/tests/data_model/TestRead.cpp b/src/controller/tests/data_model/TestRead.cpp index 6724e0d589457f..136fbc243db340 100644 --- a/src/controller/tests/data_model/TestRead.cpp +++ b/src/controller/tests/data_model/TestRead.cpp @@ -118,6 +118,9 @@ class TestRead : public chip::Test::AppContext, public app::ReadHandler::Applica void SetUp() override { chip::Test::AppContext::SetUp(); + // Register app callback, so we can test it as well to ensure we get the right + // number of SubscriptionEstablishment/Termination callbacks. + InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); mOldProvider = InteractionModelEngine::GetInstance()->SetDataModelProvider(&CustomDataModel::Instance()); chip::Test::SetMockNodeConfig(TestMockNodeConfig()); } @@ -127,6 +130,7 @@ class TestRead : public chip::Test::AppContext, public app::ReadHandler::Applica { chip::Test::ResetMockNodeConfig(); InteractionModelEngine::GetInstance()->SetDataModelProvider(mOldProvider); + InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); chip::Test::AppContext::TearDown(); } @@ -270,11 +274,6 @@ TEST_F(TestRead, TestReadSubscribeAttributeResponseWithVersionOnlyCache) chip::app::ClusterStateCache cache(delegate, Optional::Missing(), false /*cachedData*/); chip::app::ReadPrepareParams readPrepareParams(GetSessionBobToAlice()); - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); // read of E2C2A* and E3C2A2. Expect cache E2C2 version { @@ -352,11 +351,6 @@ TEST_F(TestRead, TestReadSubscribeAttributeResponseWithCache) chip::app::ReadPrepareParams readPrepareParams(GetSessionBobToAlice()); readPrepareParams.mMinIntervalFloorSeconds = 0; readPrepareParams.mMaxIntervalCeilingSeconds = 4; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); [[maybe_unused]] int testId = 0; @@ -1691,12 +1685,6 @@ TEST_F(TestRead, TestReadHandler_MultipleSubscriptions) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - // // Try to issue parallel subscriptions that will exceed the value for app::InteractionModelEngine::kReadHandlerPoolSize. // If heap allocation is correctly setup, this should result in it successfully servicing more than the number @@ -1727,7 +1715,6 @@ TEST_F(TestRead, TestReadHandler_MultipleSubscriptions) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); SetMRPMode(chip::Test::MessagingContext::MRPMode::kDefault); - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); } TEST_F(TestRead, TestReadHandler_SubscriptionAppRejection) @@ -1756,12 +1743,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionAppRejection) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - // // Test the application rejecting subscriptions. // @@ -1788,7 +1769,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionAppRejection) EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); mEmitSubscriptionError = false; } @@ -1831,17 +1811,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest1) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - - // - // Test the server-side application altering the subscription intervals. - // - mAlterSubscriptionIntervals = false; - EXPECT_EQ(Controller::SubscribeAttribute( &GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 5, 5, onSubscriptionEstablishedCb, nullptr, true), @@ -1863,9 +1832,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest1) EXPECT_EQ(mNumActiveSubscriptions, 0); EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); - mAlterSubscriptionIntervals = false; } // Subscriber sends the request with particular max-interval value: @@ -1906,17 +1872,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest2) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - - // - // Test the server-side application altering the subscription intervals. - // - mAlterSubscriptionIntervals = false; - EXPECT_EQ(Controller::SubscribeAttribute( &GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 10, onSubscriptionEstablishedCb, nullptr, true), @@ -1938,9 +1893,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest2) EXPECT_EQ(mNumActiveSubscriptions, 0); EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); - mAlterSubscriptionIntervals = false; } // Subscriber sends the request with particular max-interval value: @@ -1981,12 +1933,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest3) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - // // Test the server-side application altering the subscription intervals. // @@ -2013,9 +1959,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest3) EXPECT_EQ(mNumActiveSubscriptions, 0); EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); - mAlterSubscriptionIntervals = false; } #endif // CHIP_CONFIG_ENABLE_ICD_SERVER @@ -2049,12 +1992,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest4) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - // // Test the server-side application altering the subscription intervals. // @@ -2080,9 +2017,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest4) EXPECT_EQ(mNumActiveSubscriptions, 0); EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); - mAlterSubscriptionIntervals = false; } #if CHIP_CONFIG_ENABLE_ICD_SERVER != 1 @@ -2125,17 +2059,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest5) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - - // - // Test the server-side application altering the subscription intervals. - // - mAlterSubscriptionIntervals = false; - EXPECT_EQ(Controller::SubscribeAttribute( &GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 4000, onSubscriptionEstablishedCb, nullptr, true), @@ -2157,9 +2080,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest5) EXPECT_EQ(mNumActiveSubscriptions, 0); EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); - mAlterSubscriptionIntervals = false; } // Subscriber sends the request with particular max-interval value: @@ -2200,12 +2120,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest6) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - // // Test the server-side application altering the subscription intervals. // @@ -2232,9 +2146,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest6) EXPECT_EQ(mNumActiveSubscriptions, 0); EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); - mAlterSubscriptionIntervals = false; } // Subscriber sends the request with particular max-interval value: @@ -2274,11 +2185,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest7) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); // // Test the server-side application altering the subscription intervals. @@ -2306,9 +2212,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest7) EXPECT_EQ(mNumActiveSubscriptions, 0); EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); - mAlterSubscriptionIntervals = false; } #endif // CHIP_CONFIG_ENABLE_ICD_SERVER @@ -2341,11 +2244,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest8) chip::SubscriptionId aSubscriptionId) { numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); // // Test the server-side application altering the subscription intervals. @@ -2372,9 +2270,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest8) EXPECT_EQ(mNumActiveSubscriptions, 0); EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); - mAlterSubscriptionIntervals = false; } // Subscriber sends the request with particular max-interval value: @@ -2405,17 +2300,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest9) numSubscriptionEstablishedCalls++; }; - // - // Test the application callback as well to ensure we get the right number of SubscriptionEstablishment/Termination - // callbacks. - // - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - - // - // Test the server-side application altering the subscription intervals. - // - mAlterSubscriptionIntervals = false; - EXPECT_EQ(Controller::SubscribeAttribute( &GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 5, 4, onSubscriptionEstablishedCb, nullptr, true), @@ -2434,9 +2318,6 @@ TEST_F(TestRead, TestReadHandler_SubscriptionReportingIntervalsTest9) EXPECT_EQ(mNumActiveSubscriptions, 0); EXPECT_EQ(GetExchangeManager().GetNumActiveExchanges(), 0u); - - app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback(); - mAlterSubscriptionIntervals = false; } /** @@ -3291,8 +3172,6 @@ TEST_F(TestRead, TestReadHandler_KillOverQuotaSubscriptions) app::InteractionModelEngine::kMinSupportedSubscriptionsPerFabric * GetFabricTable().FabricCount(); const auto kExpectedParallelPaths = kExpectedParallelSubs * app::InteractionModelEngine::kMinSupportedPathsPerSubscription; - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - // Here, we set up two background perpetual read requests to simulate parallel Read + Subscriptions. // We don't care about the data read, we only care about the existence of such read transactions. TestReadCallback readCallback; @@ -3502,8 +3381,6 @@ TEST_F(TestRead, TestReadHandler_KillOldestSubscriptions) app::InteractionModelEngine::kMinSupportedSubscriptionsPerFabric * GetFabricTable().FabricCount(); const auto kExpectedParallelPaths = kExpectedParallelSubs * app::InteractionModelEngine::kMinSupportedPathsPerSubscription; - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - TestReadCallback readCallback; std::vector> readClients; @@ -3621,8 +3498,6 @@ TEST_F(TestRead, TestReadHandler_ParallelReads) auto sessionHandle = GetSessionBobToAlice(); - app::InteractionModelEngine::GetInstance()->RegisterReadHandlerAppCallback(this); - auto TestCase = [&](const TestReadHandler_ParallelReads_TestCase_Parameters & params, std::function body) { TestReadHandler_ParallelReads_TestCase(this, params, body); }; diff --git a/src/darwin/Framework/CHIP/MTRCertificateInfo.h b/src/darwin/Framework/CHIP/MTRCertificateInfo.h index 20e907466c74f2..eba7aec83073e1 100644 --- a/src/darwin/Framework/CHIP/MTRCertificateInfo.h +++ b/src/darwin/Framework/CHIP/MTRCertificateInfo.h @@ -55,15 +55,20 @@ MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) * Matter root certificates are self-signed, i.e. the issuer and the subject are * the same. */ -@property (readonly) MTRDistinguishedNameInfo * issuer; +@property (readonly, retain) MTRDistinguishedNameInfo * issuer; /** * The Distinguished Name of the entity represented by the certificate. */ -@property (readonly) MTRDistinguishedNameInfo * subject; +@property (readonly, retain) MTRDistinguishedNameInfo * subject; -@property (readonly) NSDate * notBefore; -@property (readonly) NSDate * notAfter; +@property (readonly, retain) NSDate * notBefore; +@property (readonly, retain) NSDate * notAfter; + +/** + * Public key data for this certificate + */ +@property (nullable, readonly, retain) NSData * publicKeyData; @end diff --git a/src/darwin/Framework/CHIP/MTRCertificateInfo.mm b/src/darwin/Framework/CHIP/MTRCertificateInfo.mm index f3aacb9dd51f24..43c4117231a2e9 100644 --- a/src/darwin/Framework/CHIP/MTRCertificateInfo.mm +++ b/src/darwin/Framework/CHIP/MTRCertificateInfo.mm @@ -21,9 +21,15 @@ #include +#import "NSDataSpanConversion.h" + +#include +#include + NS_ASSUME_NONNULL_BEGIN using namespace chip; +using namespace chip::Crypto; using namespace chip::Credentials; using namespace chip::ASN1; @@ -65,6 +71,18 @@ - (NSDate *)notBefore return MatterEpochSecondsAsDate(_data.mNotBeforeTime); } +- (nullable NSData *)publicKeyData +{ + P256PublicKeySpan publicKeySpan; + CHIP_ERROR err = ExtractPublicKeyFromChipCert(AsByteSpan(_bytes), publicKeySpan); + + if (err != CHIP_NO_ERROR) { + return nil; + } + + return AsData(publicKeySpan); +} + - (NSDate *)notAfter { // "no expiry" is encoded as kNullCertTime (see ChipEpochToASN1Time) diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index 68b610cb25c7d7..2342cadfb253f5 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -389,6 +389,8 @@ - (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceControlle mtr_weakify(self); _systemTimeChangeObserverToken = [[NSNotificationCenter defaultCenter] addObserverForName:NSSystemClockDidChangeNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull notification) { mtr_strongify(self); + VerifyOrReturn(self); + std::lock_guard lock(self->_lock); [self _resetStorageBehaviorState]; }]; @@ -760,6 +762,8 @@ - (void)_ensureSubscriptionForExistingDelegates:(NSString *)reason mtr_weakify(self); [self _scheduleSubscriptionPoolWork:^{ mtr_strongify(self); + VerifyOrReturn(self); + [self->_deviceController asyncDispatchToMatterQueue:^{ std::lock_guard lock(self->_lock); [self _setupSubscriptionWithReason:[NSString stringWithFormat:@"%@ and scheduled subscription is happening", reason]]; @@ -1168,16 +1172,16 @@ - (void)_scheduleSubscriptionPoolWork:(dispatch_block_t)workBlock inNanoseconds: mtr_weakify(self); dispatch_block_t workBlockToQueue = ^{ mtr_strongify(self); - if (nil == self) { - // This block may be delayed by a specified number of nanoseconds, potentially running after the device is deallocated. - // If so, MTRAsyncWorkItem::initWithQueue will assert on a nil queue, which will cause a crash. - return; - } + // This block may be delayed by a specified number of nanoseconds, potentially running after the device is deallocated. + // If so, MTRAsyncWorkItem::initWithQueue will assert on a nil queue, which will cause a crash. + VerifyOrReturn(self); // In the case where a resubscription triggering event happened and already established, running the work block should result in a no-op MTRAsyncWorkItem * workItem = [[MTRAsyncWorkItem alloc] initWithQueue:self.queue]; [workItem setReadyHandler:^(id _Nonnull context, NSInteger retryCount, MTRAsyncWorkCompletionBlock _Nonnull completion) { mtr_strongify(self); + VerifyOrReturn(self); + MTR_LOG("%@ - work item is ready to attempt pooled subscription", self); os_unfair_lock_lock(&self->_lock); #ifdef DEBUG @@ -1257,6 +1261,8 @@ - (void)_handleResubscriptionNeededWithDelayOnDeviceQueue:(NSNumber *)resubscrip mtr_weakify(self); auto resubscriptionBlock = ^{ mtr_strongify(self); + VerifyOrReturn(self); + [self->_deviceController asyncDispatchToMatterQueue:^{ [self _triggerResubscribeWithReason:@"ResubscriptionNeeded timer fired" nodeLikelyReachable:NO]; } errorHandler:^(NSError * _Nonnull error) { @@ -1369,6 +1375,8 @@ - (void)_doHandleSubscriptionReset:(NSNumber * _Nullable)retryDelay mtr_weakify(self); auto resubscriptionBlock = ^{ mtr_strongify(self); + VerifyOrReturn(self); + [self->_deviceController asyncDispatchToMatterQueue:^{ std::lock_guard lock(self->_lock); [self _reattemptSubscriptionNowIfNeededWithReason:@"got subscription reset"]; @@ -2386,9 +2394,9 @@ - (void)_setupSubscriptionWithReason:(NSString *)reason mtr_weakify(self); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, static_cast(kSecondsToWaitBeforeMarkingUnreachableAfterSettingUpSubscription) * static_cast(NSEC_PER_SEC)), self.queue, ^{ mtr_strongify(self); - if (self != nil) { - [self _markDeviceAsUnreachableIfNeverSubscribed]; - } + VerifyOrReturn(self); + + [self _markDeviceAsUnreachableIfNeverSubscribed]; }); } @@ -3242,6 +3250,8 @@ - (void)_checkExpiredExpectedValues mtr_weakify(self); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (waitTime * NSEC_PER_SEC)), self.queue, ^{ mtr_strongify(self); + VerifyOrReturn(self); + [self _performScheduledExpirationCheck]; }); } diff --git a/src/darwin/Framework/CHIPTests/MTRCertificateInfoTests.m b/src/darwin/Framework/CHIPTests/MTRCertificateInfoTests.m index bdf52e33d37b43..8a532a8e3300dc 100644 --- a/src/darwin/Framework/CHIPTests/MTRCertificateInfoTests.m +++ b/src/darwin/Framework/CHIPTests/MTRCertificateInfoTests.m @@ -117,6 +117,7 @@ - (void)testParseOperationalCertificateTLV { MTRCertificateInfo * info = [[MTRCertificateInfo alloc] initWithTLVBytes:self.exampleNOCertTLV]; XCTAssertNotNil(info); + XCTAssertNotNil(info.publicKeyData); XCTAssertEqual([NSDate.now compare:info.notBefore], NSOrderedDescending); XCTAssertEqual([NSDate.now compare:info.notAfter], NSOrderedAscending); diff --git a/src/platform/nxp/common/DnssdImpl.cpp b/src/platform/nxp/common/DnssdImpl.cpp index 439327017897b2..5b35693534059f 100644 --- a/src/platform/nxp/common/DnssdImpl.cpp +++ b/src/platform/nxp/common/DnssdImpl.cpp @@ -33,15 +33,25 @@ namespace Dnssd { CHIP_ERROR ChipDnssdInit(DnssdAsyncReturnCallback initCallback, DnssdAsyncReturnCallback errorCallback, void * context) { - NxpChipDnssdInit(initCallback, errorCallback, context); - OpenThreadDnssdInit(initCallback, errorCallback, context); + if (ConnectivityMgr().IsWiFiStationConnected()) + { + ReturnErrorOnFailure(NxpChipDnssdInit(initCallback, errorCallback, context)); + } + else if (ConnectivityMgr().IsThreadProvisioned()) + { + ReturnErrorOnFailure(OpenThreadDnssdInit(initCallback, errorCallback, context)); + } + else + { + initCallback(context, CHIP_ERROR_INCORRECT_STATE); + } return CHIP_NO_ERROR; } void ChipDnssdShutdown() { - NxpChipDnssdShutdown(); + // Empty implementation. Intentionally left blank } CHIP_ERROR ChipDnssdPublishService(const DnssdService * service, DnssdPublishCallback callback, void * context) diff --git a/src/platform/nxp/common/DnssdImplBr.cpp b/src/platform/nxp/common/DnssdImplBr.cpp index 6b84f1f258d8be..56ccb6f13ade52 100644 --- a/src/platform/nxp/common/DnssdImplBr.cpp +++ b/src/platform/nxp/common/DnssdImplBr.cpp @@ -144,23 +144,17 @@ static uint32_t mServiceListFreeIndex; CHIP_ERROR NxpChipDnssdInit(DnssdAsyncReturnCallback initCallback, DnssdAsyncReturnCallback errorCallback, void * context) { - CHIP_ERROR error = CHIP_NO_ERROR; - otInstance * thrInstancePtr = ThreadStackMgrImpl().OTInstance(); - struct netif * extNetif = (ConnectivityManagerImpl().GetExternalInterface()).GetPlatformInterface(); - - // Don't try to do anything until the mDNS server is started - VerifyOrExit(otMdnsIsEnabled(thrInstancePtr), error = CHIP_ERROR_INCORRECT_STATE); + struct netif * extNetif = (ConnectivityManagerImpl().GetExternalInterface()).GetPlatformInterface(); mNetifIndex = netif_get_index(extNetif); + initCallback(context, CHIP_NO_ERROR); -exit: - initCallback(context, error); - return error; + return CHIP_NO_ERROR; } void NxpChipDnssdShutdown() { - otMdnsSetEnabled(ThreadStackMgrImpl().OTInstance(), false, 0); + // Empty implementation. Intentionally left blank } #if USE_MDNS_NEXT_SERVICE_API CHIP_ERROR NxpChipDnssdRemoveServices() diff --git a/src/platform/nxp/rt/rt1060/BUILD.gn b/src/platform/nxp/rt/rt1060/BUILD.gn new file mode 100644 index 00000000000000..1e3d8f1e1e6ba9 --- /dev/null +++ b/src/platform/nxp/rt/rt1060/BUILD.gn @@ -0,0 +1,187 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") +import("${chip_root}/src/platform/device.gni") + +# If external SDK is used, do not import ${nxp_sdk_name}.gni +if (!nxp_external_sdk) { + import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni") +} + +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +assert(chip_device_platform == "nxp") + +source_set("nxp_factory_data") { +} +source_set("nxp_ota") { +} + +config("nxp_platform_config") { + defines = [ "EXTERNAL_BLEMANAGERIMPL_HEADER=\"platform/nxp/common/ble_zephyr/BLEManagerImpl.h\"" ] + include_dirs = [ + ".", + "../../common", + ] + if (chip_with_factory_data == 1) { + include_dirs += [ + ".", + "../../common/factory_data", + ] + defines += [ "CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA=1" ] + defines += [ "EXTERNAL_FACTORY_DATA_PROVIDER_IMPL_HEADER=\"platform/nxp/rt/rt1060/FactoryDataProviderImpl.h\"" ] + } + + # When OTBR is enabled Thread network commissioning cluster is enabled using chip_enable_secondary_nwk_if + if (chip_enable_wifi && chip_enable_openthread && + !chip_enable_secondary_nwk_if) { + defines += [ "_NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_" ] + } +} + +static_library("nxp_platform") { + output_name = "libCHIP_NXP_Port_RT1060" + cflags = [ + "-Wno-conversion", + "-Wno-sign-compare", + ] + deps = [] + defines = [] + sources = [ + "../../../FreeRTOS/SystemTimeSupport.cpp", + "../../../SingletonConfigurationManager.cpp", + "../../common/CHIPDevicePlatformEvent.h", + "../../common/ConfigurationManagerImpl.cpp", + "../../common/ConfigurationManagerImpl.h", + "../../common/ConnectivityManagerImpl.cpp", + "../../common/ConnectivityManagerImpl.h", + "../../common/DiagnosticDataProviderImpl.cpp", + "../../common/DiagnosticDataProviderImpl.h", + "../../common/KeyValueStoreManagerImpl.cpp", + "../../common/KeyValueStoreManagerImpl.h", + "../../common/Logging.cpp", + "../../common/NXPConfig.cpp", + "../../common/NXPConfig.h", + "../../common/NetworkProvisioningServerImpl.h", + "../../common/PlatformManagerImpl.h", + "../../common/SoftwareUpdateManagerImpl.h", + "../../common/ram_storage.c", + "../../common/ram_storage.h", + "CHIPDevicePlatformConfig.h", + "PlatformManagerImpl.cpp", + ] + + if (chip_enable_ble) { + sources += [ + # Adding random file which defines the function sys_csrand_get which is called by BLEManagerImpl from Zephyr + "${nxp_sdk_build_root}/rt_sdk/sdk_hook/zephyr/random/random.cpp", + "../../common/ble_zephyr/BLEAdvertisingArbiter.cpp", + "../../common/ble_zephyr/BLEManagerImpl.cpp", + "../../common/ble_zephyr/BLEManagerImpl.h", + ] + } + + public_deps = [ "${chip_root}/src/platform:platform_base" ] + + deps += [ + "${chip_root}/src/lib/dnssd:constants", + "${chip_root}/src/platform/logging:headers", + ] + + # define CHIP_PLAT_NVM_SUPPORT - See NXPConfig.cpp for definition + if (nxp_nvm_component == "nvm_fwk") { + defines += [ "CHIP_PLAT_NVM_SUPPORT=1" ] + } else if (nxp_nvm_component == "littlefs") { + defines += [ "CHIP_PLAT_NVM_SUPPORT=2" ] + } + + if (chip_enable_wifi) { + sources += [ + "../../common/NetworkCommissioningDriver.h", + "../../common/NetworkCommissioningWiFiDriver.cpp", + ] + } + if (chip_enable_ota_requestor) { + sources += [ + "../../common/OTAImageProcessorImpl.cpp", + "../../common/OTAImageProcessorImpl.h", + ] + } + + if (chip_enable_openthread) { + sources += [ + # Temporary fix, to be revert once PR #34662 is merged, build issue when using GN check argument + "${chip_root}/src/app/clusters/thread-border-router-management-server/thread-br-delegate.h", + "../../../OpenThread/GenericThreadBorderRouterDelegate.cpp", + "../../../OpenThread/GenericThreadBorderRouterDelegate.h", + "../../../OpenThread/OpenThreadUtils.cpp", + "../../common/ThreadStackManagerImpl.cpp", + "../../common/ThreadStackManagerImpl.h", + ] + + deps += [ "${chip_root}/src/app/common:ids" ] + + if (!nxp_build_matter_standalone_lib) { + deps += [ "${chip_root}/third_party/openthread:openthread" ] + public_deps += + [ "${chip_root}/third_party/openthread:openthread-platform" ] + } + + # dep required to include 'lib/spinel/spinel.h' in PlatformManagerImpl.cpp + deps += [ "${openthread_root}:libopenthread-spinel-rcp" ] + + if (chip_mdns == "platform") { + if (chip_enable_wifi) { + sources += [ + "../../../OpenThread/OpenThreadDnssdImpl.cpp", + "../../../OpenThread/OpenThreadDnssdImpl.h", + "../../common/DnssdImpl.cpp", + "../../common/DnssdImplBr.cpp", + "../../common/DnssdImplBr.h", + ] + } else { + sources += [ + "../../../OpenThread/DnssdImpl.cpp", + "../../../OpenThread/OpenThreadDnssdImpl.cpp", + "../../../OpenThread/OpenThreadDnssdImpl.h", + ] + } + deps += [ "${chip_root}/src/lib/dnssd:platform_header" ] + } + } + + if (chip_with_factory_data == 1) { + sources += [ + "../../common/factory_data/FactoryDataProvider.cpp", + "../../common/factory_data/FactoryDataProvider.h", + "FactoryDataProviderImpl.cpp", + "FactoryDataProviderImpl.h", + ] + + deps += [ "${chip_root}/src/credentials:credentials_header" ] + } + + deps += [ "${nxp_sdk_build_root}:nxp_sdk" ] + + public_deps += [ + "${chip_root}/examples/platform/nxp/common/app/support:freertos_memory_utils", + "${chip_root}/src/crypto", + "${chip_root}/src/platform:syscalls_stub", + ] + public_configs = [ ":nxp_platform_config" ] +} diff --git a/src/platform/nxp/rt/rt1060/BlePlatformConfig.h b/src/platform/nxp/rt/rt1060/BlePlatformConfig.h new file mode 100644 index 00000000000000..61ad3de197edef --- /dev/null +++ b/src/platform/nxp/rt/rt1060/BlePlatformConfig.h @@ -0,0 +1,36 @@ +/* + * + * Copyright (c) 2021-2022 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. + */ + +/** + * @file + * Platform-specific configuration overrides for the CHIP BLE + * Layer on RT1060 platforms using the NXP SDK. + * + */ + +#pragma once + +// ==================== Platform Adaptations ==================== + +/* Default NXP Platform adaptations are used */ + +// ========== Platform-specific Configuration Overrides ========= + +/* Default NXP Platform configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/ble_zephyr/BleNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1060/CHIPDevicePlatformConfig.h b/src/platform/nxp/rt/rt1060/CHIPDevicePlatformConfig.h new file mode 100644 index 00000000000000..0e45bd41086c89 --- /dev/null +++ b/src/platform/nxp/rt/rt1060/CHIPDevicePlatformConfig.h @@ -0,0 +1,42 @@ +/* + * + * Copyright (c) 2020-2022 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + * Platform-specific configuration overrides for the chip Device Layer + * on NXP platforms using the NXP SDK. + */ + +#pragma once + +// ==================== Platform Adaptations ==================== + +/* Default NXP Platform adaptations are used */ + +// ========== Platform-specific Configuration ========= + +// These are configuration options that are unique to the NXP platform. +// These can be overridden by the application as needed. + +// ========== Platform-specific Configuration Overrides ========= + +/* Default NXP Platform configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/CHIPDeviceNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1060/CHIPPlatformConfig.h b/src/platform/nxp/rt/rt1060/CHIPPlatformConfig.h new file mode 100644 index 00000000000000..7b08c5c17f7a94 --- /dev/null +++ b/src/platform/nxp/rt/rt1060/CHIPPlatformConfig.h @@ -0,0 +1,54 @@ +/* + * + * Copyright (c) 2020-2022 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + * Platform-specific configuration overrides for CHIP on + * NXP RT1060 platforms. + */ + +#pragma once + +#include + +// ==================== General Platform Adaptations ==================== + +/* Default NXP platform adaptations are used */ + +// ==================== Security Adaptations ==================== + +/* Default NXP Platform security adaptations are used */ + +// ==================== General Configuration Overrides ==================== + +/* Default NXP Platform general configuration overrides are used */ + +/* For now on RT1060, due to the current file system implementation only 5 fabrics are supported */ +#define CHIP_CONFIG_MAX_FABRICS 5 + +// ==================== Security Configuration Overrides ==================== + +/* Default NXP Platform security configuration overrides are used */ + +// ==================== WDM Configuration Overrides ==================== + +/* Default NXP Platform WDM Configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/CHIPNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.cpp b/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.cpp new file mode 100644 index 00000000000000..3fac3c7385f862 --- /dev/null +++ b/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.cpp @@ -0,0 +1,381 @@ +/* + * + * Copyright (c) 2022-2024 Project CHIP Authors + * Copyright 2023-2024 NXP + * + * 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 "FactoryDataProviderImpl.h" + +#if defined(__cplusplus) +extern "C" { +#endif /* __cplusplus */ + +#include "fsl_dcp.h" +#include "mflash_drv.h" + +#if defined(__cplusplus) +} +#endif /* __cplusplus */ + +#ifndef FACTORY_DATA_PROVIDER_LOG +#define FACTORY_DATA_PROVIDER_LOG 0 +#endif + +#if FACTORY_DATA_PROVIDER_LOG +#include "fsl_debug_console.h" +#define FACTORY_DATA_PROVIDER_PRINTF(...) \ + PRINTF("[%s] ", __FUNCTION__); \ + PRINTF(__VA_ARGS__); \ + PRINTF("\n\r"); +#else +#define FACTORY_DATA_PROVIDER_PRINTF(...) +#endif + +#define BLOCK_SIZE_16_BYTES 16 +#define SHA256_OUTPUT_SIZE 32 +#define HASH_ID 0xCE47BA5E +#define HASH_LEN 4 +#define CBC_INITIAL_VECTOR_SIZE 16 + +/* Grab symbol for the base address from the linker file. */ +extern uint32_t __FACTORY_DATA_START_OFFSET[]; +extern uint32_t __FACTORY_DATA_SIZE[]; + +namespace chip { +namespace DeviceLayer { + +FactoryDataProviderImpl FactoryDataProviderImpl::sInstance; + +CHIP_ERROR FactoryDataProviderImpl::SearchForId(uint8_t searchedType, uint8_t * pBuf, size_t bufLength, uint16_t & length, + uint32_t * contentAddr) +{ + CHIP_ERROR err = CHIP_ERROR_NOT_FOUND; + uint8_t type = 0; + uint32_t index = 0; + uint8_t * addrContent = NULL; + uint8_t * factoryDataAddress = &factoryDataRamBuffer[0]; + uint32_t factoryDataSize = sizeof(factoryDataRamBuffer); + uint16_t currentLen = 0; + + while (index < factoryDataSize) + { + /* Read the type */ + memcpy((uint8_t *) &type, factoryDataAddress + index, sizeof(type)); + index += sizeof(type); + + /* Read the len */ + memcpy((uint8_t *) ¤tLen, factoryDataAddress + index, sizeof(currentLen)); + index += sizeof(currentLen); + + /* Check if the type gotten is the expected one */ + if (searchedType == type) + { + FACTORY_DATA_PROVIDER_PRINTF("type = %d, currentLen = %d, bufLength =%d", type, currentLen, bufLength); + /* If pBuf is null it means that we only want to know if the Type has been found */ + if (pBuf != NULL) + { + /* If the buffer given is too small, fill only the available space */ + if (bufLength < currentLen) + { + currentLen = bufLength; + } + memcpy((uint8_t *) pBuf, factoryDataAddress + index, currentLen); + } + length = currentLen; + if (contentAddr != NULL) + { + *contentAddr = (uint32_t) factoryDataAddress + index; + } + err = CHIP_NO_ERROR; + break; + } + else if (type == 0) + { + /* No more type available , break the loop */ + break; + } + else + { + /* Jump to next data */ + index += currentLen; + } + } + + return err; +} + +CHIP_ERROR FactoryDataProviderImpl::SignWithDacKey(const ByteSpan & digestToSign, MutableByteSpan & outSignBuffer) +{ + Crypto::P256ECDSASignature signature; + Crypto::P256Keypair keypair; + + VerifyOrReturnError(IsSpanUsable(outSignBuffer), CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(IsSpanUsable(digestToSign), CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(outSignBuffer.size() >= signature.Capacity(), CHIP_ERROR_BUFFER_TOO_SMALL); + + // In a non-exemplary implementation, the public key is not needed here. It is used here merely because + // Crypto::P256Keypair is only (currently) constructable from raw keys if both private/public keys are present. + Crypto::P256PublicKey dacPublicKey; + uint16_t certificateSize = 0; + uint32_t certificateAddr; + ReturnErrorOnFailure(SearchForId(FactoryDataId::kDacCertificateId, NULL, 0, certificateSize, &certificateAddr)); + MutableByteSpan dacCertSpan((uint8_t *) certificateAddr, certificateSize); + + /* Extract Public Key of DAC certificate from itself */ + ReturnErrorOnFailure(Crypto::ExtractPubkeyFromX509Cert(dacCertSpan, dacPublicKey)); + + /* Get private key of DAC certificate from reserved section */ + uint16_t keySize = 0; + uint32_t keyAddr; + ReturnErrorOnFailure(SearchForId(FactoryDataId::kDacPrivateKeyId, NULL, 0, keySize, &keyAddr)); + MutableByteSpan dacPrivateKeySpan((uint8_t *) keyAddr, keySize); + + ReturnErrorOnFailure(LoadKeypairFromRaw(ByteSpan(dacPrivateKeySpan.data(), dacPrivateKeySpan.size()), + ByteSpan(dacPublicKey.Bytes(), dacPublicKey.Length()), keypair)); + + ReturnErrorOnFailure(keypair.ECDSA_sign_msg(digestToSign.data(), digestToSign.size(), signature)); + + return CopySpanToMutableSpan(ByteSpan{ signature.ConstBytes(), signature.Length() }, outSignBuffer); +} + +CHIP_ERROR FactoryDataProviderImpl::LoadKeypairFromRaw(ByteSpan privateKey, ByteSpan publicKey, Crypto::P256Keypair & keypair) +{ + Crypto::P256SerializedKeypair serialized_keypair; + ReturnErrorOnFailure(serialized_keypair.SetLength(privateKey.size() + publicKey.size())); + memcpy(serialized_keypair.Bytes(), publicKey.data(), publicKey.size()); + memcpy(serialized_keypair.Bytes() + publicKey.size(), privateKey.data(), privateKey.size()); + return keypair.Deserialize(serialized_keypair); +} + +CHIP_ERROR FactoryDataProviderImpl::Init(void) +{ + uint16_t len; + status_t status; + uint32_t factoryDataAddress = (uint32_t) __FACTORY_DATA_START_OFFSET; + uint32_t factoryDataSize = (uint32_t) __FACTORY_DATA_SIZE; + uint32_t hashId; + uint8_t currentBlock[BLOCK_SIZE_16_BYTES]; + uint8_t calculatedHash[SHA256_OUTPUT_SIZE]; + size_t outputHashSize = sizeof(calculatedHash); + uint16_t i; + CHIP_ERROR res; + + /* Init mflash */ + status = mflash_drv_init(); + + if (status != kStatus_Success || factoryDataSize > sizeof(factoryDataRamBuffer)) + return CHIP_ERROR_INTERNAL; + + /* Read hash id saved in flash */ + if (mflash_drv_read(factoryDataAddress, (uint32_t *) &mHeader, sizeof(mHeader)) != kStatus_Success) + { + return CHIP_ERROR_INTERNAL; + } + + if (mHeader.hashId != HASH_ID) + { + return CHIP_ERROR_NOT_FOUND; + } + + /* Update address to start after hash id to read size of factory data */ + factoryDataAddress += sizeof(mHeader); + + /* Load the buffer into RAM by reading each 16 bytes blocks */ + for (i = 0; i < (factoryDataSize / BLOCK_SIZE_16_BYTES); i++) + { + if (mflash_drv_read(factoryDataAddress + i * BLOCK_SIZE_16_BYTES, (uint32_t *) ¤tBlock[0], sizeof(currentBlock)) != + kStatus_Success) + { + return CHIP_ERROR_INTERNAL; + } + + /* Decrypt data if an encryptMode is set */ + if (encryptMode != encrypt_none) + { + res = ReadEncryptedData(&factoryDataRamBuffer[i * BLOCK_SIZE_16_BYTES], ¤tBlock[0], sizeof(currentBlock)); + if (res != CHIP_NO_ERROR) + return res; + } + else + { + /* Store the block unencrypted */ + memcpy(&factoryDataRamBuffer[i * BLOCK_SIZE_16_BYTES], ¤tBlock[0], sizeof(currentBlock)); + } + } + + /* Calculate SHA256 value over the factory data and compare with stored value */ + res = Hash256(&factoryDataRamBuffer[0], mHeader.size, &calculatedHash[0], &outputHashSize); + + if (res != CHIP_NO_ERROR) + return res; + + if (memcmp(&calculatedHash[0], &mHeader.hash[0], HASH_LEN) != 0) + { + return CHIP_ERROR_NOT_FOUND; + } + + ReturnErrorOnFailure(SearchForId(FactoryDataId::kVerifierId, NULL, 0, len)); + FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kVerifierId, len); + ReturnErrorOnFailure(SearchForId(FactoryDataId::kSaltId, NULL, 0, len)); + FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kSaltId, len); + ReturnErrorOnFailure(SearchForId(FactoryDataId::kIcId, NULL, 0, len)); + FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kIcId, len); + ReturnErrorOnFailure(SearchForId(FactoryDataId::kDacPrivateKeyId, NULL, 0, len)); + FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kDacPrivateKeyId, len); + ReturnErrorOnFailure(SearchForId(FactoryDataId::kDacCertificateId, NULL, 0, len)); + FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kDacCertificateId, len); + ReturnErrorOnFailure(SearchForId(FactoryDataId::kPaiCertificateId, NULL, 0, len)); + FACTORY_DATA_PROVIDER_PRINTF("[%d] len = %d", FactoryDataId::kPaiCertificateId, len); + ReturnErrorOnFailure(SearchForId(FactoryDataId::kDiscriminatorId, NULL, 0, len)); + + return CHIP_NO_ERROR; +} + +CHIP_ERROR FactoryDataProviderImpl::SetAes128Key(const uint8_t * keyAes128) +{ + CHIP_ERROR error = CHIP_ERROR_INVALID_ARGUMENT; + if (keyAes128 != nullptr) + { + pAesKey = keyAes128; + error = CHIP_NO_ERROR; + } + return error; +} + +CHIP_ERROR FactoryDataProviderImpl::SetKeySelected(KeySelect key) +{ + CHIP_ERROR error = CHIP_ERROR_INVALID_ARGUMENT; + if (key <= kDCP_OCOTPKeyHigh) + { + selectedKey = key; + error = CHIP_NO_ERROR; + } + return error; +} + +void FactoryDataProviderImpl::SetDCP_OTPKeySelect(void) +{ + switch (selectedKey) + { + case kDCP_OTPMKKeyLow: + IOMUXC_GPR->GPR3 &= ~(1 << IOMUXC_GPR_GPR3_DCP_KEY_SEL_SHIFT); + IOMUXC_GPR->GPR10 &= ~(1 << IOMUXC_GPR_GPR10_DCPKEY_OCOTP_OR_KEYMUX_SHIFT); + break; + case kDCP_OTPMKKeyHigh: + IOMUXC_GPR->GPR3 |= (1 << IOMUXC_GPR_GPR3_DCP_KEY_SEL_SHIFT); + IOMUXC_GPR->GPR10 &= ~(1 << IOMUXC_GPR_GPR10_DCPKEY_OCOTP_OR_KEYMUX_SHIFT); + break; + case kDCP_OCOTPKeyLow: + IOMUXC_GPR->GPR3 &= ~(1 << IOMUXC_GPR_GPR3_DCP_KEY_SEL_SHIFT); + IOMUXC_GPR->GPR10 |= (1 << IOMUXC_GPR_GPR10_DCPKEY_OCOTP_OR_KEYMUX_SHIFT); + break; + case kDCP_OCOTPKeyHigh: + IOMUXC_GPR->GPR3 |= (1 << IOMUXC_GPR_GPR3_DCP_KEY_SEL_SHIFT); + IOMUXC_GPR->GPR10 |= (1 << IOMUXC_GPR_GPR10_DCPKEY_OCOTP_OR_KEYMUX_SHIFT); + break; + default: + break; + } +} + +CHIP_ERROR FactoryDataProviderImpl::SetCbcInitialVector(const uint8_t * iv, uint16_t ivSize) +{ + CHIP_ERROR error = CHIP_ERROR_INVALID_ARGUMENT; + if (ivSize == CBC_INITIAL_VECTOR_SIZE) + { + cbcInitialVector = iv; + error = CHIP_NO_ERROR; + } + return error; +} + +CHIP_ERROR FactoryDataProviderImpl::SetEncryptionMode(EncryptionMode mode) +{ + CHIP_ERROR error = CHIP_ERROR_INVALID_ARGUMENT; + if (mode <= encrypt_cbc) + { + encryptMode = mode; + error = CHIP_NO_ERROR; + } + return error; +} + +CHIP_ERROR FactoryDataProviderImpl::ReadEncryptedData(uint8_t * desBuff, uint8_t * sourceAddr, uint16_t sizeToRead) +{ + status_t status; + dcp_handle_t m_handle; + dcp_config_t dcpConfig; + + /* Check that the length is aligned on 16 bytes */ + if ((sizeToRead % 16) != 0) + return CHIP_ERROR_INVALID_ARGUMENT; + + /* Check that the soft key has been correclty provisioned */ + if (selectedKey == kDCP_UseSoftKey && pAesKey == nullptr) + return CHIP_ERROR_INVALID_ARGUMENT; + + /* Check if the initial vector has been provisioned if CBC mode is chosen */ + if (encryptMode == encrypt_cbc && cbcInitialVector == nullptr) + return CHIP_ERROR_INVALID_ARGUMENT; + + if (!dcpDriverIsInitialized) + { + /* Initialize DCP */ + DCP_GetDefaultConfig(&dcpConfig); + SetDCP_OTPKeySelect(); + /* Reset and initialize DCP */ + DCP_Init(DCP, &dcpConfig); + dcpDriverIsInitialized = true; + } + + m_handle.channel = kDCP_Channel0; + m_handle.swapConfig = kDCP_NoSwap; + + if (selectedKey == kDCP_UseSoftKey) + m_handle.keySlot = kDCP_KeySlot0; + else + m_handle.keySlot = kDCP_OtpKey; + + status = DCP_AES_SetKey(DCP, &m_handle, pAesKey, 16); + if (status != kStatus_Success) + return CHIP_ERROR_INTERNAL; + + if (encryptMode == encrypt_ecb) + DCP_AES_DecryptEcb(DCP, &m_handle, sourceAddr, desBuff, sizeToRead); + else + DCP_AES_DecryptCbc(DCP, &m_handle, sourceAddr, desBuff, sizeToRead, cbcInitialVector); + + return CHIP_NO_ERROR; +} + +CHIP_ERROR FactoryDataProviderImpl::Hash256(const uint8_t * input, size_t inputSize, uint8_t * output, size_t * outputSize) +{ + status_t status; + dcp_handle_t m_handle; + + m_handle.channel = kDCP_Channel0; + m_handle.swapConfig = kDCP_NoSwap; + m_handle.keySlot = kDCP_KeySlot0; + + status = DCP_HASH(DCP, &m_handle, kDCP_Sha256, input, inputSize, output, outputSize); + + if (status != kStatus_Success) + return CHIP_ERROR_INTERNAL; + + return CHIP_NO_ERROR; +} + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.h b/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.h new file mode 100644 index 00000000000000..6eb65fab7207bd --- /dev/null +++ b/src/platform/nxp/rt/rt1060/FactoryDataProviderImpl.h @@ -0,0 +1,104 @@ +/* + * + * Copyright (c) 2022-2024 Project CHIP Authors + * Copyright 2023-2024 NXP + * + * 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 + +#define FACTORY_DATA_MAX_SIZE 4096 + +namespace chip { +namespace DeviceLayer { + +/** + * @brief This class provides Commissionable data and Device Attestation Credentials. + * + * This implementation allows to use the DCP RT1060 hardware module to load the Matter factory + * dataset in RAM at the boot. + * + * Depending on how the dataset have been encrypted, specific AES hardware of software keys can be + * used. + * + * Example of calls for loading the dataset using a software key: + * + * FactoryDataPrvdImpl().SetEncryptionMode(FactoryDataProvider::encrypt_ecb); + * FactoryDataPrvdImpl().SetAes128Key(&aes128TestKey[0]); + * FactoryDataPrvdImpl().Init(); + * + * Example of calls for loading the dataset using a OTP key: + * + * FactoryDataPrvdImpl().SetEncryptionMode(FactoryDataProvider::encrypt_ecb); + * FactoryDataPrvdImpl().SetKeySelected(KeySelect::); + * FactoryDataPrvdImpl().Init(); + */ + +class FactoryDataProviderImpl : public FactoryDataProvider +{ +public: + enum KeySelect + { + kDCP_UseSoftKey = 0U, + kDCP_OTPMKKeyLow = 1U, /* Use [127:0] from snvs key as dcp key */ + kDCP_OTPMKKeyHigh = 2U, /* Use [255:128] from snvs key as dcp key */ + kDCP_OCOTPKeyLow = 3U, /* Use [127:0] from ocotp key as dcp key */ + kDCP_OCOTPKeyHigh = 4U /* Use [255:128] from ocotp key as dcp key */ + }; + + static FactoryDataProviderImpl sInstance; + + CHIP_ERROR Init(void); + CHIP_ERROR SearchForId(uint8_t searchedType, uint8_t * pBuf, size_t bufLength, uint16_t & length, + uint32_t * contentAddr = NULL); + CHIP_ERROR SignWithDacKey(const ByteSpan & digestToSign, MutableByteSpan & outSignBuffer); + + CHIP_ERROR SetAes128Key(const uint8_t * keyAes128); + CHIP_ERROR SetKeySelected(KeySelect key); + CHIP_ERROR SetEncryptionMode(EncryptionMode mode); + CHIP_ERROR SetCbcInitialVector(const uint8_t * iv, uint16_t ivSize); + +private: + struct Header + { + uint32_t hashId; + uint32_t size; + uint8_t hash[4]; + }; + uint8_t factoryDataRamBuffer[FACTORY_DATA_MAX_SIZE]; + Header mHeader; + const uint8_t * pAesKey = nullptr; + const uint8_t * cbcInitialVector = nullptr; + EncryptionMode encryptMode = encrypt_none; + KeySelect selectedKey; + bool dcpDriverIsInitialized; + void SetDCP_OTPKeySelect(void); + CHIP_ERROR ReadEncryptedData(uint8_t * desBuff, uint8_t * sourceAddr, uint16_t sizeToRead); + CHIP_ERROR Hash256(const uint8_t * input, size_t inputSize, uint8_t * output, size_t * outputSize); + CHIP_ERROR LoadKeypairFromRaw(ByteSpan privateKey, ByteSpan publicKey, Crypto::P256Keypair & keypair); +}; + +inline FactoryDataProvider & FactoryDataPrvd() +{ + return FactoryDataProviderImpl::sInstance; +} + +inline FactoryDataProviderImpl & FactoryDataPrvdImpl() +{ + return FactoryDataProviderImpl::sInstance; +} + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/nxp/rt/rt1060/InetPlatformConfig.h b/src/platform/nxp/rt/rt1060/InetPlatformConfig.h new file mode 100644 index 00000000000000..b9153fd9f19741 --- /dev/null +++ b/src/platform/nxp/rt/rt1060/InetPlatformConfig.h @@ -0,0 +1,40 @@ +/* + * + * Copyright (c) 2020-2022 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + * Platform-specific configuration overrides for the CHIP Inet + * Layer on RT1060 platforms using the NXP SDK. + * + */ + +#pragma once + +#include + +// ==================== Platform Adaptations ==================== + +/* Default NXP Platform adaptations are used */ + +// ========== Platform-specific Configuration Overrides ========= + +/* Default NXP Platform configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/InetNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1060/PlatformManagerImpl.cpp b/src/platform/nxp/rt/rt1060/PlatformManagerImpl.cpp new file mode 100644 index 00000000000000..8ecdf01e9c1c6d --- /dev/null +++ b/src/platform/nxp/rt/rt1060/PlatformManagerImpl.cpp @@ -0,0 +1,548 @@ +/* + * + * Copyright (c) 2020-2024 Project CHIP Authors + * Copyright (c) 2020 Nest Labs, Inc. + * Copyright 2023-2024 NXP + * 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 + * Provides an implementation of the PlatformManager object + * for RT1060 platforms using the NXP RT1060 SDK. + */ +/* this file behaves like a config.h, comes first */ +#include + +#include "DiagnosticDataProviderImpl.h" +#include "fsl_adapter_rng.h" +#include "fsl_os_abstraction.h" +#include "fwk_platform_coex.h" +#include "ksdk_mbedtls.h" +#include +#include +#include +#include +#include + +#ifdef WATCHDOG_ALLOWED +#include "fsl_wdog.h" +#endif + +#include + +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR +#include "OtaSupport.h" +#endif + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD +#include "fwk_platform_ot.h" +#include "ot_platform_common.h" +#if CHIP_DEVICE_CONFIG_CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED +#include "lib/spinel/spinel.h" +#define OT_NXP_SPINEL_PROP_VENDOR_BLE_STATE SPINEL_PROP_VENDOR__BEGIN +#endif /* CHIP_DEVICE_CONFIG_CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED */ +#endif + +#if !CHIP_DEVICE_CONFIG_ENABLE_THREAD && !CHIP_DEVICE_CONFIG_ENABLE_WPA + +#include "board.h" +#include "clock_config.h" +#include "fsl_phy.h" +#include "fsl_silicon_id.h" +#include "pin_mux.h" + +#include "fsl_enet_mdio.h" +#include "fsl_phyksz8081.h" + +#include "enet_ethernetif.h" +#include "fsl_debug_console.h" +#include "lwip/netif.h" +#include "lwip/netifapi.h" +#include "lwip/opt.h" +#include "lwip/tcpip.h" +#include "netif/ethernet.h" + +//----LWIP defines----// + +/* Address of PHY interface. */ +#define EXAMPLE_PHY_ADDRESS BOARD_ENET0_PHY_ADDRESS + +/* MDIO operations. */ +#define EXAMPLE_MDIO_OPS enet_ops + +/* PHY operations. */ +#define EXAMPLE_PHY_OPS phyksz8081_ops + +/* ENET clock frequency. */ +#define EXAMPLE_CLOCK_FREQ CLOCK_GetFreq(kCLOCK_IpgClk) + +#ifndef EXAMPLE_NETIF_INIT_FN +/*! @brief Network interface initialization function. */ +#define EXAMPLE_NETIF_INIT_FN ethernetif0_init +#endif /* EXAMPLE_NETIF_INIT_FN */ + +/*! @brief Stack size of the temporary lwIP initialization thread. */ +#define INIT_THREAD_STACKSIZE 1024 + +/*! @brief Priority of the temporary lwIP initialization thread. */ +#define INIT_THREAD_PRIO DEFAULT_THREAD_PRIO + +static mdio_handle_t mdioHandle = { .ops = &EXAMPLE_MDIO_OPS }; +static phy_handle_t phyHandle = { .phyAddr = EXAMPLE_PHY_ADDRESS, .mdioHandle = &mdioHandle, .ops = &EXAMPLE_PHY_OPS }; + +#endif + +extern "C" void BOARD_InitHardware(void); +extern "C" void otPlatSetResetFunction(void (*fp)(void)); +extern "C" void initiateResetInIdle(void); + +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + +/* +Currently only IW612 and K32W0 support controller initialization in the connectivity framework +* Include should be removed otherwise it will introduce double firmware definition +*/ +#ifndef WIFI_IW612_BOARD_MURATA_2EL_M2 +#include "wlan_bt_fw.h" +#endif + +extern "C" { +#include "wlan.h" +#include "wm_net.h" +} + +#endif /* CHIP_DEVICE_CONFIG_ENABLE_WPA */ + +extern "C" void vApplicationMallocFailedHook(void) +{ + ChipLogError(DeviceLayer, "Malloc Failure"); +} + +#if WIFI_PTA_ENABLED && (CHIP_DEVICE_CONFIG_ENABLE_WPA && CHIP_ENABLE_OPENTHREAD) +#ifdef SD8801 +#define HOSTCMD_RESP_BUFF_SIZE 1024 +/* 8801 command buffer to enable External Coexistence. + * Source: SDK 2.11.1, wifi_cli demo, wlan_tests.c file. */ +const uint8_t ext_coex_8801_cmd_buf[] = { 0xe0, 0, 0x1d, 0, 0x17, 0, 0, 0, 0x01, 0, 0, 0, 0x2f, 0x02, 0x0d, + 0x00, 0x01, 0, 0, 0x03, 0x01, 0x02, 0x01, 0x01, 0x00, 0x28, 0x00, 0x3c, 0x00 }; +#endif + +static CHIP_ERROR EnableWiFiCoexistence(void) +{ + CHIP_ERROR ret = CHIP_NO_ERROR; + +#ifdef SD8801 + int status = WM_FAIL; + uint8_t * rspBuff = NULL; + uint32_t reqd_len = 0; + + rspBuff = (uint8_t *) pvPortMalloc(HOSTCMD_RESP_BUFF_SIZE); + if (rspBuff != NULL) + { + status = wlan_send_hostcmd((void *) ext_coex_8801_cmd_buf, sizeof(ext_coex_8801_cmd_buf) / sizeof(u8_t), rspBuff, + HOSTCMD_RESP_BUFF_SIZE, &reqd_len); + + if (status == WM_SUCCESS) + { + ChipLogProgress(DeviceLayer, "8801 Coexistence enabled"); + } + else + { + ChipLogError(DeviceLayer, "8801 Coexistence enabling failed = %d", status); + ret = CHIP_ERROR_INTERNAL; + } + + vPortFree(rspBuff); + } + else + { + ChipLogError(DeviceLayer, "Failed to allocate memory for Wi-Fi coexistence response buffer"); + } +#else + ChipLogError(DeviceLayer, "This chip does not support Wi-Fi and OpenThread coexistence"); + ret = CHIP_ERROR_INTERNAL; +#endif + + return ret; +} +#endif + +#if !CHIP_DEVICE_CONFIG_ENABLE_WPA +extern "C" void vApplicationIdleHook(void) +{ + chip::DeviceLayer::PlatformManagerImpl::IdleHook(); +} +#endif + +extern "C" void __wrap_exit(int __status) +{ + ChipLogError(DeviceLayer, "======> error exit function !!!"); + assert(0); +} + +namespace chip { +namespace DeviceLayer { + +PlatformManagerImpl PlatformManagerImpl::sInstance; + +void PlatformManagerImpl::HardwareInit(void) +{ + BOARD_InitHardware(); + SysTick_Config(SystemCoreClock / configTICK_RATE_HZ); +} + +CHIP_ERROR PlatformManagerImpl::ServiceInit(void) +{ + status_t status; + CHIP_ERROR chipRes = CHIP_NO_ERROR; + + status = CRYPTO_InitHardware(); + + if (status != 0) + { + chipRes = CHIP_ERROR_INTERNAL; + ChipLogError(DeviceLayer, "Crypto hardware init error"); + } + + return chipRes; +} + +/* For IW612 transceiver firmware initialization is done by PLATFORM_InitControllers */ +#ifndef WIFI_IW612_BOARD_MURATA_2EL_M2 +#if CHIP_DEVICE_CONFIG_ENABLE_WPA +CHIP_ERROR PlatformManagerImpl::WiFiInterfaceInit(void) +{ + CHIP_ERROR result = CHIP_NO_ERROR; + int wifi_status = WM_SUCCESS; + + ChipLogProgress(DeviceLayer, "Initialize WLAN"); + +#if defined(SD8801) && CHIP_ENABLE_OPENTHREAD + /* + * The 88W8801 is quirky with the REQ & PRIO lines + * at boot: they need to be held HIGH while booting. + * So disable the coexistence mechanism on the RCP, + * since internally this puts the lines HIGH. + */ + otPlatRadioSetCoexEnabled(NULL, false); +#endif + + wifi_status = wlan_init(wlan_fw_bin, wlan_fw_bin_len); + if (wifi_status != WM_SUCCESS) + { + ChipLogError(DeviceLayer, "WLAN initialization failed"); + result = CHIP_ERROR_INTERNAL; + } + else + { + ChipLogProgress(DeviceLayer, "WLAN initialized"); + } + +#if WIFI_PTA_ENABLED && (CHIP_ENABLE_OPENTHREAD) + if (result == CHIP_NO_ERROR) + { + /* In case we have both Wi-Fi and OpenThread active, enable coexistence on Wi-Fi side */ + if (EnableWiFiCoexistence() != CHIP_NO_ERROR) + { + ChipLogError(DeviceLayer, "Failed to initialize Wi-Fi and OpenThread coexistence"); + } + } +#endif +#if defined(SD8801) && CHIP_ENABLE_OPENTHREAD + /* + * Re-enabling the coexistence is done here because enabling it too fast + * can lead to unexpected hangs of the coexistence mechanism. Up to this point, + * all the 15.4 requests will be 'pass-through' i.e. will always be granted + * access. + */ + otPlatRadioSetCoexEnabled(NULL, true); +#endif + + return result; +} +#endif +#endif + +#if !CHIP_DEVICE_CONFIG_ENABLE_THREAD && !CHIP_DEVICE_CONFIG_ENABLE_WPA +CHIP_ERROR PlatformManagerImpl::EthernetInterfaceInit() +{ + + static struct netif netif; + ethernetif_config_t enet_config = { + .phyHandle = &phyHandle, +#ifdef configMAC_ADDR + .macAddress = configMAC_ADDR, +#endif + }; + + mdioHandle.resource.csrClock_Hz = EXAMPLE_CLOCK_FREQ; + +#ifndef configMAC_ADDR + /* Set special address for each chip. */ + (void) SILICONID_ConvertToMacAddr(&enet_config.macAddress); +#endif + + netifapi_netif_add(&netif, &enet_config, EXAMPLE_NETIF_INIT_FN, tcpip_input); + + netifapi_netif_set_default(&netif); + netifapi_netif_set_up(netif_default); + LOCK_TCPIP_CORE(); + netif_create_ip6_linklocal_address(netif_default, 1); + UNLOCK_TCPIP_CORE(); + + vTaskDelay(pdMS_TO_TICKS(1500)); + + for (uint8_t i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) + { + const char * str_ip = "-"; + if (ip6_addr_isvalid(netif_ip6_addr_state(netif_default, i))) + { + str_ip = ip6addr_ntoa(netif_ip6_addr(netif_default, i)); + } + PRINTF(" IPv6 Address%d : %s\r\n", i, str_ip); + } + PRINTF("************************************************\r\n"); + + if (netif_is_up(&netif)) + { + return CHIP_NO_ERROR; + } + + return CHIP_ERROR_NOT_CONNECTED; +} +#endif + +CHIP_ERROR PlatformManagerImpl::_InitChipStack(void) +{ + CHIP_ERROR err = CHIP_ERROR_INTERNAL; + int osError; + + /* Initialize platform services */ + err = ServiceInit(); + SuccessOrExit(err); + + // Initialize the configuration system. + err = Internal::NXPConfig::Init(); + SuccessOrExit(err); + + SetConfigurationMgr(&ConfigurationManagerImpl::GetDefaultInstance()); + SetDiagnosticDataProvider(&DiagnosticDataProviderImpl::GetDefaultInstance()); + +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + /* Initialize LwIP via Wi-Fi layer. */ + net_ipv4stack_init(); +#else + /* Initialize LwIP directly. */ + tcpip_init(NULL, NULL); +#endif + +/* Currently only IW612 and K32W0 support controller initialization in the connectivity framework */ +#ifdef WIFI_IW612_BOARD_MURATA_2EL_M2 + /* Init the controller by giving as an arg the connectivity supported */ + PLATFORM_InitControllers(connBle_c +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + | conn802_15_4_c +#endif +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + | connWlan_c +#endif + ); +#endif + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + PLATFORM_InitOt(); + /* + * Initialize the RCP here: the WiFi initialization requires to enable/disable + * coexistence through the Spinel interface; as such, the otPlatRadioInit() call + * will fail if done afterwards + */ + otPlatLogInit(); + otPlatRadioInit(); + otPlatSetResetFunction(initiateResetInIdle); + otPlatRandomInit(); +#endif + +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + osError = OSA_SetupIdleFunction(chip::DeviceLayer::PlatformManagerImpl::IdleHook); + if (osError != WM_SUCCESS) + { + ChipLogError(DeviceLayer, "Failed to setup idle function"); + err = CHIP_ERROR_NO_MEMORY; + goto exit; + } + +/* For IW612 transceiver firmware initialization is done by PLATFORM_InitControllers */ +#ifndef WIFI_IW612_BOARD_MURATA_2EL_M2 + err = WiFiInterfaceInit(); +#endif + + if (err != CHIP_NO_ERROR) + { + ChipLogProgress(DeviceLayer, + "Wi-Fi module initialization failed. Make sure the Wi-Fi/BLE module is properly configured and connected " + "with the board and start again!"); + chipDie(); + } + ChipLogProgress(DeviceLayer, "Wi-Fi module initialization done."); +#elif !CHIP_DEVICE_CONFIG_ENABLE_THREAD + err = EthernetInterfaceInit(); + + if (err != CHIP_NO_ERROR) + { + ChipLogProgress(DeviceLayer, + "LWIP interface initialization failed. Make sure there is internet conectivity on the board and reset!"); + chipDie(); + } + ChipLogProgress(DeviceLayer, "LWIP interface initialization done"); +#endif + + // Call _InitChipStack() on the generic implementation base class + // to finish the initialization process. + err = Internal::GenericPlatformManagerImpl_FreeRTOS::_InitChipStack(); + SuccessOrExit(err); + + err = System::Clock::InitClock_RealTime(); + SuccessOrExit(err); + + mStartTime = System::SystemClock().GetMonotonicTimestamp(); + +exit: + return err; +} + +void PlatformManagerImpl::SaveSettings(void) +{ +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + otPlatSaveSettingsIdle(); +#endif +} + +void PlatformManagerImpl::IdleHook(void) +{ + +#ifdef WATCHDOG_ALLOWED + WDOG_Refresh(WDOG1); +#endif + + bool isResetScheduled = PlatformMgrImpl().GetResetInIdleValue(); + if (isResetScheduled) + { + /* + * In case a reset in IDLE has been scheduled + * Disable IRQs so that the idle task won't be preempted until the reset + */ + OSA_InterruptDisable(); + } + + chip::DeviceLayer::Internal::NXPConfig::RunSystemIdleTask(); + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + SaveSettings(); +#endif + +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + /* Resume OTA Transactions in Idle task */ + OTA_TransactionResume(); +#endif + + /* + * In case a reset in idle operation has been posted, + * reset the device after having run the idle function + */ + if (isResetScheduled) + { + PlatformMgrImpl().Reset(); + } +} + +void PlatformManagerImpl::Reset(void) +{ + ChipLogProgress(DeviceLayer, "System restarting"); + // Restart the system. + NVIC_SystemReset(); + while (1) + { + } +} + +void PlatformManagerImpl::ScheduleResetInIdle(void) +{ + resetInIdle = true; +} + +bool PlatformManagerImpl::GetResetInIdleValue(void) +{ + return resetInIdle; +} + +extern "C" void initiateResetInIdle(void) +{ + PlatformMgr().Shutdown(); + PlatformMgrImpl().ScheduleResetInIdle(); +} + +extern "C" void scheduleResetInIdle(void) +{ + PlatformMgrImpl().ScheduleResetInIdle(); +} + +extern "C" bool getResetInIdleValue(void) +{ + return PlatformMgrImpl().GetResetInIdleValue(); +} + +void PlatformManagerImpl::StopBLEConnectivity(void) +{ +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + otPlatRadioSendSetPropVendorUint8Cmd(OT_NXP_SPINEL_PROP_VENDOR_BLE_STATE, 0); +#endif /* #if CHIP_DEVICE_CONFIG_ENABLE_THREAD */ +} + +void PlatformManagerImpl::_Shutdown() +{ + uint64_t upTime = 0; + + if (GetDiagnosticDataProvider().GetUpTime(upTime) == CHIP_NO_ERROR) + { + uint32_t totalOperationalHours = 0; + + if (ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours) == CHIP_NO_ERROR) + { + ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + static_cast(upTime / 3600)); + } + else + { + ChipLogError(DeviceLayer, "Failed to get total operational hours of the Node"); + } + } + else + { + ChipLogError(DeviceLayer, "Failed to get current uptime since the Node’s last reboot"); + } + + /* Handle the server shutting down & emit the ShutDown event*/ + PlatformMgr().HandleServerShuttingDown(); + /* Shutdown all layers */ + Internal::GenericPlatformManagerImpl_FreeRTOS::_Shutdown(); +} + +} // namespace DeviceLayer +} // namespace chip + +extern "C" void mt_wipe(void) +{ + chip::DeviceLayer::Internal::NXPConfig::FactoryResetConfig(); +} diff --git a/src/platform/nxp/rt/rt1060/SystemPlatformConfig.h b/src/platform/nxp/rt/rt1060/SystemPlatformConfig.h new file mode 100644 index 00000000000000..17f3c18dd39ee9 --- /dev/null +++ b/src/platform/nxp/rt/rt1060/SystemPlatformConfig.h @@ -0,0 +1,40 @@ +/* + * + * Copyright (c) 2020-2022 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + * Platform-specific configuration overrides for the CHIP System + * Layer on NXP RT1060 Platforms. + * + */ + +#pragma once + +#include + +// ==================== Platform Adaptations ==================== + +/* Default NXP Platform adaptations are used */ + +// ========== Platform-specific Configuration Overrides ========= + +/* Default NXP Platform configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/SystemNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1060/args.gni b/src/platform/nxp/rt/rt1060/args.gni new file mode 100644 index 00000000000000..b5fe5340f8ff38 --- /dev/null +++ b/src/platform/nxp/rt/rt1060/args.gni @@ -0,0 +1,57 @@ +# Copyright (c) 2020-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. + +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") + +rt_platform = "rt1060" +nxp_platform = "rt/${rt_platform}" +nxp_sdk_name = "rt_sdk" +chip_device_platform = "nxp" +lwip_platform = "nxp" + +# ARM architecture flags will be set based on NXP board. +arm_platform_config = "${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_arm.gni" + +chip_device_project_config_include = "" +chip_project_config_include = "" +chip_inet_project_config_include = "" +chip_system_project_config_include = "" +chip_ble_project_config_include = "" + +chip_build_tests = false + +#This enables the EventList global attribute +enable_eventlist_attribute = true + +# TODO : Enable the OTA Requestor by default. +# This requires the mcuboot bootloader to be used, which reserves the first 256 kB of the flash. +# If mcuboot is not used, "no_mcuboot" must be set to true in the gn gen build command +# in order for the application to be linked at the base of the flash. +#chip_enable_ota_requestor = true +declare_args() { + # TODO : set no_mcuboot to false by default when enabling ota requestor by default + no_mcuboot = true + + chip_enable_secondary_nwk_if = false +} + +mbedtls_target = "${nxp_sdk_build_root}:nxp_mbedtls" + +openthread_external_mbedtls = mbedtls_target +openthread_project_core_config_file = "OpenThreadConfig.h" +openthread_core_config_deps = [ "${chip_root}/third_party/openthread/platforms/nxp/${nxp_platform}:openthread_core_config_rt1060" ] +openthread_core_config_platform_check_file = + "openthread-core-rt1060-config-check.h" +openthread_external_platform = "${chip_root}/third_party/openthread/platforms/nxp/${nxp_platform}:libopenthread-rt1060" diff --git a/src/platform/nxp/rt/rt1170/BUILD.gn b/src/platform/nxp/rt/rt1170/BUILD.gn new file mode 100644 index 00000000000000..4bfd1034a78f21 --- /dev/null +++ b/src/platform/nxp/rt/rt1170/BUILD.gn @@ -0,0 +1,190 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") +import("${chip_root}/src/platform/device.gni") + +# If external SDK is used, do not import ${nxp_sdk_name}.gni +if (!nxp_external_sdk) { + import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni") +} + +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +assert(chip_device_platform == "nxp") + +source_set("nxp_factory_data") { +} +source_set("nxp_ota") { +} + +config("nxp_platform_config") { + defines = [ "EXTERNAL_BLEMANAGERIMPL_HEADER=\"platform/nxp/common/ble_zephyr/BLEManagerImpl.h\"" ] + include_dirs = [ + ".", + "../../common", + ] + if (chip_with_factory_data == 1) { + include_dirs += [ + ".", + "../../common/factory_data", + ] + defines += [ + "CONFIG_CHIP_PLAT_LOAD_REAL_FACTORY_DATA=1", + "CONFIG_CHIP_ENCRYPTED_FACTORY_DATA=1", + ] + defines += [ "EXTERNAL_FACTORY_DATA_PROVIDER_IMPL_HEADER=\"platform/nxp/common/factory_data/FactoryDataProviderFwkImpl.h\"" ] + } + + # When OTBR is enabled Thread network commissioning cluster is enabled using chip_enable_secondary_nwk_if + if (chip_enable_wifi && chip_enable_openthread && + !chip_enable_secondary_nwk_if) { + defines += [ "_NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_" ] + } +} + +static_library("nxp_platform") { + output_name = "libCHIP_NXP_Port_RT1170" + cflags = [ + "-Wno-conversion", + "-Wno-sign-compare", + ] + deps = [] + defines = [] + sources = [ + "../../../FreeRTOS/SystemTimeSupport.cpp", + "../../../SingletonConfigurationManager.cpp", + "../../common/CHIPDevicePlatformEvent.h", + "../../common/ConfigurationManagerImpl.cpp", + "../../common/ConfigurationManagerImpl.h", + "../../common/ConnectivityManagerImpl.cpp", + "../../common/ConnectivityManagerImpl.h", + "../../common/DiagnosticDataProviderImpl.cpp", + "../../common/DiagnosticDataProviderImpl.h", + "../../common/KeyValueStoreManagerImpl.cpp", + "../../common/KeyValueStoreManagerImpl.h", + "../../common/Logging.cpp", + "../../common/NXPConfig.cpp", + "../../common/NXPConfig.h", + "../../common/NetworkProvisioningServerImpl.h", + "../../common/PlatformManagerImpl.h", + "../../common/SoftwareUpdateManagerImpl.h", + "../../common/ram_storage.c", + "../../common/ram_storage.h", + "CHIPDevicePlatformConfig.h", + "PlatformManagerImpl.cpp", + ] + + if (chip_enable_ble) { + sources += [ + # Adding random file which defines the function sys_csrand_get which is called by BLEManagerImpl from Zephyr + "${nxp_sdk_build_root}/rt_sdk/sdk_hook/zephyr/random/random.cpp", + "../../common/ble_zephyr/BLEAdvertisingArbiter.cpp", + "../../common/ble_zephyr/BLEManagerImpl.cpp", + "../../common/ble_zephyr/BLEManagerImpl.h", + ] + } + + public_deps = [ "${chip_root}/src/platform:platform_base" ] + + deps += [ + "${chip_root}/src/lib/dnssd:constants", + "${chip_root}/src/platform/logging:headers", + ] + + # define CHIP_PLAT_NVM_SUPPORT - See NXPConfig.cpp for definition + if (nxp_nvm_component == "nvm_fwk") { + defines += [ "CHIP_PLAT_NVM_SUPPORT=1" ] + } else if (nxp_nvm_component == "littlefs") { + defines += [ "CHIP_PLAT_NVM_SUPPORT=2" ] + } + + if (chip_enable_wifi) { + sources += [ + "../../common/NetworkCommissioningDriver.h", + "../../common/NetworkCommissioningWiFiDriver.cpp", + ] + } + if (chip_enable_ota_requestor) { + sources += [ + "../../common/OTAImageProcessorImpl.cpp", + "../../common/OTAImageProcessorImpl.h", + ] + } + + if (chip_enable_openthread) { + sources += [ + # Temporary fix, to be revert once PR #34662 is merged, build issue when using GN check argument + "${chip_root}/src/app/clusters/thread-border-router-management-server/thread-br-delegate.h", + "../../../OpenThread/GenericThreadBorderRouterDelegate.cpp", + "../../../OpenThread/GenericThreadBorderRouterDelegate.h", + "../../../OpenThread/OpenThreadUtils.cpp", + "../../common/ThreadStackManagerImpl.cpp", + "../../common/ThreadStackManagerImpl.h", + ] + + deps += [ "${chip_root}/src/app/common:ids" ] + + if (!nxp_build_matter_standalone_lib) { + deps += [ "${chip_root}/third_party/openthread:openthread" ] + public_deps += + [ "${chip_root}/third_party/openthread:openthread-platform" ] + } + + # dep required to include 'lib/spinel/spinel.h' in PlatformManagerImpl.cpp + deps += [ "${openthread_root}:libopenthread-spinel-rcp" ] + + if (chip_mdns == "platform") { + if (chip_enable_wifi) { + sources += [ + "../../../OpenThread/OpenThreadDnssdImpl.cpp", + "../../../OpenThread/OpenThreadDnssdImpl.h", + "../../common/DnssdImpl.cpp", + "../../common/DnssdImplBr.cpp", + "../../common/DnssdImplBr.h", + ] + } else { + sources += [ + "../../../OpenThread/DnssdImpl.cpp", + "../../../OpenThread/OpenThreadDnssdImpl.cpp", + "../../../OpenThread/OpenThreadDnssdImpl.h", + ] + } + deps += [ "${chip_root}/src/lib/dnssd:platform_header" ] + } + } + + if (chip_with_factory_data == 1) { + sources += [ + "../../common/factory_data/FactoryDataProvider.cpp", + "../../common/factory_data/FactoryDataProvider.h", + "../../common/factory_data/FactoryDataProviderFwkImpl.cpp", + "../../common/factory_data/FactoryDataProviderFwkImpl.h", + ] + + deps += [ "${chip_root}/src/credentials:credentials_header" ] + } + + deps += [ "${nxp_sdk_build_root}:nxp_sdk" ] + + public_deps += [ + "${chip_root}/examples/platform/nxp/common/app/support:freertos_memory_utils", + "${chip_root}/src/crypto", + "${chip_root}/src/platform:syscalls_stub", + ] + public_configs = [ ":nxp_platform_config" ] +} diff --git a/src/platform/nxp/rt/rt1170/BlePlatformConfig.h b/src/platform/nxp/rt/rt1170/BlePlatformConfig.h new file mode 100644 index 00000000000000..bd4d80390bb244 --- /dev/null +++ b/src/platform/nxp/rt/rt1170/BlePlatformConfig.h @@ -0,0 +1,36 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Platform-specific configuration overrides for the CHIP BLE + * Layer on RT1170 platforms using the NXP SDK. + * + */ + +#pragma once + +// ==================== Platform Adaptations ==================== + +/* Default NXP Platform adaptations are used */ + +// ========== Platform-specific Configuration Overrides ========= + +/* Default NXP Platform configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/ble_zephyr/BleNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1170/CHIPDevicePlatformConfig.h b/src/platform/nxp/rt/rt1170/CHIPDevicePlatformConfig.h new file mode 100644 index 00000000000000..cfb589209e9de2 --- /dev/null +++ b/src/platform/nxp/rt/rt1170/CHIPDevicePlatformConfig.h @@ -0,0 +1,42 @@ +/* + * + * Copyright (c) 2020-2022 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + * Platform-specific configuration overrides for the chip Device Layer + * on RT1170 platforms using the NXP SDK. + */ + +#pragma once + +// ==================== Platform Adaptations ==================== + +/* Default NXP Platform adaptations are used */ + +// ========== Platform-specific Configuration ========= + +// These are configuration options that are unique to the NXP platform. +// These can be overridden by the application as needed. + +// ========== Platform-specific Configuration Overrides ========= + +/* Default NXP Platform configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/CHIPDeviceNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1170/CHIPPlatformConfig.h b/src/platform/nxp/rt/rt1170/CHIPPlatformConfig.h new file mode 100644 index 00000000000000..6485baca53edb9 --- /dev/null +++ b/src/platform/nxp/rt/rt1170/CHIPPlatformConfig.h @@ -0,0 +1,54 @@ +/* + * + * Copyright (c) 2020-2022 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + * Platform-specific configuration overrides for CHIP on + * NXP RT1060 platforms. + */ + +#pragma once + +#include + +// ==================== General Platform Adaptations ==================== + +/* Default NXP platform adaptations are used */ + +// ==================== Security Adaptations ==================== + +/* Default NXP Platform security adaptations are used */ + +// ==================== General Configuration Overrides ==================== + +/* Default NXP Platform general configuration overrides are used */ + +/* For now on RT1170, due to the current file system implementation only 5 fabrics are supported */ +#define CHIP_CONFIG_MAX_FABRICS 5 + +// ==================== Security Configuration Overrides ==================== + +/* Default NXP Platform security configuration overrides are used */ + +// ==================== WDM Configuration Overrides ==================== + +/* Default NXP Platform WDM Configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/CHIPNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1170/InetPlatformConfig.h b/src/platform/nxp/rt/rt1170/InetPlatformConfig.h new file mode 100644 index 00000000000000..dee850a5596139 --- /dev/null +++ b/src/platform/nxp/rt/rt1170/InetPlatformConfig.h @@ -0,0 +1,40 @@ +/* + * + * Copyright (c) 2020-2022 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + * Platform-specific configuration overrides for the CHIP Inet + * Layer on RT1170 platforms using the NXP SDK. + * + */ + +#pragma once + +#include + +// ==================== Platform Adaptations ==================== + +/* Default NXP Platform adaptations are used */ + +// ========== Platform-specific Configuration Overrides ========= + +/* Default NXP Platform configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/InetNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1170/PlatformManagerImpl.cpp b/src/platform/nxp/rt/rt1170/PlatformManagerImpl.cpp new file mode 100644 index 00000000000000..24212cee4ccf7f --- /dev/null +++ b/src/platform/nxp/rt/rt1170/PlatformManagerImpl.cpp @@ -0,0 +1,474 @@ +/* + * + * Copyright (c) 2020-2024 Project CHIP Authors + * Copyright (c) 2020 Nest Labs, Inc. + * Copyright 2023-2024 NXP + * 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 + * Provides an implementation of the PlatformManager object + * for RT1170 platforms using the NXP RT1170 SDK. + */ +/* this file behaves like a config.h, comes first */ +#include + +#include "DiagnosticDataProviderImpl.h" +#include "fsl_os_abstraction.h" +#include "fwk_platform_coex.h" +#include "ksdk_mbedtls.h" +#include +#include +#include +#include +#include + +#include + +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR +#include "OtaSupport.h" +#endif + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD +#include "ot_platform_common.h" +#include +#if CHIP_DEVICE_CONFIG_CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED +#include "lib/spinel/spinel.h" +#define OT_NXP_SPINEL_PROP_VENDOR_BLE_STATE SPINEL_PROP_VENDOR__BEGIN +#endif /* CHIP_DEVICE_CONFIG_CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED */ +#endif + +#if !CHIP_DEVICE_CONFIG_ENABLE_THREAD && !CHIP_DEVICE_CONFIG_ENABLE_WPA + +#include "board.h" +#include "clock_config.h" +#include "fsl_phy.h" +#include "pin_mux.h" + +#include "fsl_enet_mdio.h" +#include "fsl_phyksz8081.h" + +#include "enet_ethernetif.h" +#include "fsl_debug_console.h" +#include "lwip/netif.h" +#include "lwip/netifapi.h" +#include "lwip/opt.h" +#include "lwip/tcpip.h" +#include "netif/ethernet.h" + +//----LWIP defines----// +/* MAC address configuration. */ +#define configMAC_ADDR \ + { \ + 0x02, 0x12, 0x13, 0x10, 0x15, 0x11 \ + } + +/* Address of PHY interface. */ +#define EXAMPLE_PHY_ADDRESS BOARD_ENET0_PHY_ADDRESS + +/* MDIO operations. */ +#define EXAMPLE_MDIO_OPS enet_ops + +/* PHY operations. */ +#define EXAMPLE_PHY_OPS phyksz8081_ops + +/* ENET clock frequency. */ +#define EXAMPLE_CLOCK_FREQ CLOCK_GetFreq(kCLOCK_IpgClk) + +#ifndef EXAMPLE_NETIF_INIT_FN +/*! @brief Network interface initialization function. */ +#define EXAMPLE_NETIF_INIT_FN ethernetif0_init +#endif /* EXAMPLE_NETIF_INIT_FN */ + +/*! @brief Stack size of the temporary lwIP initialization thread. */ +#define INIT_THREAD_STACKSIZE 1024 + +/*! @brief Priority of the temporary lwIP initialization thread. */ +#define INIT_THREAD_PRIO DEFAULT_THREAD_PRIO + +static mdio_handle_t mdioHandle = { .ops = &EXAMPLE_MDIO_OPS }; +static phy_handle_t phyHandle = { .phyAddr = EXAMPLE_PHY_ADDRESS, .mdioHandle = &mdioHandle, .ops = &EXAMPLE_PHY_OPS }; + +#endif + +extern "C" void BOARD_InitHardware(void); +extern "C" void otPlatSetResetFunction(void (*fp)(void)); +extern "C" void initiateResetInIdle(void); + +#include "fwk_platform_ot.h" + +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + +#include "fsl_adapter_gpio.h" +#include "fsl_os_abstraction.h" + +extern "C" { +#include "wlan.h" +#include "wm_net.h" +} + +#endif /* CHIP_DEVICE_CONFIG_ENABLE_WPA */ + +extern "C" void vApplicationMallocFailedHook(void) +{ + ChipLogError(DeviceLayer, "Malloc Failure"); +} + +#if WIFI_PTA_ENABLED && (CHIP_DEVICE_CONFIG_ENABLE_WPA && CHIP_ENABLE_OPENTHREAD) +#ifdef SD8801 +#define HOSTCMD_RESP_BUFF_SIZE 1024 +/* 8801 command buffer to enable External Coexistence. + * Source: SDK 2.11.1, wifi_cli demo, wlan_tests.c file. */ +const uint8_t ext_coex_8801_cmd_buf[] = { 0xe0, 0, 0x1d, 0, 0x17, 0, 0, 0, 0x01, 0, 0, 0, 0x2f, 0x02, 0x0d, + 0x00, 0x01, 0, 0, 0x03, 0x01, 0x02, 0x01, 0x01, 0x00, 0x28, 0x00, 0x3c, 0x00 }; +#endif + +static CHIP_ERROR EnableWiFiCoexistence(void) +{ + CHIP_ERROR ret = CHIP_NO_ERROR; + +#ifdef SD8801 + int status = WM_FAIL; + uint8_t * rspBuff = NULL; + uint32_t reqd_len = 0; + + rspBuff = (uint8_t *) pvPortMalloc(HOSTCMD_RESP_BUFF_SIZE); + if (rspBuff != NULL) + { + status = wlan_send_hostcmd((void *) ext_coex_8801_cmd_buf, sizeof(ext_coex_8801_cmd_buf) / sizeof(u8_t), rspBuff, + HOSTCMD_RESP_BUFF_SIZE, &reqd_len); + + if (status == WM_SUCCESS) + { + ChipLogProgress(DeviceLayer, "8801 Coexistence enabled"); + } + else + { + ChipLogError(DeviceLayer, "8801 Coexistence enabling failed = %d", status); + ret = CHIP_ERROR_INTERNAL; + } + + vPortFree(rspBuff); + } + else + { + ChipLogError(DeviceLayer, "Failed to allocate memory for Wi-Fi coexistence response buffer"); + } +#else + ChipLogError(DeviceLayer, "This chip does not support Wi-Fi and OpenThread coexistence"); + ret = CHIP_ERROR_INTERNAL; +#endif + + return ret; +} +#endif + +#if !CHIP_DEVICE_CONFIG_ENABLE_WPA +extern "C" void vApplicationIdleHook(void) +{ + chip::DeviceLayer::PlatformManagerImpl::IdleHook(); +} +#endif + +extern "C" void __wrap_exit(int __status) +{ + ChipLogError(DeviceLayer, "======> error exit function !!!"); + assert(0); +} + +namespace chip { +namespace DeviceLayer { + +PlatformManagerImpl PlatformManagerImpl::sInstance; + +void PlatformManagerImpl::HardwareInit(void) +{ + BOARD_InitHardware(); + SysTick_Config(SystemCoreClock / configTICK_RATE_HZ); +} + +CHIP_ERROR PlatformManagerImpl::ServiceInit(void) +{ + status_t status; + CHIP_ERROR chipRes = CHIP_NO_ERROR; + + status = CRYPTO_InitHardware(); + + if (status != 0) + { + chipRes = CHIP_ERROR_INTERNAL; + ChipLogError(DeviceLayer, "Crypto hardware init error"); + } + + return chipRes; +} + +#if !CHIP_DEVICE_CONFIG_ENABLE_THREAD && !CHIP_DEVICE_CONFIG_ENABLE_WPA +CHIP_ERROR PlatformManagerImpl::EthernetInterfaceInit() +{ + + static struct netif netif; + ethernetif_config_t enet_config = { + .phyHandle = &phyHandle, + .macAddress = configMAC_ADDR, + }; + + mdioHandle.resource.csrClock_Hz = EXAMPLE_CLOCK_FREQ; + + netifapi_netif_add(&netif, &enet_config, EXAMPLE_NETIF_INIT_FN, tcpip_input); + + netifapi_netif_set_default(&netif); + netifapi_netif_set_up(netif_default); + LOCK_TCPIP_CORE(); + netif_create_ip6_linklocal_address(netif_default, 1); + UNLOCK_TCPIP_CORE(); + + vTaskDelay(pdMS_TO_TICKS(1500)); + + for (uint8_t i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) + { + const char * str_ip = "-"; + if (ip6_addr_isvalid(netif_ip6_addr_state(netif_default, i))) + { + str_ip = ip6addr_ntoa(netif_ip6_addr(netif_default, i)); + } + PRINTF(" IPv6 Address%d : %s\r\n", i, str_ip); + } + PRINTF("************************************************\r\n"); + + if (netif_is_up(&netif)) + { + return CHIP_NO_ERROR; + } + + return CHIP_ERROR_NOT_CONNECTED; +} +#endif + +CHIP_ERROR PlatformManagerImpl::_InitChipStack(void) +{ +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + hal_gpio_status_t status_gpio; + hal_gpio_pin_config_t resetPinConfig = { + .direction = kHAL_GpioDirectionOut, + .level = 0U, + .port = 3, + .pin = 9, + }; + + GPIO_HANDLE_DEFINE(otGpioResetHandle); + +#endif /* CHIP_DEVICE_CONFIG_ENABLE_WPA */ + + CHIP_ERROR err = CHIP_ERROR_INTERNAL; + int osError; + + /* Initialize platform services */ + err = ServiceInit(); + SuccessOrExit(err); + + // Initialize the configuration system. + err = Internal::NXPConfig::Init(); + SuccessOrExit(err); + + SetConfigurationMgr(&ConfigurationManagerImpl::GetDefaultInstance()); + SetDiagnosticDataProvider(&DiagnosticDataProviderImpl::GetDefaultInstance()); + +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + /* Initialize LwIP via Wi-Fi layer. */ + net_ipv4stack_init(); +#else + /* Initialize LwIP directly. */ + tcpip_init(NULL, NULL); +#endif + + /* Init the controller by giving as an arg the connectivity supported */ + PLATFORM_InitControllers(connBle_c +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + | conn802_15_4_c +#endif +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + | connWlan_c +#endif + ); +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + PLATFORM_InitOt(); + /* + * Initialize the RCP here: the WiFi initialization requires to enable/disable + * coexistence through the Spinel interface; as such, the otPlatRadioInit() call + * will fail if done afterwards + */ + otPlatLogInit(); + otPlatRadioInit(); + otPlatSetResetFunction(initiateResetInIdle); + otPlatRandomInit(); +#endif + +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + + osError = OSA_SetupIdleFunction(chip::DeviceLayer::PlatformManagerImpl::IdleHook); + if (osError != WM_SUCCESS) + { + ChipLogError(DeviceLayer, "Failed to setup idle function"); + err = CHIP_ERROR_NO_MEMORY; + goto exit; + } + + ChipLogProgress(DeviceLayer, "Wi-Fi module initialization done."); +#elif !CHIP_DEVICE_CONFIG_ENABLE_THREAD + err = EthernetInterfaceInit(); + + if (err != CHIP_NO_ERROR) + { + ChipLogProgress(DeviceLayer, + "LWIP interface initialization failed. Make sure there is internet conectivity on the board and reset!"); + chipDie(); + } + ChipLogProgress(DeviceLayer, "LWIP interface initialization done"); +#endif + + // Call _InitChipStack() on the generic implementation base class + // to finish the initialization process. + err = Internal::GenericPlatformManagerImpl_FreeRTOS::_InitChipStack(); + SuccessOrExit(err); + + err = System::Clock::InitClock_RealTime(); + SuccessOrExit(err); + + mStartTime = System::SystemClock().GetMonotonicTimestamp(); + +exit: + return err; +} + +void PlatformManagerImpl::SaveSettings(void) +{ +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + otPlatSaveSettingsIdle(); +#endif +} + +void PlatformManagerImpl::IdleHook(void) +{ + bool isResetScheduled = PlatformMgrImpl().GetResetInIdleValue(); + if (isResetScheduled) + { + /* + * In case a reset in IDLE has been scheduled + * Disable IRQs so that the idle task won't be preempted until the reset + */ + OSA_InterruptDisable(); + } + + chip::DeviceLayer::Internal::NXPConfig::RunSystemIdleTask(); + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + SaveSettings(); +#endif + +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + /* Resume OTA Transactions in Idle task */ + OTA_TransactionResume(); +#endif + + /* + * In case a reset in idle operation has been posted, + * reset the device after having run the idle function + */ + if (isResetScheduled) + { + PlatformMgrImpl().Reset(); + } +} + +void PlatformManagerImpl::Reset(void) +{ + ChipLogProgress(DeviceLayer, "System restarting"); + // Restart the system. + NVIC_SystemReset(); + while (1) + { + } +} + +void PlatformManagerImpl::ScheduleResetInIdle(void) +{ + resetInIdle = true; +} + +bool PlatformManagerImpl::GetResetInIdleValue(void) +{ + return resetInIdle; +} + +extern "C" void initiateResetInIdle(void) +{ + PlatformMgr().Shutdown(); + PlatformMgrImpl().ScheduleResetInIdle(); +} + +extern "C" void scheduleResetInIdle(void) +{ + PlatformMgrImpl().ScheduleResetInIdle(); +} + +extern "C" bool getResetInIdleValue(void) +{ + return PlatformMgrImpl().GetResetInIdleValue(); +} + +void PlatformManagerImpl::StopBLEConnectivity(void) +{ +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + otPlatRadioSendSetPropVendorUint8Cmd(OT_NXP_SPINEL_PROP_VENDOR_BLE_STATE, 0); +#endif /* CHIP_DEVICE_CONFIG_ENABLE_THREAD */ +} + +void PlatformManagerImpl::_Shutdown() +{ + uint64_t upTime = 0; + + if (GetDiagnosticDataProvider().GetUpTime(upTime) == CHIP_NO_ERROR) + { + uint32_t totalOperationalHours = 0; + + if (ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours) == CHIP_NO_ERROR) + { + ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + static_cast(upTime / 3600)); + } + else + { + ChipLogError(DeviceLayer, "Failed to get total operational hours of the Node"); + } + } + else + { + ChipLogError(DeviceLayer, "Failed to get current uptime since the Node’s last reboot"); + } + + /* Handle the server shutting down & emit the ShutDown event*/ + PlatformMgr().HandleServerShuttingDown(); + /* Shutdown all layers */ + Internal::GenericPlatformManagerImpl_FreeRTOS::_Shutdown(); +} + +} // namespace DeviceLayer +} // namespace chip + +extern "C" void mt_wipe(void) +{ + chip::DeviceLayer::Internal::NXPConfig::FactoryResetConfig(); +} diff --git a/src/platform/nxp/rt/rt1170/SystemPlatformConfig.h b/src/platform/nxp/rt/rt1170/SystemPlatformConfig.h new file mode 100644 index 00000000000000..3838fc869baeb3 --- /dev/null +++ b/src/platform/nxp/rt/rt1170/SystemPlatformConfig.h @@ -0,0 +1,40 @@ +/* + * + * Copyright (c) 2020-2022 Project CHIP Authors + * Copyright (c) 2020 Google LLC. + * 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 + * Platform-specific configuration overrides for the CHIP System + * Layer on NXP RT1170 Platforms. + * + */ + +#pragma once + +#include + +// ==================== Platform Adaptations ==================== + +/* Default NXP Platform adaptations are used */ + +// ========== Platform-specific Configuration Overrides ========= + +/* Default NXP Platform configuration overrides are used */ + +// Include default nxp platform configurations +#include "platform/nxp/common/SystemNXPPlatformDefaultConfig.h" diff --git a/src/platform/nxp/rt/rt1170/args.gni b/src/platform/nxp/rt/rt1170/args.gni new file mode 100644 index 00000000000000..aaadc3081a5b4a --- /dev/null +++ b/src/platform/nxp/rt/rt1170/args.gni @@ -0,0 +1,62 @@ +# 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("//build_overrides/nxp_sdk.gni") + +rt_platform = "rt1170" +nxp_platform = "rt/${rt_platform}" +nxp_sdk_name = "rt_sdk" +chip_device_platform = "nxp" +lwip_platform = "nxp" + +# ARM architecture flags will be set based on NXP board. +arm_platform_config = "${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_arm.gni" + +chip_device_project_config_include = "" +chip_project_config_include = "" +chip_inet_project_config_include = "" +chip_system_project_config_include = "" +chip_ble_project_config_include = "" + +chip_build_tests = false + +#This enables the EventList global attribute +enable_eventlist_attribute = true + +# TODO : Enable the OTA Requestor by default. +# This requires the mcuboot bootloader to be used, which reserves the first 256 kB of the flash. +# If mcuboot is not used, "no_mcuboot" must be set to true in the gn gen build command +# in order for the application to be linked at the base of the flash. +#chip_enable_ota_requestor = true +declare_args() { + # TODO : set no_mcuboot to false by default when enabling ota requestor by default + no_mcuboot = true + + chip_enable_secondary_nwk_if = false +} + +# As a temporary workaround, we are disabling the session resumption because currently +# the mbedtls port does not support this. +# If not disabled, reconnecting to the OTA Provider node will fail. +chip_enable_session_resumption = false + +mbedtls_target = "${nxp_sdk_build_root}:nxp_mbedtls" + +openthread_external_mbedtls = mbedtls_target +openthread_project_core_config_file = "OpenThreadConfig.h" +openthread_core_config_deps = [ "${chip_root}/third_party/openthread/platforms/nxp/${nxp_platform}:openthread_core_config_rt1170" ] +openthread_core_config_platform_check_file = + "openthread-core-rt1170-config-check.h" +openthread_external_platform = "${chip_root}/third_party/openthread/platforms/nxp/${nxp_platform}:libopenthread-rt1170" diff --git a/src/platform/nxp/rt/rw61x/BUILD.gn b/src/platform/nxp/rt/rw61x/BUILD.gn index e80dd3cbd823f4..7ac204e92c55e9 100644 --- a/src/platform/nxp/rt/rw61x/BUILD.gn +++ b/src/platform/nxp/rt/rw61x/BUILD.gn @@ -179,7 +179,6 @@ static_library("nxp_platform") { if (chip_mdns == "platform") { if (chip_enable_wifi) { sources += [ - "../../../OpenThread/DnssdImpl.cpp", "../../../OpenThread/OpenThreadDnssdImpl.cpp", "../../../OpenThread/OpenThreadDnssdImpl.h", "../../common/DnssdImpl.cpp", diff --git a/src/python_testing/TC_CADMIN_1_11.py b/src/python_testing/TC_CADMIN_1_11.py new file mode 100644 index 00000000000000..cefd8b44a785f4 --- /dev/null +++ b/src/python_testing/TC_CADMIN_1_11.py @@ -0,0 +1,222 @@ +# +# Copyright (c) 2024 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. +# +# === BEGIN CI TEST ARGUMENTS === +# test-runner-runs: +# run1: +# app: ${ALL_CLUSTERS_APP} +# app-args: --discriminator 1234 --KVS kvs1 --trace-to json:${TRACE_APP}.json +# script-args: > +# --storage-path admin_storage.json +# --commissioning-method on-network +# --discriminator 1234 +# --passcode 20202021 +# --trace-to json:${TRACE_TEST_JSON}.json +# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto +# --PICS src/app/tests/suites/certification/ci-pics-values +# factory-reset: true +# quiet: false +# === END CI TEST ARGUMENTS === + + +import logging +import random +from time import sleep +from typing import Optional + +import chip.clusters as Clusters +from chip import ChipDeviceCtrl +from chip.ChipDeviceCtrl import CommissioningParameters +from chip.exceptions import ChipStackError +from chip.native import PyChipError +from matter_testing_infrastructure.chip.testing.matter_testing import (MatterBaseTest, TestStep, async_test_body, + default_matter_test_main) +from mobly import asserts + + +class TC_CADMIN_1_11(MatterBaseTest): + async def OpenCommissioningWindow(self, th, expectedErrCode) -> CommissioningParameters: + if expectedErrCode is None: + params = await th.OpenCommissioningWindow( + nodeid=self.dut_node_id, timeout=self.timeout, iteration=10000, discriminator=self.discriminator, option=1) + return params + + else: + ctx = asserts.assert_raises(ChipStackError) + with ctx: + await th.OpenCommissioningWindow( + nodeid=self.dut_node_id, timeout=self.timeout, iteration=10000, discriminator=self.discriminator, option=1) + errcode = PyChipError.from_code(ctx.exception.err) + logging.info('Commissioning complete done. Successful? {}, errorcode = {}'.format(errcode.is_success, errcode)) + asserts.assert_false(errcode.is_success, 'Commissioning complete did not error as expected') + asserts.assert_true(errcode.sdk_code == expectedErrCode, + 'Unexpected error code returned from CommissioningComplete') + + async def OpenBasicCommissioningWindow(self, th: ChipDeviceCtrl, expectedErrCode: Optional[Clusters.AdministratorCommissioning.Enums.StatusCode] = None) -> CommissioningParameters: + if not expectedErrCode: + params = await th.OpenBasicCommissioningWindow( + nodeid=self.dut_node_id, timeout=self.timeout) + return params + + else: + ctx = asserts.assert_raises(ChipStackError) + with ctx: + await th.OpenBasicCommissioningWindow( + nodeid=self.dut_node_id, timeout=self.timeout) + errcode = ctx.exception.chip_error + logging.info('Commissioning complete done. Successful? {}, errorcode = {}'.format(errcode.is_success, errcode)) + asserts.assert_false(errcode.is_success, 'Commissioning complete did not error as expected') + asserts.assert_true(errcode.sdk_code == expectedErrCode, + 'Unexpected error code returned from CommissioningComplete') + + async def read_currentfabricindex(self, th: ChipDeviceCtrl) -> int: + cluster = Clusters.OperationalCredentials + attribute = Clusters.OperationalCredentials.Attributes.CurrentFabricIndex + current_fabric_index = await self.read_single_attribute_check_success(dev_ctrl=th, endpoint=0, cluster=cluster, attribute=attribute) + return current_fabric_index + + def steps_TC_CADMIN_1_11(self) -> list[TestStep]: + return [ + TestStep(1, "Commissioning, already done", is_commissioning=True), + TestStep( + 2, "TH_CR1 gets the MaxCumulativeFailsafeSeconds value from BasicCommissioningInfo attribute in GeneralCommissioning Cluster", "Should set the MaxCumulativeFailsafeSeconds value from BasicCommissioningInfo attribute to timeout"), + TestStep( + 3, "TH_CR1 opens commissioning window on DUT with duration set to value for MaxCumulativeFailsafeSeconds", "Commissioning window should open with timeout set to MaxCumulativeFailsafeSeconds"), + TestStep(4, "TH_CR2 fully commissions the DUT", "DUT should fully commission"), + TestStep( + 5, "TH_CR1 opens commissioning window on DUT with duration set to value from BasicCommissioningInfo", "New commissioning window should open and be set to timeout"), + TestStep(6, "TH_CR1 sends an OpenCommissioningWindow command to the DUT and attempts to open another commissioning window", + "Commissioning window should fail to be opened due to being busy"), + TestStep(7, "TH_CR2 sends an OpenCommissioningWindow command to the DUT and attempts to open another commissioning window", + "Commissioning window should fail to be opened due to being busy"), + TestStep(8, "TH_CR1 sends an RevokeCommissioning command to the DUT", "Commissioning window should be closed"), + TestStep(9, "TH_CR1 reads the FeatureMap from the Administrator Commissioning Cluster to check to see if BC is supported on DUT", + "FeatureMap should be checked to see if BC enum is available feature, if not then test steps 9a-9d will be skipped"), + TestStep("9a", "TH_CR1 opens commissioning window on DUT with duration set to value from BasicCommissioningInfo", + "Opens basic commissioning window on the DUT for timeout set to value of MaxCumulativeFailsafeSeconds"), + TestStep("9b", "TH_CR1 sends an OpenBasicCommissioningWindow command to the DUT and attempts to open another commissioning window", + "Commissioning window should fail to be opened due to being busy"), + TestStep("9c", "TH_CR2 sends an OpenBasicCommissioningWindow command to the DUT and attempts to open another commissioning window", + "Commissioning window should fail to be opened due to being busy"), + TestStep("9d", "TH_CR1 sends a RevokeCommissioning command to the DUT", "Commissioning window should be closed"), + TestStep(10, "TH_CR2 reads the CurrentFabricIndex attribute from the Operational Credentials cluster and saves as th2_idx", + "th2_idx set to value for CurrentFabricIndex attribute from TH_CR2"), + TestStep(11, "TH_CR1 sends the RemoveFabric command to the DUT with the FabricIndex set to th2_idx", + "TH_CR1 removes TH_CR2 fabric using th2_idx"), + ] + + async def CommissionAttempt( + self, setupPinCode: int): + + logging.info("-----------------Commissioning with TH_CR2-------------------------") + await self.th2.CommissionOnNetwork( + nodeId=self.dut_node_id, setupPinCode=setupPinCode, + filterType=ChipDeviceCtrl.DiscoveryFilterType.LONG_DISCRIMINATOR, filter=self.discriminator) + + def pics_TC_CADMIN_1_11(self) -> list[str]: + return ["CADMIN.S"] + + @async_test_body + async def test_TC_CADMIN_1_11(self): + self.step(1) + + # Establishing TH1 and TH2 controllers + self.th1 = self.default_controller + self.discriminator = random.randint(0, 4095) + th2_certificate_authority = self.certificate_authority_manager.NewCertificateAuthority() + th2_fabric_admin = th2_certificate_authority.NewFabricAdmin(vendorId=0xFFF1, fabricId=self.th1.fabricId + 1) + self.th2 = th2_fabric_admin.NewController(nodeId=2) + + self.step(2) + GC_cluster = Clusters.GeneralCommissioning + attribute = GC_cluster.Attributes.BasicCommissioningInfo + duration = await self.read_single_attribute_check_success(endpoint=0, cluster=GC_cluster, attribute=attribute) + self.timeout = duration.maxCumulativeFailsafeSeconds + + self.step(3) + params = await self.OpenCommissioningWindow(self.th1, None) + setupPinCode = params.setupPinCode + busy_enum = Clusters.AdministratorCommissioning.Enums.StatusCode.kBusy + + self.step(4) + await self.CommissionAttempt(setupPinCode) + + self.step(5) + await self.OpenCommissioningWindow(self.th1, None) + + self.step(6) + await self.OpenCommissioningWindow(self.th1, busy_enum) + + self.step(7) + await self.OpenCommissioningWindow(self.th2, busy_enum) + + self.step(8) + revokeCmd = Clusters.AdministratorCommissioning.Commands.RevokeCommissioning() + await self.th1.SendCommand(nodeid=self.dut_node_id, endpoint=0, payload=revokeCmd, timedRequestTimeoutMs=6000) + # The failsafe cleanup is scheduled after the command completes, so give it a bit of time to do that + sleep(1) + + self.step(9) + + AC_cluster = Clusters.AdministratorCommissioning + fm_attribute = Clusters.AdministratorCommissioning.Attributes + features = await self.read_single_attribute_check_success(cluster=AC_cluster, attribute=fm_attribute.FeatureMap) + + self.supports_bc = bool(features & AC_cluster.Bitmaps.Feature.kBasic) != 0 + + if self.supports_bc: + self.count = 0 + self.step("9a") + obcCmd = Clusters.AdministratorCommissioning.Commands.OpenBasicCommissioningWindow(180) + await self.th1.SendCommand(nodeid=self.dut_node_id, endpoint=0, payload=obcCmd, timedRequestTimeoutMs=6000) + + self.step("9b") + try: + await self.th1.SendCommand(nodeid=self.dut_node_id, endpoint=0, payload=obcCmd, timedRequestTimeoutMs=6000) + except Exception as e: + asserts.assert_true(e.clusterStatus == busy_enum, + 'Unexpected error code returned from CommissioningComplete') + + self.step("9c") + try: + await self.th2.SendCommand(nodeid=self.dut_node_id, endpoint=0, payload=obcCmd, timedRequestTimeoutMs=6000) + except Exception as e: + asserts.assert_true(e.clusterStatus == busy_enum, + 'Unexpected error code returned from CommissioningComplete') + + self.step("9d") + revokeCmd = Clusters.AdministratorCommissioning.Commands.RevokeCommissioning() + await self.th1.SendCommand(nodeid=self.dut_node_id, endpoint=0, payload=revokeCmd, timedRequestTimeoutMs=6000) + # The failsafe cleanup is scheduled after the command completes, so give it a bit of time to do that + sleep(1) + + else: + self.skip_step("9a") + self.skip_step("9b") + self.skip_step("9c") + self.skip_step("9d") + + # Read CurrentFabricIndex attribute from the Operational Credentials cluster + self.step(10) + th2_idx = await self.read_currentfabricindex(self.th2) + + self.step(11) + removeFabricCmd = Clusters.OperationalCredentials.Commands.RemoveFabric(th2_idx) + await self.th1.SendCommand(nodeid=self.dut_node_id, endpoint=0, payload=removeFabricCmd) + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/src/python_testing/matter_testing_infrastructure/chip/testing/matter_testing.py b/src/python_testing/matter_testing_infrastructure/chip/testing/matter_testing.py index 2d23a9f84b0192..b16d1b42a08b45 100644 --- a/src/python_testing/matter_testing_infrastructure/chip/testing/matter_testing.py +++ b/src/python_testing/matter_testing_infrastructure/chip/testing/matter_testing.py @@ -1429,8 +1429,7 @@ def mark_current_step_skipped(self): # TODO: I very much do not want to have people passing in strings here. Do we really need the expression # as a string? Does it get used by the TH? self.runner_hook.step_skipped(name=str(num), expression="") - else: - logging.info(f'**** Skipping: {num}') + logging.info(f'**** Skipping: {num}') self.step_skipped = True def skip_step(self, step): @@ -1465,6 +1464,8 @@ def step(self, step: typing.Union[int, str], endpoint: Optional[int] = None): asserts.fail(f'Unexpected test step: {step} - steps not called in order, or step does not exist') current_step = steps[self.current_step_index] + self.print_step(step, current_step.description, endpoint) + if self.runner_hook: # If we've reached the next step with no assertion and the step wasn't skipped, it passed if not self.step_skipped and self.current_step_index != 0: @@ -1477,11 +1478,7 @@ def step(self, step: typing.Union[int, str], endpoint: Optional[int] = None): # TODO: it seems like the step start should take a number and a name name = f'{step} : {current_step.description}' - self.print_step(step, current_step.description, endpoint) self.runner_hook.step_start(name=name, endpoint=current_step.endpoint) - else: - self.print_step(step, current_step.description) - self.step_start_time = datetime.now(tz=timezone.utc) self.current_step_index += 1 self.step_skipped = False diff --git a/third_party/openthread/platforms/nxp/rt/rt1060/BUILD.gn b/third_party/openthread/platforms/nxp/rt/rt1060/BUILD.gn new file mode 100644 index 00000000000000..ef44f9048e2d25 --- /dev/null +++ b/third_party/openthread/platforms/nxp/rt/rt1060/BUILD.gn @@ -0,0 +1,150 @@ +# Copyright (c) 2020-2022 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("//build_overrides/mbedtls.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") + +#allows to get common NXP SDK gn options +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +# Allows to get various RT gn options +import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni") +openthread_nxp_root = "${chip_root}/third_party/openthread/ot-nxp" + +config("openthread_rt1060_config") { + defines = [] + include_dirs = [ + "${openthread_nxp_root}/src/common", + "${openthread_nxp_root}/src/common/br", + "${openthread_nxp_root}/src/common/spinel", + "${openthread_nxp_root}/src/imx_rt/rt1060", + "${openthread_nxp_root}/third_party/mbedtls/configs", + "${openthread_root}/third_party/mbedtls", + "${openthread_root}/examples/platforms", + "${openthread_nxp_root}/examples/utils/cli_addons", + "${openthread_nxp_root}/examples/utils/cli_addons/ephemeral_key", + "${openthread_nxp_root}/examples/utils/cli_addons/lwip", + ] + + if (chip_enable_wifi && chip_enable_openthread) { + defines += [ + "OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE=1", + "OPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1", + "OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE=1", + "OPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE=1", + "OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE=1", + "OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS=3", + "OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE=1", + "OPENTHREAD_CONFIG_BORDER_AGENT_ID_ENABLE=1", + "OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE=1", + "OPENTHREAD_CONFIG_SRP_SERVER_ADVERTISING_PROXY_ENABLE=1", + "OPENTHREAD_CONFIG_DNSSD_DISCOVERY_PROXY_ENABLE=1", + "OPENTHREAD_CONFIG_MULTICAST_DNS_ENABLE=1", + "OPENTHREAD_CONFIG_MULTICAST_DNS_PUBLIC_API_ENABLE=1", + "OT_APP_BR_LWIP_HOOKS_EN=1", + ] + + if (chip_enable_matter_cli) { + defines += [ + "OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE=1", + "OT_APP_CLI_EPHEMERAL_KEY_ADDON=1", + "OT_APP_CLI_LWIP_ADDON=1", + ] + } + } + + # ot cli configs + defines += [ "OPENTHREAD_CONFIG_PING_SENDER_ENABLE=1" ] +} + +#Config used by the openthread stack to get the path to OpenthreadConfig.h +source_set("openthread_core_config_rt1060") { + public_configs = [ ":openthread_rt1060_config" ] + public_deps = [ nxp_sdk_target ] +} + +source_set("libopenthread-rt1060") { + deps = [] + sources = [ + "${openthread_nxp_root}/src/common/alarm_freertos.c", + "${openthread_nxp_root}/src/common/diag.c", + "${openthread_nxp_root}/src/common/entropy.c", + "${openthread_nxp_root}/src/common/logging.c", + "${openthread_nxp_root}/src/common/spinel/misc.c", + "${openthread_nxp_root}/src/common/spinel/radio.cpp", + "${openthread_nxp_root}/src/common/spinel/spinel_hdlc.cpp", + "${openthread_nxp_root}/src/common/spinel/system.c", + "${openthread_root}/src/lib/hdlc/hdlc.cpp", + "${openthread_root}/src/lib/url/url.cpp", + ] + + if (chip_enable_wifi && chip_enable_openthread) { + sources += [ + "${openthread_nxp_root}/src/common/br/border_agent.c", + "${openthread_nxp_root}/src/common/br/br_rtos_manager.c", + "${openthread_nxp_root}/src/common/br/infra_if.c", + "${openthread_nxp_root}/src/common/br/lwip_hooks.c", + "${openthread_nxp_root}/src/common/br/lwip_mcast.c", + "${openthread_nxp_root}/src/common/br/mdns_socket.c", + "${openthread_nxp_root}/src/common/br/udp_plat.c", + "${openthread_nxp_root}/src/common/br/utils.c", + ] + + if (chip_enable_matter_cli) { + sources += [ + "${openthread_nxp_root}/examples/utils/cli_addons/addons_cli.c", + "${openthread_nxp_root}/examples/utils/cli_addons/ephemeral_key/ephemeral_key_cli.c", + "${openthread_nxp_root}/examples/utils/cli_addons/lwip/lwip_cli.c", + ] + } + + deps += [ "${nxp_sdk_build_root}:nxp_lwip" ] + } + + if (nxp_nvm_component == "nvm_fwk") { + sources += [ "${openthread_nxp_root}/src/common/flash_nvm.c" ] + } else { + sources += [ "${openthread_nxp_root}/src/common/flash_littlefs.c" ] + } + + defines = [ "OPENTHREAD_FTD" ] + + if (hci_spinel_single_uart) { + defines += [ "OT_PLAT_SPINEL_HCI_OVER_HDLC" ] + sources += + [ "${openthread_nxp_root}/src/common/spinel/spinel_hci_hdlc.cpp" ] + } else if (spinel_over_spi == true) { + defines += [ + "OT_PLAT_SPINEL_OVER_SPI", + "OT_PLATFORM_CONFIG_SPI_INSTANCE=4", + "OT_PLATFORM_CONFIG_SPI_INT_PORT=2", + "OT_PLATFORM_CONFIG_SPI_INT_PIN=4", + "LPSPI_MASTER_CLK_FREQ=CLOCK_GetClockRootFreq(kCLOCK_LpspiClkRoot)", + ] + sources += [ "${openthread_nxp_root}/src/common/spinel/spi_interface.cpp" ] + } else { + defines += [ "OT_PLAT_SPINEL_OVER_HDLC" ] + } + + public_configs = [ ":openthread_rt1060_config" ] + + deps += [ + "${nxp_sdk_build_root}:nxp_mbedtls", + "${openthread_root}:libopenthread-spinel-rcp", + "../../..:libopenthread-platform-utils", + nxp_sdk_target, + ] +} diff --git a/third_party/openthread/platforms/nxp/rt/rt1170/BUILD.gn b/third_party/openthread/platforms/nxp/rt/rt1170/BUILD.gn new file mode 100644 index 00000000000000..039c911e51fa60 --- /dev/null +++ b/third_party/openthread/platforms/nxp/rt/rt1170/BUILD.gn @@ -0,0 +1,142 @@ +# Copyright (c) 2020-2022 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("//build_overrides/mbedtls.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") + +#allows to get common NXP SDK gn options +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +# Allows to get various RT gn options +import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni") +openthread_nxp_root = "${chip_root}/third_party/openthread/ot-nxp" + +config("openthread_rt1170_config") { + include_dirs = [ + "${openthread_nxp_root}/src/common", + "${openthread_nxp_root}/src/common/br", + "${openthread_nxp_root}/src/imx_rt/rt1170", + "${openthread_nxp_root}/third_party/mbedtls/configs", + "${openthread_root}/third_party/mbedtls", + "${openthread_root}/examples/platforms", + "${openthread_nxp_root}/examples/utils/cli_addons", + "${openthread_nxp_root}/examples/utils/cli_addons/ephemeral_key", + "${openthread_nxp_root}/examples/utils/cli_addons/lwip", + ] + defines = [ "OT_PLAT_SPINEL_OVER_SPI" ] + + if (chip_enable_wifi && chip_enable_openthread) { + defines += [ + "OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE=1", + "OPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1", + "OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE=1", + "OPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE=1", + "OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE=1", + "OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS=3", + "OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE=1", + "OPENTHREAD_CONFIG_BORDER_AGENT_ID_ENABLE=1", + "OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE=1", + "OPENTHREAD_CONFIG_SRP_SERVER_ADVERTISING_PROXY_ENABLE=1", + "OPENTHREAD_CONFIG_DNSSD_DISCOVERY_PROXY_ENABLE=1", + "OPENTHREAD_CONFIG_MULTICAST_DNS_ENABLE=1", + "OPENTHREAD_CONFIG_MULTICAST_DNS_PUBLIC_API_ENABLE=1", + "OT_APP_BR_LWIP_HOOKS_EN=1", + ] + + if (chip_enable_matter_cli) { + defines += [ + "OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE=1", + "OT_APP_CLI_EPHEMERAL_KEY_ADDON=1", + "OT_APP_CLI_LWIP_ADDON=1", + ] + } + } + + # ot cli configs + defines += [ "OPENTHREAD_CONFIG_PING_SENDER_ENABLE=1" ] +} + +#Config used by the openthread stack to get the path to OpenthreadConfig.h +source_set("openthread_core_config_rt1170") { + public_configs = [ ":openthread_rt1170_config" ] + public_deps = [ nxp_sdk_target ] +} + +source_set("libopenthread-rt1170") { + deps = [] + sources = [ + "${openthread_nxp_root}/src/common/alarm_freertos.c", + "${openthread_nxp_root}/src/common/diag.c", + "${openthread_nxp_root}/src/common/entropy.c", + "${openthread_nxp_root}/src/common/logging.c", + "${openthread_nxp_root}/src/common/spinel/misc.c", + "${openthread_nxp_root}/src/common/spinel/radio.cpp", + "${openthread_nxp_root}/src/common/spinel/system.c", + "${openthread_root}/src/lib/hdlc/hdlc.cpp", + "${openthread_root}/src/lib/url/url.cpp", + ] + + if (chip_enable_wifi && chip_enable_openthread) { + sources += [ + "${openthread_nxp_root}/src/common/br/border_agent.c", + "${openthread_nxp_root}/src/common/br/br_rtos_manager.c", + "${openthread_nxp_root}/src/common/br/infra_if.c", + "${openthread_nxp_root}/src/common/br/lwip_hooks.c", + "${openthread_nxp_root}/src/common/br/lwip_mcast.c", + "${openthread_nxp_root}/src/common/br/mdns_socket.c", + "${openthread_nxp_root}/src/common/br/udp_plat.c", + "${openthread_nxp_root}/src/common/br/utils.c", + ] + + if (chip_enable_matter_cli) { + sources += [ + "${openthread_nxp_root}/examples/utils/cli_addons/addons_cli.c", + "${openthread_nxp_root}/examples/utils/cli_addons/ephemeral_key/ephemeral_key_cli.c", + "${openthread_nxp_root}/examples/utils/cli_addons/lwip/lwip_cli.c", + ] + } + + deps += [ "${nxp_sdk_build_root}:nxp_lwip" ] + } + + if (nxp_nvm_component == "nvm_fwk") { + sources += [ "${openthread_nxp_root}/src/common/flash_nvm.c" ] + } else { + sources += [ "${openthread_nxp_root}/src/common/flash_littlefs.c" ] + } + + defines = [ "OPENTHREAD_FTD" ] + + if (hci_spinel_single_uart) { + defines += [ "OT_PLAT_SPINEL_HCI_OVER_HDLC" ] + sources += [ + "${openthread_nxp_root}/src/common/spinel/spinel_hci_hdlc.cpp", + "${openthread_nxp_root}/src/common/spinel/spinel_hdlc.cpp", + ] + } else { + defines += [ "OT_PLAT_SPINEL_OVER_SPI" ] + sources += [ "${openthread_nxp_root}/src/common/spinel/spi_interface.cpp" ] + } + + public_configs = [ ":openthread_rt1170_config" ] + + deps += [ + "${nxp_sdk_build_root}:nxp_mbedtls", + "${openthread_root}:libopenthread-spinel-rcp", + "../../..:libopenthread-platform-utils", + nxp_sdk_target, + ] +} diff --git a/third_party/openthread/platforms/nxp/rt/rw61x/BUILD.gn b/third_party/openthread/platforms/nxp/rt/rw61x/BUILD.gn index 978c45f8a6da8d..6c00f94b3a077e 100644 --- a/third_party/openthread/platforms/nxp/rt/rw61x/BUILD.gn +++ b/third_party/openthread/platforms/nxp/rt/rw61x/BUILD.gn @@ -52,7 +52,6 @@ config("openthread_rw61x_config") { "OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE=1", "OPENTHREAD_CONFIG_BORDER_AGENT_ID_ENABLE=1", "OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE=1", - "OPENTHREAD_CONFIG_GENERIC_TASKLET_ENABLE=1", "OPENTHREAD_CONFIG_SRP_SERVER_ADVERTISING_PROXY_ENABLE=1", "OPENTHREAD_CONFIG_DNSSD_DISCOVERY_PROXY_ENABLE=1", "OPENTHREAD_CONFIG_MULTICAST_DNS_ENABLE=1",